1.2.5 积分微分方程

Octave 内置了求解如下形式非线性微分方程的函数:

dx
-- = f (x, t)
dt

初始条件为:

x(t = t0) = x0

要让 Octave 对此类形式的方程进行积分,您必须首先提供函数 f(x,t) 的定义。 这很直接,可以通过在命令行直接输入函数体来完成。例如,以下 命令定义了一组有趣的非线性微分方程的右侧函数。 请注意,在输入函数时,Octave 会显示不同的提示符,表示它 正在等待您完成输入。

octave:1> function xdot = f (x, t)
>
>  r = 0.25;
>  k = 1.4;
>  a = 1.5;
>  b = 0.16;
>  c = 0.9;
>  d = 0.8;
>
>  xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
>  xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);
>
> endfunction

给定初始条件:

octave:2> x0 = [1; 2];

以及作为列向量的一组输出时间点(请注意,第一个 输出时间点对应上面给出的初始条件):

octave:3> t = linspace (0, 50, 200)';

就可以轻松地对这组微分方程进行积分:

octave:4> x = lsode ("f", x0, t);

函数 lsode 使用 Livermore 常微分方程求解器,详见 A. C. Hindmarsh, "ODEPACK, a Systematized Collection of ODE Solvers", Scientific Computing, R. S. Stepleman 等人 (编), North-Holland, Amsterdam, 1983, 第 55–64 页。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2