www.pudn.com > 3INSERT.rar > 3INSERT.C


#include"math.h" 
#include "stdio.h" 
main() 
{ 
	double sx(double,double*,double*); 
	double lx(double); 
	int i,j=0; 
	int n; 
	double p; 
	double a[4][4];/*追赶法矩阵*/ 
	double x[6]={0.03846,0.05882,0.1,0.2,0.5,1.0};/*插值点数值*/ 
	double fx[5];/*求值*/ 
	double g[4]; 
	double u,v; 
	double m[6]={0.01479,0,0,0,0,0};	 
	double y[4]; 
	double b[4]; 
	//double x[4]; 
	for(i=0;i<4;i++) 
		for(j=0;j<4;j++) 
		{ 
		    	a[i][j]=0; 
		} 
	for(i=0;i<5;i++) 
	{ 
		fx[i]=x[i+1]-x[i]; 
	} 
	j=0; 
	for(i=0;i<4;i++)/*构建追赶法中的矩阵a[][]*/ 
	{ 
		v=0.5;u=0.5; 
		g[i]=3*(v*fx[i]+u*fx[i+1]); 
		a[j][j]=2; 
		if(j!=3) 
			a[j][j+1]=u; 
		if(j!=0) 
			a[j][j-1]=v; 
		j++; 
	} 
	g[0]=g[0]-0.5*m[0]; 
	g[3]=g[3]-0.5*m[5]; 
	/*生成了追赶法中的系数矩阵a[][]以及g[]*/ 
	/*以下求解追赶法方程的解*/ 
		 
	/*求解追赶法中的矩阵得到m[]*/ 
	 
	b[0]=a[0][1]/a[0][0]; 
	for(i=1;i<4;i++) 
		b[i]=a[i][i+1]/(a[i][i]-a[i][i-1]*b[i-1]); 
	y[0]=g[0]/a[0][0]; 
	for(i=1;i<4;i++) 
		y[i]=(g[i]-a[i][i-1]*y[i-1])/(a[i][i]-a[i][i-1]*b[i-1]); 
	m[4]=y[3]; 
	for(i=3;i>0;i--) 
		m[i]=y[i-1]-b[i-1]*m[i+1]; 
	for(j=0;j<6;j++) 
	{ 
		printf("m[%d]=%f,",j,m[j]); 
		printf("\n"); 
	} 
	printf("计算插值的点n="); 
	scanf("%d",&n); 
	//n=20; 
	for(i=0;i