/* ATK IV - Numerical Programming (2006) */ /* Excercise 5.2a - Cubic Spline Interpolation */ #include #include #define NRANSI #include #define Pi 3.141592 #define N 40 float f(float x){return sin(x);} int main(void){ float xi[N+1],yi[N+1],y2[N+1]; int i; float step; float a=0.0; float b=2.0*Pi; float z=0.0; float y; step = (b-a)/(N-1); for(i=1;i<=N;i++){ xi[i]=z; yi[i]=f(z); z+=step; } spline(xi,yi,N,1,1,y2); for(i=1;i<4*N;i++){ splint(xi,yi,y2,N,(i-1)*step/4.0,&y); printf("%f %f\n",y,f((i-1)*step/4.0)); } return 0; }