数值分析实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贵州师范大学数学与计算机科学学院学生实验报告
课程名称: 数值分析 班级: 09数本一班 实验日期: 学 号: 090704020103 82号 姓名: 指导教师: 实验成绩:
一、实验名称
实验二: Lagrange 插值与曲线拟合的最小二乘法
二、实验目的及要求
1. 掌握Lagrange 插值的基本思路和步骤.
2. 掌握最小二乘法的基本思路和拟合步骤.
3. 培养Matlab 编程与上机调试能力.
三、实验环境
每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0).
四、实验内容
1. 对函数2
1()1f x x =
+在区间[-5,5]内选取n+1个的等距插值节点,取不同的n,作n 次Lagrange 插值,将对应的插值多项式图像与被插值函数21()1f x x
=+画在同一张图上进行比较.
2.给定数据点
i x -3 -1 0 1 3 5 i y -6 -3 -1 0 1 3
分别用一次,二次和三次多项式曲线,以最小二乘法拟合这些数据点,哪一种曲线拟合较好?为什么?能找出更好的拟合曲线吗?
五、算法描述及实验步骤
1.
(1)分别画出原函数图像与Lagrange 多项式插值图像进行比较。
(2)实验步骤:
a.编写Lagrange 插值M 文件;
b.画出原函数图像;
c.调用Lagrange 插值取n=10画拟合图像;
d.比较观察两个图像。
2.
(1)利用最小二乘法对给定数据点分别画一次,二次和三次多项式拟合曲线。
(2)实验步骤:
a.输入数据点;
b.建立一个划分为四个部分的图像窗口;
c.画一次多项式拟合图像在第一部分;
d.画二次多项式拟合图像在第二部分;
e.画三次多项式拟合图像在第三部分。
六、调试过程及实验结果
七、总结
1、从图像可以看出用lagrange插值函数拟合数据中间拟合的很好,但两边与原函数图象相比波动太大,逼近效果很差,出现所谓的Runge现象。
2、从图像可以看出用最小二乘法去拟合较少的数据点,曲线拟合比直线拟合得好,高次的会比低次的拟合得好。
3.一般情形高次插值比低次插值精度高,但是插值次数太高也不一定能提高精度.
八、附录(源程序清单)
1、(P48 2.13)
M文件:
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./(x.^2+1);
>> plot(x,y)
>> n=10;
>> x0=-5:10/n:5;
>> y0=1./(1+x0.^2);
>> cx=-5:0.01:5;
>> cy=Lagrange(x0,y0,n,cx);
>> hold on
>> plot(cx,cy)
2、(P48 2.15)
>> 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=polyval(p3,x)
y3 =
-6.0950 -2.5294 -1.2901 -0.2980 1.2893 2.9231
>> y3=polyval(p3,x);
>> e3=norm(y-y2)
e3 =
0.8405
>> t=-4:0.01:6;
>> pt3=polyval(p3,t);
>> plot(t,pt3)
>> title('三次多项式拟合图像')