void Interpolate(int n) { FreeMem(); GetMem(n); GetMaxMin(); GetNodesAndValues(n); GetWeights(n); }
void Interpolate(int n) { delete x; delete fv; delete xi; delete v; delete aa; delete bb; x = new double[n]; fv = new double[n]; xi = new double[n+1]; v = new double[n+1]; aa = new double[(n+1)*(n+1)]; bb = new double[n+1]; GetNodesAndValues(n); for (int i = 1; i <= n+1; i++) for (int j = 1; j <= n+1; j++) A(i,j) = 0; for (int i = 2; i <= n; i++) //make system { A(i,i-1) = 1.0/(X(i-1)-XI(i-1)) - 1/(XI(i)-XI(i-1)); A(i,i) = 1.0/(XI(i)-X(i-1)) + 1.0/(XI(i)-XI(i-1)) + 1.0/(X(i)-XI(i)) + 1.0 /(XI(i+1)-XI(i)); A(i,i+1) = 1.0/(XI(i+1)-X(i)) - 1.0/(XI(i+1)-XI(i)); B(i) = F(i-1) * (1.0/(X(i-1)-XI(i-1)) + 1.0/(XI(i)-X(i-1)))+ F(i) * (1.0/(X(i)-XI(i)) + 1.0/(XI(i+1)-X(i))); } // border conditions int i; i = 1; A(i,i) = 1.0/(X(i)-XI(i)); A(i,i+1) = 1.0/(XI(i+1)-X(i)); B(i) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i))); i = n; A(i+1,i) = 1.0/(X(i)-XI(i)); A(i+1,i+1) = 1.0/(XI(i+1)-X(i)); B(i+1) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i))); // PrintMatrix(aa,bb,n+1); SolveSystem(n+1,aa,bb,v); }
void Interpolate(int n) { FreeMem(); GetMem(n); GetMaxMin(); GetNodesAndValues(n); MakeMatrix(n); double *ss = new double[n - 2]; SolveSystem(n - 2, aa, bb, ss); for (int i = 2; i < n; i++) D(i) = ss[i - 2 - 1]; delete ss; EM(1, 1) = X(1) * X(1) * X(1); EM(1, 2) = X(1) * X(1); EM(1, 3) = X(1); EM(1, 4) = 1.0; EM(2, 1) = X(2) * X(2) * X(2); EM(2, 2) = X(2) * X(2); EM(2, 3) = X(2); EM(2, 4) = 1.0; EM(3, 1) = X(3) * X(3) * X(3); EM(3, 2) = X(3) * X(3); EM(3, 3) = X(3); EM(3, 4) = 1.0; EM(4, 1) = 3.0 * X(3) * X(3); EM(4, 2) = 2.0 * X(3); EM(4, 3) = X(3); EM(4, 4) = 0.0; eb[0] = F(1); eb[1] = F(2); eb[2] = F(3); eb[3] = D(3); SolveSystem(4, em, eb, exs); EM(1, 1) = X(n - 2) * X(n - 2) * X(n - 2); EM(1, 2) = X(n - 2) * X(n - 2); EM(1, 3) = X(n - 2); EM(1, 4) = 1.0; EM(2, 1) = X(n - 1) * X(n - 1) * X(n - 1); EM(2, 2) = X(n - 1) * X(n - 1); EM(2, 3) = X(n - 1); EM(2, 4) = 1.0; EM(3, 1) = X(n) * X(n) * X(n); EM(3, 2) = X(n) * X(n); EM(3, 3) = X(n); EM(3, 4) = 1.0; EM(4, 1) = 3.0 * X(n - 2) * X(n - 2); EM(4, 2) = 2.0 * X(n - 2); EM(4, 3) = X(n - 2); EM(4, 4) = 0.0; eb[0] = F(n - 2); eb[1] = F(n - 1); eb[2] = F(n); eb[3] = D(n - 2); SolveSystem(4, em, eb, exe); }