龙格现象的matlab实现 下载本文

内容发布更新时间 : 2024/5/2 9:36:10星期一 下面是文章的全部内容请认真阅读。

利用MATLAB分析数值积分中的龙格(Runge)现象(1)

(2012-12-10 10:44:21)

原文地址:利用MATLAB分析数值积分中的龙格(Runge)现象(1)作者:月之幽境

实验目的: 观察Lagrange插值及数值积分中的龙格(Runge)现象。了解数值不稳定现象。

实验题目:(1)对于函数f(x)=1/(1+x^2),-4<=x<=4进行Lagrange插值。取不同结点数n,在区间[-4,4]上取等距间隔的结点为插值点,把f(x)和插值多项式的曲线画在同一张图上进行比较。(2)利用复化矩形或梯形公式计算

f(x)=1/(1+x^2),-4<=x<=4在定义区间上的数值积分值,说明Runge现象。

(先完成题目(1),题目(2)下次续上。)

在同一目录下编制一下的函数:f.m,langrange.m,runge1.m。 下面贴出每个文件的内容清单。 f.m:

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

langrange.m:

function langrange= langrange( x,n ) langrange=0;

xx=linspace(-4,4,n+1); for i=1:n+1 lix=1;

for j=1:n+1 if j~=i

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

langrange=f(xx(i)).*lix+langrange;

end end

runge1.m:

function runge1(n)

%n为Langrange差值节点的个数 x=linspace(-4,4,100);

plot(x,f(x),x,langrange(x,n)); end

工作目录为上面的文件所在目录,在命令窗口输出一下的命令: subplot(4,4,1),runge1(1),title('1个节点'); subplot(4,4,2),runge1(2),title('2个节点'); subplot(4,4,3),runge1(3),title('3个节点'); subplot(4,4,4),runge1(4),title('4个节点'); subplot(4,4,5),runge1(5),title('5个节点'); subplot(4,4,6),runge1(6),title('6个节点'); subplot(4,4,7),runge1(7),title('7个节点'); subplot(4,4,8),runge1(8),title('8个节点'); subplot(4,4,9),runge1(9),title('9个节点'); subplot(4,4,10),runge1(10),title('10个节点'); subplot(4,4,11),runge1(11),title('11个节点'); subplot(4,4,12),runge1(12),title('12个节点'); subplot(4,4,13),runge1(13),title('13个节点'); subplot(4,4,14),runge1(14),title('14个节点'); subplot(4,4,15),runge1(15),title('15个节点'); subplot(4,4,16),runge1(16),title('16个节点')

运行结果:

分析结果:

16幅分别为差值节点从1到16个的原函数的图像与Langrange差值多项式的图像。看图可知,当节点数较小时,逼近效果并不好,随着节点数的增多,逼近效果似乎越来越好。但是当节点数再增多时,在接近区间两边附近误差越来越大,逼近效果越来越差,这就是龙格现象。

1.

实验目的:

观察拉格朗日插值的龙格(Runge)现象.。 2. 实验内容: 对于函数211 )(x xf??

进行拉格朗日插值,

取不同的节点数n,在区间[-5,5]上取等距间隔的节点为插值点,把f(x)和插值多项式的曲线画在同一张图上进行比较。 具体步骤如下: 1)、编写拉格朗日插值函数(并将其存到当前路径的M文件中) function y=lagrange(x0,y0,x) n=length(x0);m=length(x); for i=1:m