MATLAB题,用到欧拉公式求微分方程的数值解 80
%欧拉法解一阶常微分方程
%例子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('前向欧拉法','改进欧拉法','解析解');