• 大小: 486KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: C/C++
  • 标签: C语言  

资源简介

这个是用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个文件信息

评论

共有 条评论

相关资源