Cubic Interpolating Splines
and
Algorithms for Cubic Spline Interpolation
private double[] CubicSpline(double[] x, double[] y, int xi_length) { int n = x.Length; double[] h = new double[n]; double[] b = new double[n]; for (int i = 0; i < n-1; i++) { h[i] = x[i + 1] - x[i]; b[i] = (y[i + 1] - y[i]) / h[i]; } double[] u = new double[n]; double[] v = new double[n]; u[1] = 2*(h[0] + h[1]); v[1] = 6*(b[1] - b[0]); for (int i = 2; i < n-1; i++) { u[i] = 2*(h[i-1] + h[i]) - (h[i-1]*h[i-1])/u[i-1]; v[i] = 6*(b[i] - b[i-1]) - (h[i-1]*v[i-1])/u[i-1]; } double[] z = new double[n]; z[n-1] = 0; for (int i = n-2; i > 0; i--) z[i] = (v[i] - h[i]*z[i+1]) / u[i]; z[0] = 0; double[] S = new double[xi_length]; int j = 0; for (int i = 0; i < S.Length; i++) { if (i >= x[j+1] && j < x.Length - 2) j++; double va = y[j]; double vb = -(h[j]/6)*z[j+1] - (h[j]/3)*z[j] + (y[j+1]-y[j])/h[j]; double vc = z[j]/2; double vd = (z[j+1]-z[j])/(6*h[j]); S[i] = va + (i-x[j])*(vb+(i-x[j])*(vc+(i-x[j])*vd)); } return S; }
What does S mean? What does it stand for i mean
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete