欧拉法matlab程序1.Euler法
function [x,y]=naeuler(dyfun,xspan,y0,h)
x=xspan(1):h:xspan(2);
y(1)=y0;
for n=1:length(x)-1
y(n+1)=y(n)+h*feval(dyfun,x(n),y(n));
end
x=x';y=y';
x1=0:0.2:1;y1=(1+2*x1).^0.5;
plot(x,y,x1,y1)
>> dyfun=inline('y-2*x/y');
[x,y]=naeuler(dyfun,[0,1],1,0.2...
1.Euler法
function [x,y]=naeuler(dyfun,xspan,y0,h)
x=xspan(1):h:xspan(2);
y(1)=y0;
for n=1:length(x)-1
y(n+1)=y(n)+h*feval(dyfun,x(n),y(n));
end
x=x';y=y';
x1=0:0.2:1;y1=(1+2*x1).^0.5;
plot(x,y,x1,y1)
>> dyfun=inline('y-2*x/y');
[x,y]=naeuler(dyfun,[0,1],1,0.2);[x,y]
ans =
0 1.0000
0.2000 1.2000
0.4000 1.3733
0.6000 1.5315
0.8000 1.6811
1.0000 1.8269
2.隐式Euler法
function [x,y]=naeulerb(dyfun,xspan,y0,h)
x=xspan(1):h:xspan(2);
y(1)=y0;
for n=1:length(x)-1
y(n+1)=iter(dyfun,x(n+1),y(n),h);
end
x=x';y=y';
x1=0:0.2:1;y1=(1+2*x1).^0.5;
plot(x,y,x1,y1)
function y=iter(dyfun,x,y,h)
y0=y;e=1e-4;K=1e+4;
y=y+h*feval(dyfun,x,y);
y1=y+2*e;k=1;
while abs(y-y1)>e
y1=y;
y=y0+h*feval(dyfun,x,y);
k=k+1;
if k>K
error('迭代发散');
end
end
>> dyfun=inline('y-2*x/y');
[x,y]=naeulerb(dyfun,[0,1],1,0.2);[x,y]
ans =
0 1.0000
0.2000 1.1641
0.4000 1.3014
0.6000 1.4146
0.8000 1.5019
1.0000 1.5561
3.改进Euler法
function [x,y]=naeuler2(dyfun,xspan,y0,h)
x=xspan(1):h:xspan(2);
y(1)=y0;
for n=1:length(x)-1
k1=feval(dyfun,x(n),y(n));
y(n+1)=y(n)+h*k1;
k2=feval(dyfun,x(n+1),y(n+1));
y(n+1)=y(n)+h*(k1+k2)/2;
end
x=x';y=y';
x1=0:0.2:1;y1=(1+2*x1).^0.5;
plot(x,y,x1,y1)
>> dyfun=inline('y-2*x/y');
[x,y]=naeuler2(dyfun,[0,1],1,0.2);[x,y]
ans =
0 1.0000
0.2000 1.1867
0.4000 1.3483
0.6000 1.4937
0.8000 1.6279
1.0000 1.7542
本文档为【欧拉法matlab程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。