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); }