考虑如下的一阶微分方程:

$\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 omega
x = zeros(1, 1000);   % x init condition:=0
xd = w;                    % xd = dx/dt, init condition:=w
h=0.01;                    % step size
loop_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;
end
plot(x);
hold on;                     % put the following curve on the same plot
t = 0:h:9.99;
plot(sin(w*t));

相关文章:

  • 2022-12-23
  • 2021-07-15
  • 2021-11-19
  • 2022-01-01
  • 2022-12-23
  • 2021-11-09
猜你喜欢
  • 2021-08-15
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-05-19
  • 2021-06-22
相关资源
相似解决方案