public static int Test_Rational_Determinant() { RationalFactory rf = new RationalFactory(); RationalSquareMatrix A = rf[3, 3, "1", "2", "-2", "-1", "1", "3", "2", "-1", "2" ]; RationalSquareMatrix ACopy3 = rf[4, 4, "4", "7", "2", "3", "1", "3", "1", "2", "2", "5", "3", "4", "1", "4", "2", "3" ]; RationalSquareMatrix ACopy3_2 = rf[3, 3, 1, 2, 3, 4, 1, 6, 7, 8, 1 ]; List <RationalCoFactorInfo> cfList = RationalSquareMatrix.GetAllMatrixCoFactors(ACopy3); StringBuilder sb = new StringBuilder();//Start building latex sb.Append(@"\begin{aligned}"); sb.AppendFormat(@"&{0} \\ \\", ACopy3.ToLatex()); //foreach(IGrouping<string, RationalCoFactorInfo> funk in q.ToList()) foreach (RationalCoFactorInfo ci in cfList) { sb.AppendFormat(@"&{0} \\ \\", ci.Minor.MinorName + " = " + ((ci.Sign < 0) ? "-" : "") + ci.CoFactor.ToLatex() + ci.Minor.ToLatex()); foreach (List <RationalCoFactorInfo> lstChild in ci.ListOfLists) { foreach (RationalCoFactorInfo ci2 in lstChild) { //if (ci2.Minor.Rows == 4) { sb.AppendFormat(@"&{0} \\ \\", ci.Minor.MinorName + " = " + ((ci.Sign < 0) ? "-" : "") + ci.CoFactor.ToLatex() + ci2.CoFactor.ToLatex() + ci2.Minor.ToLatex()); } } } } sb.Append(@"&Det = " + RationalSquareMatrix.Det(ACopy3_2)); sb.Append(@"\end{aligned}"); HtmlOutputMethods.WriteLatexEqToHtmlAndLaunch(sb.ToString(), "Test_Rational_Determinant.html"); //display Latex via mathjax return(0); }
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); }