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