我對Python和Numpy很陌生,所以我很抱歉如果我在這裏丟失了一些明顯的東西。Python Numpy錯誤:使用序列設置數組元素
我有2求解微分方程的系統功能:
import numpy as np
import numpy.linalg as la
def solve_ode(x0, a0, beta, t):
At = np.array([[0.23*t, (-10**5)*t], [0, -beta*t]], dtype=np.float32)
# get eigenvalues and eigenvectors
evals, V = la.eig(At)
Vi = la.inv(V)
# get e^At coeff
eAt = V @ np.exp(evals) @ Vi
xt = eAt*x0
return xt
然而,與此代碼運行它:
import matplotlib.pyplot as plt
# initial values
x0 = 10**6
a0 = 2.5
beta = 0.05
t = np.linspace(0, 3600, 360)
plt.semilogy(t, solve_ode(x0, a0, beta, t))
...拋出這個錯誤:
ValueError: setting an array element with a sequence.
在這一行:
At = np.array([[0.23*t, (-10**5)*t], [0, -beta*t]], dtype=np.float32)
請注意,t
和beta
應該是floats
。我認爲Python可能無法推斷出這一點,但我不知道該如何做到這一點......
Thx提前尋求幫助。
如果** t **是標量**在**變爲2x2數組。現在的問題是,當您製作** t **數字列表時,Numpy不知道該做什麼。它不能用數組填充單元格。那就是爲什麼你會得到價值錯誤。 由於我不是一個物理/數學專業,我不知道如何適當的解決方案。爲每個** t **值運行solve_ode()的想法是什麼?或者應該**在**以特定方式成長? –