public static RationalSquareMatrix FaddevasMethod(RationalSquareMatrix AIn, out RationalVector CharacteristicEquation) { RationalSquareMatrix A = AIn.Clone(); CharacteristicEquation = new RationalVector(); RationalSquareMatrix A_n = A; Rational b_n = 1; RationalSquareMatrix B_n = null; RationalSquareMatrix I = null; RationalSquareMatrix AInv = null; int i = 0; for (i = 1; i < A.Rows; i++) { b_n = -A_n.Trace() / (i); CharacteristicEquation.Add(b_n); I = RationalSquareMatrix.IdentityMatrix(A.Rows); B_n = A_n + b_n * I; A_n = A * B_n; } b_n = -A_n.Trace() / (i); CharacteristicEquation.Add(b_n); AInv = -1 / b_n * B_n; AInv.FullRep = A.ToLatex() + "^{-1} = " + AInv.ToLatex(); return(AInv); }
public static RationalVector operator +(Rational value, RationalVector v) { RationalVector vM = new RationalVector(); for (int i = 0; i < v.Count; i++) { vM.Add(value + v[i]); } return(vM); }
public static RationalVector operator /(RationalVector v, Rational value) { RationalVector vM = new RationalVector(); for (int i = 0; i < v.Count; i++) { vM.Add(v[i] / value); } return(vM); }
public static RationalVector operator -(RationalVector v1, RationalVector v2) { RationalVector vM = new RationalVector(); for (int i = 0; i < v1.Count; i++) { vM.Add(v1[i] - v2[i]); } return(vM); }
public RationalVector this[params string[] exps] { get { RationalVector rv = new RationalVector(); foreach (string r in exps) { rv.Add(Rational.Parse(r)); } return(rv); } }
public RationalVector CramersRule(RationalVector VectorToSolve) { RationalVector Deltas = new RationalVector(); RationalSquareMatrix A = this.Clone(); Rational Delta = RationalSquareMatrix.Det(A); for (int i = 0; i < this.Rows; i++) { RationalVector rvSave = A[i]; A[i] = VectorToSolve; Deltas.Add(RationalSquareMatrix.Det(A) / Delta); A[i] = rvSave; } return(Deltas); }
public RationalVector this[int Column] { get { RationalVector ret = new RationalVector(); for (int i = 0; i < this.Rows; i++) { ret.Add(this[i, Column]); } return(ret); } set { for (int i = 0; i < this.Rows; i++) { this[i, Column] = value[i]; } } }