龙格现象的matlab实现

2018-11-09 21:48

利用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

z=x(i); L=0.0; for j=1:n T=1.0; for k=1:n if k~=j T=T*(z-x0(k))/(x0(j)-x0(k)); end end

L=T*y0(j)+L; end y(i)=L; end 2)、取不同的n值(注:当n值不同时,间距间隔10/n也在发生改变,程序中只需改变x0=-5:10/n:5中的n值)。现取n分别等于4,6,8,10时,程序分别如下

(1)取n=4, >> x0=-5:10/4:5; >> y0=1./(1+x0.^2); >> x=-5:0.1:5; >> y=lagrange(x0,y0,x); >> y1=1./(1+x.^2);

>> plot(x,y1,'-k') 绘制原函数图象 >> hold on >> plot(x,y,'-.r') >>

(2)取n=6, >> x0=-5:10/6:5; >> y0=1./(1+x0.^2); >> x=-5:0.1:5; >> y=lagrange(x0,y0,x); >> y1=1./(1+x.^2); >> plot(x,y1,'-k') >> hold on >> plot(x,y,'--h') >>

(3)取n=8,

>> x0=-5:10/8:5; >> y0=1./(1+x0.^2); >> x=-5:0.1:5;

>> y=lagrange(x0,y0,x); >> y1=1./(1+x.^2); >> plot(x,y1,'-k') >> hold on >> plot(x,y,'--g') >>

(4)取n=10,

>> x0=-5:1:5;

>> y0=1./(1+x0.^2); >> x=-5:0.1:5;

>> y=lagrange(x0,y0,x); >> y1=1./(1+x.^2); >> plot(x,y1,'-k') >> hold on >> plot(x,y,'--m') >>

(5)依次输入上述程序,将f(x)

和取不同节点数的插值多项式的曲线画在同一 张图上进行比较。


龙格现象的matlab实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初中一般现在时的用法和练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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