拉格朗日插值、牛顿插值的matlab代码

时间:2025-07-06

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

实验五 多项式插值逼近

信息与计算科学金融 崔振威 201002034031

一、 实验目的:

拉格朗日插值和牛顿插值的数值实现 二、 实验内容:p171.1、p178.1、龙格现象数值实现 三、 实验要求:

1、 根据所给题目构造相应的插值多项式, 2、 编程实现两类插值多项式的计算 3、 试分析多项式插值造成龙格现象的原因

主程序

1、拉格朗日

function [c,l]=lagran(x,y)

%c为多项式函数输出的系数 %l为矩阵的系数多项式 %x为横坐标上的坐标向量 %y为纵坐标上的坐标向量 w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1;

for j=1:n+1

if k~=j

v=conv(v,poly(x(j)))/(x(k)-x(j)) %对多项式做卷积运算 end end l(k,:)=v; end c=y*l;

牛顿插值多项式主程序

function [p2,z]=newTon(x,y,t)

%输入参数中x,y为元素个数相等的向量 %t为插入的定点

%p2为所求得的牛顿插值多项式

%z为利用多项式所得的t的函数值。 n=length(x); chaS(1)=y(1); for i=2:n

x1=x;y1=y; x1(i+1:n)=[];

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

y1(i+1:n)=[]; n1=length(x1); s1=0; for j=1:n1 t1=1;

for k=1:n1

if k==j %如果相等则跳出循环 continue; else

t1=t1*(x1(j)-x1(k)); end end

s1=s1+y1(j)/t1; end chaS(i)=s1; end

b(1,:)=[zeros(1,n-1) chaS(1)];

cl=cell(1,n-1); %cell定义了一个矩阵 for i=2:n u1=1;

for j=1:i-1

u1=conv(u1,[1 -x(j)]); %conv()用于多项式乘法、矩阵乘法 cl{i-1}=u1; end

cl{i-1}=chaS(i)*cl{i-1}; b(i,:)=[zeros(1,n-i),cl{i-1}]; end

p2=b(1,:); for j=2:n

p2=p2+b(j,:); end

if length(t)==1 rm=0; for i=1:n

rm=rm+p2(i)*t^(n-i); end z=rm; else

k1=length(t); rm=zeros(1,k1); for j=1:k1

for i=1:n

rm(j)=rm(j)+p2(i)*t(j)^(n-i); end

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

z=rm; end end

plot(t,z,'y',x,y,'*r') %输出牛顿插值多项式的函数图

p171.1

(a) 、f(x)=ex

解:在matlab窗口中输入:

>> x=[0 0.2 0.4 0.6 0.8 1];

>> y=[exp(0) exp(0.2) exp(0.4) exp(0.6) exp(0.8) exp(1)] y =

1.0000 1.2214 1.4918 1.8221 2.2255

>> [c,l]=lagran(x,y)

可以得出输出结果为:

c =

0.0139 0.0349 0.1704 0.4991 1.0001 l =

-26.0417 78.1250 -88.5417 46.8750 -11.4167 130.2083 -364.5833 369.7917 -160.4167 25.0000 -260.4167 677.0833 -614.5833 222.9167 -25.0000 260.4167 -625.0000 510.4167 -162.5000 16.6667 -130.2083 286.4583 -213.5417 63.5417 -6.2500 26.0417 -52.0833 36.4583 -10.4167 1.0000

由输出结果可以的出:P(x)的系数分别为:

a0=0.0139 a1=0.0349 a2=0.1704 a3=0.4991

2.7183 1.0000 1.0000 0 0 0 0 0 a4=1.0001 a5=1.0000

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

(b) 、f(x)=sin(x)

解:在matlab窗口中输入:

>> x=[0 0.2 0.4 0.6 0.8 1];

>> y=[sin(0) sin(0.2) sin(0.4) sin(0.6) sin(0.8) sin(1)]; >> [c,l]=lagran(x,y)

可以得出输出结果为: c =

0.0073 0.0016 -0.1676 0.0002 1.0000 0 l =

-26.0417 78.1250 -88.5417 46.8750 -11.4167 130.2083 -364.5833 369.7917 -160.4167 25.0000 -260.4167 677.0833 -614.5833 222.9167 -25.0000 260.4167 -625.0000 510.4167 -162.5000 16.6667 -130.2083 286.4583 -213.5417 63.5417 -6.2500 26.0417 -52.0833 36.4583 -10.4167 1.0000

由输出结果可以的出:P(x)的系数分别为:

a0=0.0073 a1=0.0016 a2=-0.1676 a3=0.0002

(c) 、f(x)=(x+1)x+1

解:在matlab窗口中输入:

>> x=[0 0.2 0.4 0.6 0.8 1];

>> y=[1 1.2^1.2 1.4^1.4 1.6^1.6 1.8^1.8 2^2]; >> [c,l]=lagran(x,y)

可以得出输出结果为: c =

0.3945 -0.0717 0.7304 0.9415 1.0052 l =

-26.0417 78.1250 -88.5417 46.8750 -11.4167 130.2083 -364.5833 369.7917 -160.4167 25.0000 -260.4167 677.0833 -614.5833 222.9167 -25.0000 260.4167 -625.0000 510.4167 -162.5000 16.6667 -130.2083 286.4583 -213.5417 63.5417 -6.2500 26.0417 -52.0833 36.4583 -10.4167 1.0000

1.0000 0 0 0 0 0 a4=1.0000 1.0000 1.0000 0 0 0 0 0 a5=0

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

由输出结果可以的出:P(x)的系数分别为:

a0=0.3945 a1=-0.0717 a2=0.7304 a3=0.9415 a4=1.0052 a5=1.0000

P178.1

2、a0=5 a1=-2 a2=0.5 a3=-0.1 a4=0.003 x0=0 x1=1 x2=2 x3=3 c=2.5 解:在matlab窗口中输入: >> x=[5 -2 0.5 -0.1]; >> y=[0 1 2 3]; >> t=0:0.1:2.5; >> [u,v]=newTon(x,y,t)

可得出输出结果:

u =

0.1896 -0.7843 -1.3928 2.8688

v =

2.8688 2.7218 2.5603 2.3855 2.1983 1.3497 1.1182 0.8813 0.6401 0.3957 -0.5908 -0.8340 -1.0735 -1.3082 -1.5370 -2.3702 -2.5523

由此可以求出牛顿多项式为:

f(x)=0.1896x^3--0.7843^x2--1.3928x+2.8688

输出的图为:

2.0000 0.1493 -1.7588 1.7917 1.5745 -0.0980 -0.3451 -1.9723 -2.1765

拉格朗日插值、牛顿插值的matlab代码的实现,内有习题

结果分析:

利用牛顿插值多项式的函数,通过调用函数可以求得牛顿多项式与给定的点的值,并 …… 此处隐藏:1648字,全部文档内容请下载后查看。喜欢就下载吧 ……

拉格朗日插值、牛顿插值的matlab代码.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219