public static Vector Kramer(Matrix A, Vector b) { Vector X = new Vector(A.ColumnCount); Matrix temp = new Matrix(A.RowCount, 0); for (int i = 0; i < A.ColumnCount; i++) { temp = new Matrix(A.RowCount, 0); for (int j = 0; j < A.ColumnCount; j++) { if (j == i) { temp = temp.AddColumn(b); } else { temp = temp.AddColumn(A.Get_column(j)); } } X[i] = MathM.Determinant(temp) / MathM.Determinant(A); } return X; }
public Matrix Danilevsky_Vectors(Matrix val) { Matrix A = new Matrix(val); Danilevsky dan = new Danilevsky(A); Matrix Y = new Matrix(val.RowCount, val.ColumnCount); Matrix T = dan.S; Vector R = new Vector(val.RowCount); R = Danilevsky_Values(dan.A); for (int i = 0; i < val.ColumnCount; i++) { for (int j = 0; j < val.RowCount; j++) { Y[val.RowCount - 1 - j, i] = Math.Pow(R[i], j); } } A = T * Y; double a = 0; for (int i = 0; i < val.ColumnCount; i++) { a = MathM.vect_norm_2(A.Get_column(i)); for (int j = 0; j < val.RowCount; j++) { A[j, i] /= a; } } return A; }