福建农林大学数值分析课程实习

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

福建农林大学计算机与信息学院

课程实习报告

课程名称:数值分析课程实习

实习题目:多项式插值

姓名:

系:数学与应用数学

专业:数学与应用数学

年级:2008级

学号:

指导教师:

职称:

2011年4月22日

福建农林大学计算机与信息学院数学类课程实习报告结果评定

附件三:实习报告目录格式

目录1……………………………………………………………………………页码1.1…………………………………………………………………………页码2……………………………………………………………………………页码2.1………………………………………………………………………页码

多项式插值

1. 实习的目的和任务

掌握拉格朗日插值多项式、牛顿插值多项式、三次样条插值的理论和构造方法。对同一组已知的数据,用不同的插值法构造插值函数作为近似函数,并作一条通过这些数据点的光滑曲线,对各种插值结果进行初步的分析,讨论不同插值法的优缺点。

2. 实习要求

1、多项式插值:比较lagarange 插值,牛顿插值,牛顿向前插值,样条函数的区别及优缺点;

2、通过实例解释区别;

3、求某个点的函数值;

3. 实习地点

田家炳实验楼513

4. 主要仪器设备(实验用的软硬件环境)

方正商祺PC ,MATLAB7.0

5. 实习内容

例:给出()ln f x x =的数值表,用Lagrange 插值,牛顿插值,牛顿向前插值,三次样条插值求解,并计算ln 0.54的值。

5.1由已给的插值点,根据所编程序,用Lagrange 插值法求解

Lagrange 插值多项式:

011011()()()()()(0,1...,)()()()()

n k k k k n k k k k k x x x x x x x x k l x n x x x x x x x x -+-+----=

=----

(()()n

n k k i k L x f x l x y ==

=∑

) (j=0,1,...,n)

Lagrange 插值余项:

(1)

()

()()()()(1)!

n n n f

R x f x P x x n ξω+=-=

+

建立Lagrange.M文件

function yy=Lagrange (x,y,xx)

%用途:拉格朗日插值法求解

%格式:yy= Language (x,y,xx), x是节点向量,y是节点对应的函数值向量,% xx是插值点(可以是多个),,yy返回插值结果

m=length(x);n=length(y);

if m~=n, error('向量x与y的长度必须一致');

end

s=0;

for i=1:n

t=ones(1,length(xx));

for j=1:n

if j~=i

t=t.*(xx-x(j))/(x(i)-x(j));

end

end

s=s+t*y(i);

end

yy=s;

end

x=[0.4,0.5,0.6,0.7,0.8];

y=[-0.916291,-0.693147,-0.510826,-0.357765,-0.223144];

x1=[0.4,0.5,0.6,0.7,0.8];

y1= Lagrange (x,y,x1)

t=0.4:0.0001:0.8;

z=log(t);

plot(x,y,'ro',x1,y1,'r:',t,z)

legend('插值节点','Lagrange插值','ln x')

y0=Lagrange (x,y,0.54)

y1 =

-0.9163 -0.6931 -0.5108 -0.3578 -0.2231

y0 =

-0.6160

由此求得Lagrange多项式

432

=-+-+-+-+-,()ln

P x x x x x

()0.91630.69310.51080.35780.2231

=在

f x x

x=的值为-0.6160;图形如下

0.54

0.40.450.50.550.60.650.70.750.8

5.2由已给的插值点,根据所编程序,用Newton插值法求解

Newton 插值多项式

+-+=)](,[)()(0100x x x x f x f x N n )())(](,,,[11010----+n n x x x x x x x x x f

建立Newton .M 文件

function f=Newton(x,y,x0) syms t;

if(length(x)==length(y)) n=length(x); c(1:n)=0.0; else

disp('x 和y 的维数不相等!'); return; end f=y(1); y1=0; l=1;

for(i=1:n-1) for(j=i+1:n)

y1(j)=(y(j)-y(i))/(x(j)-x(i)); end

c(i)=y1(i+1); l=l*(t-x(i)); f=f+c(i)*l; simplify(f); y=y1; if(i==n-1)

if(nargin==3)

f=subs(f,'t',x0); else

f=collect(f); f=vpa(f,6); end end end

x=[0.4,0.5,0.6,0.7,0.8];

y=[-0.916291,-0.693147,-0.510826,-0.357765,-0.223144]; x1=[0.4,0.5,0.6,0.7,0.8];

相关文档
最新文档