考虑如下的一阶微分方程:
$\frac{dx}{dt}=f(x,t)$
选取小的h,有如下结果:
$\frac{dx}{dt}=f(x,t)=\frac{x(t+h)-x(t)}{h}=\frac{x_k-x_{k-1}}{h}$
重写为如下形式:
$x_k=x_{k-1}+hf(x,t)$
使用下面的二阶线性微分方程作为例子:
$\frac{d^2x}{dt^2}=-\omega ^2x$
初始条件:
$x(0)=0$
$\frac{dx}{dt}=\omega$
其解析解为$x=\sin{\omega t}$
matlab程序如下(请忽视作为一个初学者的糟糕语法)
% Euler numerical integration for d(dx/dt)/dt = -omega*omega*x
w = 2; % w is omegax = zeros(1, 1000); % x init condition:=0xd = w; % xd = dx/dt, init condition:=wh=0.01; % step sizeloop_times = 1;for t = 0:h:9.99 xdd = -w * w * x(loop_times); xd = xd + h*xdd; x(loop_times + 1) = x(loop_times) + h*xd; loop_times = loop_times + 1;endplot(x);hold on; % put the following curve on the same plott = 0:h:9.99;plot(sin(w*t));