ODES: ValueError: setting an array element with a sequence

ODES: ValueError: setting an array element with a sequence

我正在尝试在 python 中定义以下 ODES 系统:

这样:

def rhs(t, P):
    dP = np.zeros_like(P)
    dP[0] = np.sqrt((1 - 3 / P) * (2 + 4 / P**2))
    dP[1] = 1 / math.pow(P,2)
    return dP

但是,我收到一个错误:

ValueError: setting an array element with a sequence.

我不确定是什么问题...如果有任何帮助,我们将不胜感激!

显然,您的状态 P 有 2 个组件。因此,您从 P 计算出的表达式也将具有两个分量。然后您尝试将这些元组分配给数组 dP 中的单个单元格,这是不可能的,并会导致该错误消息。

您可能想用这些表达式中的第一个元素 P[0] 替换 P。或者使用

def rhs(t, u):
    P,phi = u
    dP = ...
    dphi = ...
    return [dP, dphi]