Octave解决了多个ODE系统

时间:2014-04-19 07:52:52

标签: octave

我知道我可以使用Octave内置ODE求解器来解决ODE系统。现在我想解决具有相同结构但具有不同系数的多个ODE系统。例如,我有以下ODE:

函数xdot = f(x,t)

a = 0.1;

xdot(1) = a * x(1) ^ 2 + x(2);
xdot(2) = x(1) - x(2);

endfunction

初始条件x(1)= 0,t = 0时x(2)= 0。我想在点t = 1得到x(1)和x(2)。我知道我可以使用lsode命令轻松解决这个问题。

现在我想用步骤0.1将值“a”从0.1改为20,即a = [0.1:0.1:20]。所以我可以从不同的“a”得到x(1)和x(2)。我怎么循环?我需要一个全局变量“a”吗?

1 个答案:

答案 0 :(得分:0)

我之前不能说我曾经使用过lsode,但是当我在一个我想改变的功能中有一个变量时,我就是&#39 ; ve必须将它声明为全局变量,然后重新定义函数。像

这样的东西
%doesn't work
f = @(x) a*x+2
for a= 0.1:0.1:20
  f(1)
end

%does work  
for a= 0.1:0.1:20
  f = @(x) a*x+2 %your function here
  %I usually end up using arrayfun() here in my applications, maybe lsode would work?
end  

我不是Octave专家,但这对我有用,所以也许它也适合你。