使用Euler法求解微分方程的代码如下:
function [T,Y] = euler_method(f, tspan, y0, N)
h = (tspan(2)-tspan(1))/N;
T = tspan(1):h:tspan(2);
Y = zeros(1,N+1);
Y(1) = y0;
for i=1:N
Y(i+1) = Y(i) + h*f(T(i), Y(i));
end
end
其中,f为微分方程的函数句柄,tspan为时间范围,y0为初始值,N为步数。
比较Euler法和ode23函数的求解结果可以使用以下代码:
% 定义微分方程和初值
fun = @(t,y) 4*exp(0.8*t)-0.5*y;
y0 = 2;
% Euler法求解
N = 100;
[T_euler, Y_euler] = euler_method(fun, [0,10], y0, N);
% ode23函数求解
[T_ode23, Y_ode23] = ode23(fun, [0,10], y0);
% 绘制图像
figure
plot(T_euler, Y_euler, 'r', T_ode23, Y_ode23, 'b--')
legend('Euler法', 'ode23函数')
运行代码后,可以得到Euler法和ode23函数求解结果的比较图像。
% 定义微分方程和初值
fun = @(t,y) 4*exp(0.8*t)-0.5*y;
y0 = 2;
% Euler法求解
N = 100;
[T_euler, Y_euler] = euler_method(fun, [0,10], y0, N);
% ode23函数求解
[T_ode23, Y_ode23] = ode23(fun, [0,10], y0);
% 绘制图像
figure
plot(T_euler, Y_euler, 'r', T_ode23, Y_ode23, 'b--')
legend('Euler法', 'ode23函数')