【发布时间】:2012-04-15 19:17:11
【问题描述】:
我有这个程序,它将求解一个微分方程组,这样每次 for 循环迭代时都会产生两个值 xi 和 yi。有什么方法可以在生成这些值时绘制它们,而不是等待计算完成,然后将它们全部绘制出来?
【问题讨论】:
-
想想如何打印出每次迭代计算的值。当程序到达告诉它的行时,程序将打印出来以控制台当前迭代的结果。将此逻辑应用于您正在显示的二维图形。您需要做的就是在每次迭代结束时更新图表。
我有这个程序,它将求解一个微分方程组,这样每次 for 循环迭代时都会产生两个值 xi 和 yi。有什么方法可以在生成这些值时绘制它们,而不是等待计算完成,然后将它们全部绘制出来?
【问题讨论】:
您可能想看看 matplotlib (http://matplotlib.sourceforge.net/) 或 gnuplot.py (http://gnuplot-py.sourceforge.net/)。完成后,我使用这些来绘制数据,但我看不出为什么在生成数据时不能这样做。但是,根据循环执行的速度,这可能会减慢整个程序的速度。
gnuplot 可能不再维护,但我一直在使用它,没有任何问题。
【讨论】:
假设您的算法如下所示:
import matplotlib
x_list = []
y_list = []
while True:
xi, yi = compute() # calculates your xi and yi value
if converged(xi, yi):
break
# capture history of your xi and yi
x_list.append(xi)
y_list.append(yi)
matplotlib.pyplot.plot(x, y) # create a graph representing x and y
【讨论】: