【发布时间】:2016-03-12 10:24:16
【问题描述】:
odeint 有问题。我必须解决一阶微分系统,然后是二阶系统,但我对一阶系统有点困惑。你能解释一下我标记为错误的地方吗?谢谢你:)
import scipy.integrate as integrate
import numpy as np
def fun(t,y):
ys = np.array([y[1], (1-y[0]**2)*y[1]-y[0]])
return(ys)
N = 3
x0 = np.array([2.00861986087484313650940188,0])
t0tf = [0, 17.0652165601579625588917206249]
T=([0 for i in range (N+1)])
T[0]= t0tf[0]
Pas = (t0tf[1]-t0tf[0])/N
for i in range (1,N+1):
T[i]= t0tf[0] + i*Pas
X = integrate.odeint(fun, x0,T,Dfun=None, col_deriv=0,full_output=True)
T = np.array(T)
T = T.reshape(N+1,1)
S = np.append(X,T,axis=1)
print(S)
返回的错误是:
ys = np.array([y[1], (1-y[0]**2)*y[1]-y[0]])
TypeError: 'float' 对象不可下标
【问题讨论】:
-
你看过stackoverflow.com/questions/27820725/… 吗?
odeint的用法在那里得到了相当广泛的解释。 -
是的,我已经检查过了,但事实是我认为我的函数定义有问题,但我找不到它在哪里......因为这个函数在我的欧拉和龙格库塔算法
-
感谢您对拼写的帮助,我还在学习英语,但我一点也不擅长:p
-
我建议您将数据结构简化为工作示例中的数据结构,然后从那里开始。如果您还不知道自己在做什么,请尝试运行该程序并将其应用于您的问题。
标签: python numpy scipy ode numerical-integration