Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
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);
        }