如何修复错误:func 返回的数组必须是一维的,但得到 ndim=2



这是我的代码:

import numpy as np
from scipy.integrate import odeint
import math
y0=np.array([1,3,2,3,5])
b=np.array([[1],[3],[4],[2],[5]])
'''generate matrix'''
B=np.dot(b,b.T)
def g(t,y,B):
    return np.exp(np.dot(y,B))
t=np.linspace(0,1,100)
y= odeint(g, y0, t, args=(B,))

错误是

"func 返回的数组必须是一维的,但得到 ndim=2。">

尝试将函数参数的顺序更改为 def g(y,t,B(。这使得错误消息消失了。您需要验证数学是否按预期执行

odeint的文档说:"f(t,y,...(的前两个参数顺序相反...">

函数的输出数组取决于输入的内容。

要确保初始条件是一维的,可以重塑 y0 数组。

y0_reshaped = y0.reshape(n,)

其中 n 是 y0 向量中的元素数

最新更新