代码之家  ›  专栏  ›  技术社区  ›  Rui Nian

如何只将一个参数传递给odeint?

  •  1
  • Rui Nian  · 技术社区  · 8 年前

    我想用scipy的 odeint 解一些常微分方程。唯一的问题是我只想定义一个参数,而要创建一个元组,至少需要两个值。

    我的代码如下所示:

    def system(state, t, inputs)
    
        x = state[0]
        u = inputs
        a = -4
        b = 2
    
        dxdt = [a * x + b * u]
    
        return dxdt
    
    inputs = 5
    x_next = odeint(system, x, t, args=(inputs))
    

    这将返回一个错误,因为 args 必须是元组,(inputs)是int/float而不是元组。克服这个问题的一个方法是把a,b作为args的一部分。但那只是伤口上的绷带。

    1 回复  |  直到 8 年前
        1
  •  4
  •   Cleb    8 年前

    正如错误所说 args 必须是一个 tuple

    args=(inputs,)
    

    注意附加的逗号。