コード例 #1
0
ファイル: Program.cs プロジェクト: PasaOpasen/MathClasses
        public static void PolynomExamples()
        {
            // create by coefs
            var pol = new Polynom(new double[] { 1, 2, 3, 4, 5 });

            pol.Show(); // 5x^4 + 4x^3 + 3x^2 + 2x^1 + 1

            // create by head coef and roots
            pol = new Polynom(aN: 2, -1, 0, 1, 2);
            pol.Show(); // 2x^4 + -4x^3 + -2x^2 + 4x^1 + -0


            var points = new Point[] { new Point(1, 2), new Point(3, 4), new Point(5, 7) };

            // interpolation polynom
            pol = new Polynom(points);

            pol.Show();          // 0,125x^2 + 0,5x^1 + 1,375
            pol.Value(1).Show(); // 2
            pol.Value(3).Show(); // 4
            pol.Value(5).Show(); // 7


            // interpolation polynom
            pol = new Polynom(x => Math.Sin(x) + x, n: 6, a: -1, b: 1);

            foreach (var val in new NetOnDouble(-1, 1, 12).Array)
            {
                $"pol = {pol.Value(val)}   f = {Math.Sin(val)+val}".Show();
            }

//pol = -1,841470984807902   f = -1,8414709848078965
//pol = -1,5480795026639842   f = -1,548086037891892
//pol = -1,230639272195443   f = -1,230638423911926
//pol = -0,8936010083785814   f = -0,8935994224990154
//pol = -0,5420855146782465   f = -0,5420861802628714
//pol = -0,18169222919395844   f = -0,1816930144179611
//pol = 0,18169222919395842   f = 0,1816930144179611
//pol = 0,5420855146782463   f = 0,5420861802628714
//pol = 0,8936010083785806   f = 0,8935994224990154
//pol = 1,2306392721954413   f = 1,230638423911926
//pol = 1,5480795026639818   f = 1,5480860378918924
//pol = 1,8414709848078967   f = 1,8414709848078965

            // operations

            var pol1 = new Polynom(new double[] { 1, 2, 3, 4, 5 });
            var pol2 = new Polynom(new double[] { 2.2, 3 });

            pol1.Show();                           // 5x^4 + 4x^3 + 3x^2 + 2x^1 + 1
            pol2.Show();                           // 3x^1 + 2,2
            pol2.ShowRational();                   // (3x^1) + 11/5

            (pol1 * pol2).Show();                  // 15x^5 + 23x^4 + 17,8x^3 + 12,600000000000001x^2 + 7,4x^1 + 2,2

            (pol1 / 2 + pol2 * 2.8 - 4.66).Show(); // 2,5x^4 + 2x^3 + 1,5x^2 + 9,399999999999999x^1 + 2

            var a = pol1 / pol2;
            var b = pol1 % pol2;

            $"{pol1} == {a*pol2+b}".Show(); // 5x^4 + 4x^3 + 3x^2 + 2x^1 + 1 == 5x^4 + 4x^3 + 3x^2 + 2x^1 + 1

            (a, b) = Polynom.Division(pol1 - 1.5, pol2);
            $"{pol1-1.5} == {a * pol2 + b}".Show(); // 5x^4 + 4x^3 + 3x^2 + 2x^1 + -0,5 == 5x^4 + 4x^3 + 3x^2 + 2x^1 + -0,5

            // derivative
            (pol1 | 2).Show(); // 60x^2 + 24x^1 + 6



            pol2.Value(pol1).Show(); //

            pol2.Value(new SqMatrix(new double[, ] {
                { 1, 2 }, { 3, 4 }
            })).PrintMatrix();

            //5,2     6
            //9       14,2


            // integration

            $"{pol1.S(-3,2)} == {FuncMethods.DefInteg.GaussKronrod.MySimpleGaussKronrod(pol1.Value,-3,2,n:15)}".Show();

            // 245 == 244,99999999999997
        }