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, in: Scientific
Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam,
1983, pages 55–64.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2