【问题标题】:Octave solve multiple ODE systemsOctave 求解多个 ODE 系统
【发布时间】:2014-04-19 07:52:51
【问题描述】:

我知道我可以使用 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);

结束函数

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

现在我想将值“a”从 0.1 更改为 20,步长为 0.1,即 a=[0.1:0.1:20]。所以我可以从不同的“a”中得到 x(1) 和 x(2)。我如何循环执行此操作?我需要一个全局变量“a”吗?

【问题讨论】:

    标签: octave


    【解决方案1】:

    我不能说我以前用过lsode,但是当我想要更改函数中的变量时,我必须将其声明为全局变量,然后重新定义功能。类似的东西

    %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 专家,但这对我有用,所以也许它也对你有用。

    【讨论】:

    • 我猜全局变量正在工作。我发现我也可以将要更改的变量作为参数传递给函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多