我知道我可以使用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”吗?
答案 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专家,但这对我有用,所以也许它也适合你。