首页 > 解决方案 > ODES:ValueError:使用序列设置数组元素

问题描述

我正在尝试在 python 中定义以下 ODES 系统: 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:使用序列设置数组元素。

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

标签: pythonodedifferential-equationsvalueerror

解决方案


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

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

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

推荐阅读