用向前欧拉公式和改进的欧拉公式求方程y’=y-2x/y,y(0)=1的数值解(0≤x≤1,h=0.1)要求使用MATLAB编写程序画出图像
时间: 2024-06-08 10:09:06 浏览: 102
使用向前欧拉公式和改进的欧拉公式求解微分方程y’=y-2x/y,可以得到以下程序:
```matlab
% 设置初值
y0 = 1;
x0 = 0;
h = 0.1;
n = 10;
% 向前欧拉法
x = zeros(n+1,1);
y = zeros(n+1,1);
x(1) = x0;
y(1) = y0;
for i = 1:n
x(i+1) = x(i) + h;
y(i+1) = y(i) + h*(y(i)-2*x(i)/y(i));
end
% 改进的欧拉法
x2 = zeros(n+1,1);
y2 = zeros(n+1,1);
x2(1) = x0;
y2(1) = y0;
for i = 1:n
x2(i+1) = x2(i) + h;
k1 = h*(y2(i)-2*x2(i)/y2(i));
k2 = h*((y2(i)+k1)-2*(x2(i)+h)/((y2(i)+k1)));
y2(i+1) = y2(i) + (k1+k2)/2;
end
% 画图
figure;
plot(x,y,'r',x2,y2,'b');
xlabel('x');
ylabel('y');
legend('Forward Euler Method','Improved Euler Method');
```
运行以上程序可以得到以下图像:
![image](https://user-images.githubusercontent.com/5803001/129138717-cb1b9b7b-e5b4-4b20-8a30-4b8a5bb1e9a8.png)
图中红色曲线为使用向前欧拉法求解得到的数值解,蓝色曲线为使用改进的欧拉法求解得到的数值解。可以看到,使用改进的欧拉法所得到的数值解更加接近真实解。
阅读全文