Esempio n. 1
0
        public static void FactorForms()
        {
            var pol = new RationalTypes.RationalPolynomial(new RationalTypes.Rational[]
            {
                new RationalTypes.Rational(17),
                new RationalTypes.Rational(187),
                new RationalTypes.Rational(612),
                new RationalTypes.Rational(272),
                new RationalTypes.Rational(-1088)
            });

            Console.WriteLine(RationalTypes.HornerScheme.GetFactorForm(pol));

            pol = new RationalTypes.RationalPolynomial(new RationalTypes.Rational[]
            {
                new RationalTypes.Rational(1),
                new RationalTypes.Rational(-2),
                new RationalTypes.Rational(1),
                new RationalTypes.Rational(-18),
                new RationalTypes.Rational(-72)
            });
            Console.WriteLine(RationalTypes.HornerScheme.GetFactorForm(pol));

            pol = new RationalTypes.RationalPolynomial(new RationalTypes.Rational[]
            {
                new RationalTypes.Rational(12),
                new RationalTypes.Rational(2496, 5),
                new RationalTypes.Rational(-1826),
                new RationalTypes.Rational(416),
                new RationalTypes.Rational(-1528),
                new RationalTypes.Rational(416, 5),
                new RationalTypes.Rational(-306)

                // -306 + (416 x) / 5 - 1528 x ^ 2 + 416 x ^ 3 - 1826 x ^ 4 + (2496 x ^ 5)/ 5 + 12 x ^ 6
            });
            Console.WriteLine(RationalTypes.HornerScheme.GetFactorForm(pol));

            pol = new RationalPolynomial(new Rational[]
            {
                (Rational)1,
                -(Rational)12 / 7,
                (Rational)54 / 49,
                -(Rational)108 / 343,
                (Rational)81 / 2401
            });
            Console.WriteLine(RationalTypes.HornerScheme.GetFactorForm(pol));
        }
Esempio n. 2
0
        public static string GetTeXFactorForm(RationalPolynomial p)
        {
            var    q      = new RationalPolynomial(p.Coefficients);
            string answer = string.Empty;
            var    roots  = GetRationalRoots(q.MakePolynomial());

            foreach (var root in roots)
            {
                while (q.At(root) == 0)
                {
                    answer += "\\left( x" + (-root).ToSignedTeXString() + "\\right)";
                    q.DivideBySolution(root);
                }
            }

            answer += (q.Degree == 0 && q[0] == 1) ? string.Empty : "\\left( " + q.ToString() + "\\right)";

            return(answer);
        }