数值计算实验报告2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贵州师范大学数学与计算机科学学院学生实验报告

课程名称: 数值分析 班级: 实验日期:2013年9月27日 学 号: 姓名: 指导教师:

实验成绩: 一、实验名称

实验二: Lagrange 插值与曲线拟合的最小二乘法

二、实验目的及要求

1.让学生掌握Lagrange 插值与曲线拟合的最小二乘法

2.让学生能够用这些方法解决一些实际问题

三、实验环境

每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0).

四、实验内容 题1: 对函数2

11

)(x x f +=

,取n+1个等距分布的插值节点,取不同的n ,作n 次Lagrange 插值,把)(x f 和插值多项式的图象绘制在同一张图上进行比较. 题2: 给定数据点

分别用一次,二次,和三次多项式曲线,以及最小二乘法拟合这些数据点,哪一种曲线拟合较好?为什么?你能找出更好的拟合曲线吗? 提示:用残差平方的大小来判断拟合的优劣,越小越好.

五、算法描述及实验步骤 针对实验1:

(1)运用Matlab 创建M 文件 (2)在命令窗口调用文件

针对实验2:

(1)运用Matlab 作出上面表中的数据的散点图 (2)分别作出一次二次三次多项式拟合曲线

(3)比较三种曲线拟合的精度即比较残差平方的大小

六、调试过程及实验结果

grange插值:

(1)命令窗口输入:

>> f=shuru(-5,5,10) (回车)

f =

Columns 1 through 6

0.0385 0.0588 0.1000 0.2000 0.5000 1.0000 Columns 7 through 11

0.5000 0.2000 0.1000 0.0588 0.0385

(2)所得结果为图形所示:

2. 曲线拟合的最小二乘法

(1)先作出该散点图的一次拟合曲线(程序如下):>> x=[-3,-1,0,1,3,5];

>> t=-4:0.01:6;

>> y=[-6,-3,-1,0,1,3];

>> subplot(1,3,1)

>> scatter(x,y,'filled','r');

>> hold on

>> p1=polyfit(x,y,1)

p1 =

1.0776 -1.8980

>> y1=polyval(p1,x);

>> y1t=polyval(p1,t);

>> plot(t,y1t,'k')

>> e1=norm(y1-y)

e1 =

1.6087

>> title('一次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')

(2)然后作出其二次拟合曲线:

>> subplot(1,3,2)

>> scatter(x,y,'filled','y');

>> hold on

>> p1=polyfit(x,y,2)

p1 =

-0.0844 1.2584 -1.4156

>> y1=polyval(p1,x);

>> y1t=polyval(p1,t);

>> plot(t,y1t,'r')

>> e1=norm(y1-y)

e1 =

0.8405

>> title('二次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')

(3)最后做出其三次拟合曲线:

>> subplot(1,3,3)

>> scatter(x,y,'filled','m');

>> hold on

>> p1=polyfit(x,y,2)

p1 =

-0.0844 1.2584 -1.4156

>> y1=polyval(p1,x);

>> y1t=polyval(p1,t);

>> plot(t,y1t,'r')

>> e1=norm(y1-y)

e1 =

0.8405

>> title('三次多项式曲线拟合','fontsize',12,'fontweight','bold','fontangle','italic')

最后的图像为:

(4)比较精确度:

因为 e1 =1.6087 < e2=0.8405 < e3 = 0.8405 所以显然三次多项式拟合曲线的精度更高

七、总结

八、附录

Lagrange.m 文件:

function f=shuru(a,b,n)

h=(b-a)/n;

x=a:h:b;

f=1./(1+x.^2);

cx=a:0.01:b;

y0=1./(1+cx.^2);

plot(cx,y0,'b--')

hold on

cy=Lagrange(x,f,n,cx');

plot(cx,cy,'g--')

legend('f(x)','Pn(x)',2)

function cy=Lagrange(x,y,n,cx)

m=length(cx);cy=zeros(m,1);

for k=1:n+1

t=ones(m,1);

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

相关文档
最新文档