元组索引必须是整数而不是元组,matplot

时间:2016-04-08 18:43:12

标签: numpy matplotlib graph tuples

我试图编写一个程序,它将使用不同的方式集成一个函数(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:我是法国人,所以我的句子可能有些不稳定)

1 个答案:

答案 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