private void CalculateError() { if (Type.FullName.Equals("Projekt2.Fraction")) { Fraction result = new Fraction(0, 1); for (int i = 0; i < Size; i++) { OriginalVector[i, 0] = (T)(object)Fraction.Abs((Fraction)(object)OriginalVector[i, 0] - (Fraction)(object)CalculatedVector[i, 0]); if ((Fraction)(object)OriginalVector[i, 0] > (Fraction)(object)result) { result = (Fraction)(object)OriginalVector[i, 0]; } } Error = (T)(object)result; ErrorString = Error.ToString(); return; } else { for (int i = 0; i < Size; i++) { OriginalVector[i, 0] = (T)(object)Math.Abs((dynamic)(object)OriginalVector[i, 0] - (dynamic)(object)CalculatedVector[i, 0]); } Error = (T)(object)OriginalVector.Cast <dynamic>().Max(); } }
private double CalculateError(double[] solution) { double[,] originalMatrix = (double[, ])OriginalMatrix.Clone(); double[] originalVector = (double[])OriginalVector.Clone(); double[] vectorToCompare = new double[TotalCases]; double max = 0; double result = 0; for (int i = 0; i < TotalCases; i++) { for (int j = 0; j < TotalCases; j++) { result += originalMatrix[i, j] * solution[j]; } vectorToCompare[i] = result; } for (int i = 0; i < TotalCases; i++) { if (Math.Abs(originalVector[i] - vectorToCompare[i]) > max) { max = Math.Abs(originalVector[i] - vectorToCompare[i]); } } return(max); }