拉格朗日插值、牛顿插值的matlab代码
时间:2025-07-06
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……