我试图编写一个程序,它将使用不同的方式集成一个函数(Euler,Runge ......)并使用内置函数scipy.integrate.odeint。
所有内容和我都能获得正确的结果,但我还需要创建一个包含结果的图表,以及当出现问题时的结果。 对于odeint函数,我无法绘制图形。 这是我的代码和错误,我希望有人能够帮助我。
def odeint(phi, t0tf, Y0, N):
T6=numpy.zeros((N+1))
T6[0]=t0tf[0]
h=(t0tf[1]-t0tf[0])/N
for i in range (N):
T6[i+1]=T6[i]+h
def f(t,x):
return phi(x,t)
Y6 = scipy.integrate.odeint(f,Y0,T6, full_output=True)
return Y6
Y6 = edo.odeint(phi, t0tf, Y0, N)
T6Y6 = numpy.hstack([Y6])
print("Solutions Scipy :")
print()
print(T6Y6)
print()
mpl.figure("Courbes")
mpl.plot(Y6[0:N,0],Y6[0:N,1],color="yellow",label="Isoda")
mpl.show()
错误是:
mpl.plot(Y6[0:N,0],Y6[0:N,1],color="yellow",label="Isoda")
TypeError: tuple indices must be integers, not tuple
提前致谢(PS:我是法国人,所以我的句子可能有些不稳定)
答案 0 :(得分:0)
Y6
似乎是一个以错误方式调用的元组。由于您没有提供数据,因此很难指出确切的错误,但以下示例向您展示了如何从tuple调用元素:
y = ((1,2,3,4,5),)
print('This one works: ',y[0][1:])
print(y[1:,0])
,结果如下:
This one works: (2, 3, 4, 5)
Traceback (most recent call last):
File "E:\armatita\stackoverflow\test.py", line 9, in <module>
print(y[1:,0])
TypeError: tuple indices must be integers, not tuple