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

How to pass only one argument to odeint?

我正在尝试使用 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))

这将 return 出错,因为 args 必须是元组,并且 (inputs) 是 int/float 而不是元组。克服这个问题的一种方法是将 a、b 作为参数的一部分。但这只是伤口上的创可贴

我想知道是否有任何方法可以将 args 定义为一个值。

正如错误所说 args 必须是 tuple。您可以使用

轻松地将当前版本转换为元组
args=(inputs,)

注意附加的逗号。