资源简介
这个是用C语言编的关于插值的代码,主要是三种插值方式,为拉格朗日插值法,分段线性插值法和三次样条插值法,三次样条采用追赶法。
代码片段和文件信息
/*黄益星 00986053 工学院生物医学工程系*/
#include
#include
#define max 100
int n;
double x_point[max]y[max]; //x_point储存n+1个分割点,y储存分割点x_point上的函数值
double m[max]; //样条函数微商
double Lagrange(double x); //函数定义
double Pwl(double x);
void Chase();
double Spline(double x);
double Maxerr(double err[]int n);
double err1[max]err2[max]err3[max];
void main()
{
int i;
double x[max]phi_1[max]phi_2[max]phi_3[max]; //x数组为待求的那些值的横坐标,phi三个数组储存三种不同方法插值的函数值
FILE * fp;
printf(“n=“);
scanf(“%d“&n);
for(i=0;i<=n;i++) //分割点坐标分别存入x_pointy[]
{
x_point[i]=6.0*i/n;
y[i]=exp(-2.0*x_point[i]); //f(x)=e^(-2x)
}
for(i=0;i {
x[i]=6.0*(i+0.5)/n; //待求值结点
}
//******************追赶法计算m[n]********************
m[0]=-2.0; //边界条件
m[n]=-2.0*exp(-12.0);
Chase();
//****************************************************
//****************************************************
for(i=0;i {
phi_1[i]=Lagrange(x[i]); //********拉格朗日插值********
phi_2[i]=Pwl(x[i]); //********分段线性插值********
phi_3[i]=Spline(x[i]); //********三次样条插值********
}
//
printf(“True Value Lagrange Error_1 Piecewice Error_2 Spline Error_3\n“);
for(i=0;i {
err1[i]=fabs(phi_1[i]-exp(-2*x[i]));
err2[i]=fabs(phi_2[i]-exp(-2*x[i]));
err3[i]=fabs(phi_3[i]-exp(-2*x[i]));
printf(“%f %f %f %f %f %f %f\n“exp(-2*x[i])phi_1[i]err1[i]phi_2[i]err2[i]phi_3[i]err3[i]);
}
//输出最大误差
printf(“The result is:\nThe max error of Lagrange is %f.\nThe max error of Pwl is %f.\nThe max error of Spline is %f.\n“Maxerr(err1n)Maxerr(err2n)Maxerr(err3n));
//----------------------------------输入TXT文件的操作-----------------------------------------------//
fp=fopen(“D:\\result.txt““w“); //在D盘创建result.txt,并将结果输入
if(fp==NULL)
{
printf(“Failed to open the file.“);return;
}
fprintf(fp“n=%d\n“n);
fprintf(fp“True value Lagrange Error_1 Piecewice Error_2 Spline Error_3\n“);
for(i=0;i {
fprintf(fp“%f %f %f %f %f %f %f\n“exp(-2*x[i])phi_1[i]err1[i]phi_2[i]err2[i]phi_3[i]err3[i]);
}
//输出最大绝对误差在txt文件
fprintf(fp“The result is:\nThe max error of Lagrange is %f.\nThe max error of Pwl is %f.\nThe max error of Spline is %f.\n“Maxerr(err1n)Maxerr(err2n)Maxerr(err3n));
}
/***********************************************************子函数***************************************************************/
double Lagrange(double x)//------------拉格朗日插值子函数-------------
{
int ij;
double phi1=0lj_x=1.0;
for(i=0;i<=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13145 2012-03-11 13:45 黄益星_00986053(修改)\Interpolation\Debug\Interpolate.obj
文件 209009 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\Interpolation.exe
文件 236576 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\Interpolation.ilk
文件 13327 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\Interpolation.obj
文件 221448 2012-03-11 15:48 黄益星_00986053(修改)\Interpolation\Debug\Interpolation.pch
文件 492544 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\Interpolation.pdb
文件 13153 2012-03-11 13:49 黄益星_00986053(修改)\Interpolation\Debug\Interpolation_2.obj
文件 13141 2012-03-11 13:47 黄益星_00986053(修改)\Interpolation\Debug\Interpo_2.obj
文件 41984 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\vc60.idb
文件 53248 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Debug\vc60.pdb
文件 5834 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.cpp
文件 3485 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.dsp
文件 551 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.dsw
文件 41984 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.ncb
文件 48640 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.opt
文件 787 2012-03-11 19:31 黄益星_00986053(修改)\Interpolation\Interpolation.plg
文件 209012 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\Interpolation_2.exe
文件 221068 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\Interpolation_2.ilk
文件 14809 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\Interpolation_2.obj
文件 221448 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\Interpolation_2.pch
文件 492544 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\Interpolation_2.pdb
文件 33792 2012-03-11 19:30 黄益星_00986053(修改)\Interpolation2\Debug\vc60.idb
文件 53248 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Debug\vc60.pdb
文件 6132 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Interpolation_2.cpp
文件 3509 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Interpolation_2.dsp
文件 555 2012-03-11 19:30 黄益星_00986053(修改)\Interpolation2\Interpolation_2.dsw
文件 41984 2012-03-11 19:30 黄益星_00986053(修改)\Interpolation2\Interpolation_2.ncb
文件 48640 2012-03-11 19:30 黄益星_00986053(修改)\Interpolation2\Interpolation_2.opt
文件 799 2012-03-11 19:29 黄益星_00986053(修改)\Interpolation2\Interpolation_2.plg
文件 54042 2012-03-11 19:35 黄益星_00986053(修改)\插值函数上机实验报告_黄益星_00986053.docx
............此处省略9个文件信息
评论
共有 条评论