www.pudn.com > spline513.rar > spline.c
/*
* 1.给定插值条件如下:
* i 0 1 2 3 4 5 6 7
* Xi 8.125 8.4 9.0 9.485 9.6 9.959 10.166 10.2
* Yi 0.0774 0.099 0.280 0.60 0.708 1.200 1.800 2.177
* 作三次样条函数插值,取第一类边界条件 Y0’=0.01087 Y7’=100
*/
double xi=() ; //所要计算点的自变量值
double []X={8.125,8.4,9.0,9.485,9.6,9.959,10.166,10.2}; //初始数据
double []Y={0.0774,0.099,0.280,0.60,0.708,1.200,1.800,2.177};
double Yd0=0.01087;
double Yd7=100;
int n=7;
double []h=new double[n+1];
double []f=new double[n+1];
double []lambda=new double[n+1];
double []mu=new double[n+1];
double []g=new double[n+1];
double []m=new double[n+1];
double x=0;
double Sx=0;
Interpolation.Get_h(h,X); //计算 ,f[ , ]
Interpolation.Get_f(f,Y,h); //计算f[ , ]
Interpolation.Get_lambda(lambda,h); //计算
Interpolation.Get_mu(mu,h); //计算
Interpolation.Get_g(g,lambda,mu,f); //计算
double []b={2,2,2,2,2,2,2,2};
g[1]=g[1]-lambda[1]*Yd0;
g[n-1]=g[n-1]-mu[n-1]*Yd7;
m[0]=Yd0;
m[n]=Yd7;
Interpolation.FEBS(m,lambda,b,mu,g); //用追赶法解方程求出
for(int i=0;iX[i])&&x0;i--)
{
x[i]=y[i]-beta[i]*x[i+1];
}
}
}