- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值分析作业程序.doc
贵州师范大学数学与计算机科学学院学生实验报告
课程名称: 数值分析 班级: 09数本(1)班 实验日期: 2011年 10月 19日
学 号: 姓名: 指导教师:
实验成绩:
一、实验名称
实验二: Lagrange插值与曲线拟合的最小二乘法
二、实验目的及要求
1.?掌握Lagrange插值的基本思路和步骤.
2. 掌握最小二乘法的基本思路和拟合步骤.
3. 培养Matlab编程与上机调试能力.
三、实验环境
每人一台计算机,要求安装Windows XP操作系统,Microsoft office2003、MATLAB6.5(或7.0).
四、实验内容
1. 对函数在区间[-5,5]内选取n+1个的等距插值节点,取不同的n,作n次Lagrange插值,将对应的插值多项式图像与被插值函数画在同一张图上进行比较.
2. 给定数据点
-3 -1 0 1 3 5 -6 -3 -1 0 1 3 分别用一次,二次和三次多项式曲线,以最小二乘法拟合这些数据点,哪一种曲线拟合较好?为什么?能找出更好的拟合曲线吗?
五、算法描述及实验步骤
算法:Lagrange插值
输入 y=f(x)的函数表和给定点x
输出 x处的近似函数值
步1
步2 对执行步3→步6
步3
步4 对执行步5
步5 假若,则
步6
步7 输出y
六、调试过程及实验结果
七、总结
(1) 通过图形比较,我们已经看到抛物插值比线性插值精度高。一般情况下,高次插值比低次插值精度高,但也有例外。从图形上可以看到在[-5,5]的两个端点附近发生激烈震荡,逼近效果很差。人们把这种现象称为Runge现象。说明插值次数太高也不一定能提高精度;另一方面,容易看出插值次数越高计算越复杂。鉴于高次插值的以上两个缺点,实践中高于7次的插值很少采用,当插值区间很大,节点较多时,为提高精度常用分段低次插值,即把插值区间[a,b]分成n个子段[],.在每个子段[]上对f(x)作低次插值,用分段多项式插值代替整个区间上的多项式插值是现代计算数学区别于古典计算数学的一个基本特征。
(2)与插值法一样,多项式拟合的最小二乘法也是用多项式逼近f(x)(f(x)或者以解析式或者以数据点或者以函数表形式出现).但插值法要求插值节点互不相同,且通过所有数据点.最小二乘法则不要求,也不可能要求通过所有数据点,而只要求在最小二乘意义下最接近所有数据点。
八、附录(源程序清单)
(1)function cy=Lagrange(x,y,n,cx)
m=length(cx);cy=zeros(1,m);
for k=1:n+1
t=ones(1,m);
for j=1:n+1
if j~=k
t=t.*(cx-x(j))./(x(k)-x(j));
end
end
cy=cy+y(k).*t;
end
x=-5:0.01:5;
y=1./(1+x.^2);
plot(x,y)
n=10;
x0=-5:(5-(-5))/n:5;
y0=1./(1+x0.^2);
cx=-5:0.01:5;
cy=Lagrange(x0,y0,n,cx);
hold on
plot(cx,cy)
(2)
x=[-3,-1,0,1,3,5];
y=[-6,-3,-1,0,1,3];
subplot(2,2,1)
scatter(x,y,filled,r);
hold on
p1=polyfit(x,y,1);
y1=polyval(p1,x);
e1=norm(y-y1)
e1 =
1.6087
t=-4:0.01:6;
pt1=polyval(p1,t);
plot(t,pt1)
title(一次多项式拟合图像)
subplot(2,2,2)
scatter(x,y,filled,r);
hold on
p2=polyfit(x,y,2);
y2=polyval(p2,x);
e2=norm(y-y2)
e2 =
0.8405
t=-4:0.01:6;
pt2=polyval(p2,t);
plot(t,pt2)
title(二次多项式拟合图像)
subplot(2,2,3)
scatter(x,y,filled,r);
hold on
p3=polyfit(x,y,3);
y3=p
文档评论(0)