Пример #1
0
        static Polynomial[] GetNodalPolynomials(double[] Nodes)
        {
            int N = Nodes.Length;

            Polynomial[] Ret = new Polynomial[N];

            MultidimensionalArray Mtx = MultidimensionalArray.Create(N, N);

            for (int n = 0; n < N; n++)
            {
                double x_n = Nodes[n];
                double a   = 1.0;
                for (int i = 0; i < N; i++)
                {
                    Mtx[n, i] = a;
                    a        *= x_n;
                }
            }


            for (int n = 0; n < N; n++)
            {
                double[] RHS = new double[N];
                RHS[n] = 1.0;

                double[] Sol = new double[N];
                Mtx.CloneAs().Solve(Sol, RHS);

                Polynomial poly = new Polynomial();
                for (int i = 0; i < N; i++)
                {
                    poly.AddCoeff(Sol[i], new int[] { i });
                }

                Ret[n] = poly;
            }


            return(Ret);
        }