告别年代

阳光里闪耀的色彩真美丽

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

$\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));

posted on 2017-04-15 15:23  告别年代  阅读(267)  评论(0编辑  收藏  举报