拉格朗日牛顿插值法实验报告.docx
- 文档编号:11068531
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:9
- 大小:111.49KB
拉格朗日牛顿插值法实验报告.docx
《拉格朗日牛顿插值法实验报告.docx》由会员分享,可在线阅读,更多相关《拉格朗日牛顿插值法实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
拉格朗日牛顿插值法实验报告
--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--
拉格朗日牛顿插值法实验报告(总10页)
标题:
实验一拉格朗日插值法算法与牛顿插值算法
一、实验目的:
1.体会并了解拉格朗日插值法,用计算机插入x值,输出相应的y值。
2.体会并了解牛顿插值法,用计算机插入x值,输出相应的y值。
二、实验原理:
1.拉格朗日插值法的插值公式:
2.牛顿插值法的插值公式:
三、算法设计与程序流程图:
1.拉格朗日插值法算法分析:
a.输入节点的个数j。
b.输入节点的横纵坐标。
c.输入新插入的节点的横坐标。
d.通过两次循环求得新插入节点的纵坐标。
程序流程图:
2.牛顿插值算法分析:
a.输入节点的个数j。
b.输入节点的横纵坐标。
c.输入新插入的节点的横坐标。
d.通过两次循环求得新插入节点的纵坐标。
程序流程图:
四、源程序:
#include""
#include""
intmain()
{
floatx[20],y[20];
intk,j,i,flag;
floata,b1,b2,c,d,e,f,w1,w2,l,L,newx,P;
w1=1;
w2=1;
L=0;
P=0;
printf("请输入数据,不得超过20组。
\n");
printf("输入的数据为几组:
");
scanf("%d",&j);
for(i=0;i<=j-1;i++)
{
printf("第%d组为:
\n",i+1);
printf("x=");
scanf("%f",&x[i]);
printf("y=");
scanf("%f",&y[i]);
}
printf("请选择:
1,拉格朗日插值。
2,牛顿插值。
0,退出。
\n");
scanf("%d",&flag);
if(flag==1)
{
printf("请输入插入的数值:
");
scanf("%f",&newx);
for(k=0;k<=j-1;k++)
{
b1=x[k];
b2=y[k];
for(i=0;i<=j-1;i++)
{
a=x[i];
c=newx-a;
w1=w1*c;
e=b1-a;
if(e!
=0)
{
w2=w2*e;
}
if(e==0)
{
e=e+1;
w2=w2*e;
}
}
d=newx-b1;
f=d*w2;
printf("f=%f\n",f);
l=b2*w1/f;
printf("l=%f\n",l);
L=L+l;
w1=1;
w2=1;
}
printf("newy=%f",L);
}
if(flag==2)
{
printf("请输入插入的数值:
");
scanf("%f",&newx);
for(f=0;f<=j-1;f++)
{
for(k=0;k<=f;k++)
{
b1=x[k];
b2=y[k];
for(i=0;i<=f;i++)
{
a=x[i];
e=b1-a;
if(e!
=0)
{
w1=w1*e;
}
elseif(e==0)
{
e=e+1;
w1=w1*e;
}
}
l=b2/w1;
L=L+l;
w1=1;
c=newx-b1;
w2=w2*c;
}
d=L*w2/c;
w2=1;
P=P+d;
L=0;
}
printf("newy=%f",P);
}
if(flag==0)
{
return0;
}
}
五、程序执行情况:
1.拉格朗日插值法:
2.牛顿插值法:
六、结果分析:
引用课本例2进行拉格朗日插值法验证,与课本上的结果相一致,引用课本例4进行牛顿插值法验证,与课本答案相差,是因为课本的有效数字与计算机取得不同,所以经过计算、运行基本达到了预期效果。
此程序可以用做数学计算。
七、实验体会:
经过此次实验基本上了解了拉格朗日插值法的算法和牛顿插值法算法的过程,对以后算法的运用和其他算法的理解有帮助,而且有助于编程能力的提高和实际问题的理解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拉格朗日 牛顿 插值法 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)