MATLAB题,用到欧拉公式求微分方程的数值解

2025-06-21 19:01:15
推荐回答(1个)
回答1:

%欧拉法解一阶常微分方程

%例子dy/h=-y+x+1

%f=inline('-y+x+1','x','y');   %微分方程的右边项


f = inline('x-2*y','x','y');

y0 = 2;         %初始条件

h = 0.025;      %步长

xleft = 0;      %区域的左边界

xright = 1;     %区域的右边界

x = xleft:h:xright;

n = length(x);    


%前向欧拉法

y = y0;

for i=2:n

    y(i)=y(i-1)+h*f(x(i-1),y(i-1));  

end

plot(x,y,'ro');

hold on;


%改进欧拉法

y = y0;

for i=2:n

    y(i)=y(i-1)+h/2*( f(x(i-1),y(i-1))+f(x(i),y(i-1))+h*(f(x(i-1),x(i-1))));  

end

plot(x,y,'g+');


%精确解用作图

xx = x;

f = dsolve('Dy=x-2*y','y(0)=2','x');%求出解析解

y = subs(f,xx); %将xx代入解析解,得到解析解对应的数值


plot(xx,y);

legend('前向欧拉法','改进欧拉法','解析解');