저는 Python과 Numpy에 대해 매우 익숙합니다. 그래서 여기서 분명히 분명한 점이 있다면 사과드립니다.Python Numpy 오류 : 배열 요소를 시퀀스로 설정하기
는 I 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
을 :
ValueError: setting an array element with a sequence.
:
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))
을 ...이 오류가 발생
이 줄에 :
At = np.array([[0.23*t, (-10**5)*t], [0, -beta*t]], dtype=np.float32)
t
및 beta
은 floats
입니다. 나는 파이썬이 이것을 추론 할 수 없을지도 모르지만 어떻게 할 수 있을지 모르겠다. ...
당신의 도움을 위해서 미리 Thx.
** ** t **가 스칼라 인 경우 **에서 **는 2x2 배열이됩니다. 이제 문제는 당신이 숫자 목록을 만들 때 할아버지가 무엇을해야 할지를 모른다는 것입니다. 배열로 셀을 채울 수 없습니다. 그런 이유로 당신은 가치 오류를 얻습니다. 저는 Physics/Maths 전공이 아니기 때문에 적절한 해결책이 어떻게 생겼는지 모르겠습니다. ** t **의 각 값에 대해 solve_ode()를 실행하는 아이디어입니까? 또는 ** ** 특정 방식으로 성장해야합니까? –