2012-04-15 10 views
-1

forループの繰り返しのたびに2つの値xi、yiが生成されるような微分方程式の系を解くプログラムです。計算を完了するのを待つ代わりに、これらの値をプロットする方法がありますか?Pythonでの結果のリアルタイム表示

+0

あなたは各繰り返しで計算された値をプリントアウトする方法を考えてみてください。プログラムは、現在の反復の結果が出力された行に到達すると、その結果をコンソールに出力します。このロジックを表示している2次元グラフに適用します。各繰り返しの最後にグラフを更新するだけです。 – Jkh2

答えて

0

matplotlib(http://matplotlib.sourceforge.net/)またはgnuplot.py(http://gnuplot-py.sourceforge.net/)をご覧ください。私はこれらを使ってデータをプロットしましたが、データを生成している間にこれを行うことができない理由はありません。しかし、ループの実行速度によっては、プログラム全体が遅くなる可能性があります。

gnuplotはもはやメンテナンスされていないかもしれませんが、問題なく使用しています。

+0

私はそれらを前に使ったことがありますが、あなたが言うように、すでに計算された値をプロットするだけです。ポイントの計算が表示の更新よりも速くなると、計算されたポイントの一部しか表示されないことが理想的でしょう –

+0

1つのアプローチでは、ループをコードすることができます(たとえば、mod演算子を使用) 。つまり、すべての値をプロットするのではなく、データの生成時にデータのサブセットをサンプリングするだけです。 – Levon

+0

たとえば、ループ内の5番目ごとの値をプロットするには、ループを通過するたびに増加するカウンタ(たとえば、カウント)を維持します。そうですね、次のようなものがあります:count%5:plot_values(xi、yi) – Levon

0

のは、あなたのアルゴリズムは次のようになりましょう:

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 
+0

計算。私が必要とするのは、それが吐き出されるたびにポイントをプロットすることです。 (最後の行がインデントされているように、それは面倒です) –

関連する問題