谁能提供一下欧拉方法的matlab代码

来源:百度知道 编辑:UC知道 时间:2024/05/13 05:43:06
方程dy/dx + y=1, 初始条件y(1)=0,
范围1<=x<=1.9, step h=0.1

分别求出真值,欧拉方法得到的结果,绝对误差,相对误差

%步长h=0.01时,误差会减小。

function euler
clc;clear;
h=0.1;x0=1;y0=0;k=0;
x=x0;y=y0;xfinal=1.9;
f=inline('1-y')
while x<xfinal
k=k+1;
y=y+h*feval(f,y);
Y(:,k)=y;
x=x+h;
end
t=x0:h:xfinal
Y=[0,Y]
y=dsolve('Dy=1-y','y(1)=0');%解析解,即真值
y=subs(y)
error_ab=Y-y
error_re=(Y-y)./y

结果:
t =

1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000

Y =

0 0.1000 0.1900 0.2710 0.3439 0.4095 0.4686 0.5217 0.5695 0.6126

y =

0.0000 0.0952 0.1813 0.2592 0.3297 0.3935 0.4512 0.5034 0.5507 0.5934

error_ab =

-0.0000 0.0048 0.0087 0.0118 0.0142 0.0160 0.0174 0.0183 0.0189 0.0191

error_re =

-1.0000 0.0508 0.0482 0.0456