保存每次迭代的结果

时间:2018-12-19 06:27:27

标签: python loops matplotlib

你好,我是python的新手,我需要从for循环中获取每次迭代的输出。我正在运行两个for循环。我需要分别获取2nd for循环的输出,以便可以在单个窗口中绘制整个图。目前,我正在分别获得输出。谁能帮助我解决问题?

import numpy as np
import matplotlib
from matplotlib import pyplot as plt
from matplotlib.figure import Figure

x= [2,6,9,12]
y= [3,7,12,18]
T= [0,4,5,8]

x_s= x[0]
y_s= y[0]

v_f= 0
N= 3

for i in range(N):
    v_i = 0

    a3= []
    a4= []
    a5= []

    for j in range(T[i]):
        a0= x[j]
        a1= v_i

        X= np.array([[1,T[j],T[j]**2],
                     [1,T[j+1],T[j+1]**2],
                     [0,1,2*T[j]]])

        A= np.array([x[j],x[j+1],v_i])

        c1= np.linalg.solve(X,A)
        a0= c1[0]
        a1= c1[1]
        a2= c1[2]

        v_i= a1 + 2*a2*T[j+1]

        t= np.linspace(T[j],T[j+1])

        print( a0,a1,a2)
        print (v_i)

        a3.append(a0)
        a4.append(a1)
        a5.append(a2)

        xr= a0 + a1*t + a2*t**2

        f1=plt.figure()
        ax = f1.add_subplot(232)

        ax.plot(t,xr)
        plt.show()

1 个答案:

答案 0 :(得分:0)

好吧,您是否运行了确切的代码?我得到

Traceback (most recent call last):
  File "test.py", line 36, in <module>
    [1,T[j+1],T[j+1]**2],

IndexError: list index out of range

无论如何,您需要将plt.figure()plt.show()分别放在for loop之前和之后,但要放在外面(注意缩进)。否则,您将在每次迭代时创建一个新图形,并在该图形上放置与该迭代相关的子图。