public Matrix Calculate() { Matrix last = new Matrix(Vector.rows, 1); Matrix current = new Matrix(Vector.rows, 1); double value; int iterations = 0; do { iterations++; for (int i = 0; i < Matrix.rows; i++) { double sum = 0; sum += Vector.values[i, 0]; for (int j = 0; j < Matrix.cols; j++) { if (i != j) { sum -= Matrix.values[i, j] * last.values[j, 0]; } } current.values[i, 0] = sum / Matrix.values[i, i]; } value = (current - last).GetNorm(); last = DeepCopy.Copy(current); }while (value > 0.001); return(current); }
public Matrix EliminationPG(Matrix _matrix, Matrix _vector) { var result1 = DeepCopy.Copy(_matrix); var result2 = DeepCopy.Copy(_vector); for (int i = 0; i < result1.rows - 1; i++) { PartialPivot(result1, result2, i); ZeroColumn(result1, result2, i); } return(CalculateResult(result1, result2)); }
public Jacobi(Matrix matrix, Matrix vector) { Matrix = DeepCopy.Copy(matrix); Vector = DeepCopy.Copy(vector); }
public GaussSeidel(Matrix matrix, Matrix vector) { Matrix = DeepCopy.Copy(matrix); Vector = DeepCopy.Copy(vector); }