資源簡介
這個是用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個文件信息
評論
共有 條評論