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