2013-03-20 5 views
6

のステップオプションを有効にする問題その後、私はyをプロットパイソン - scipyのダウンロード:ODEモジュール:だから私は、whileループをした <pre><code>solver1.integrate(t_end) </code></pre> <p></p>と:ソルバー私は、私はそれを呼び出すときに、ソルバー自身で撮影したさまざまな統合手順を保存したい

while solver1.successful() and solver1.t < t0+dt: 
    solver1.integrate(t_end,step=True) 
    time.append(solver1.t) 

、ここでは統合との結果が私の問題を来る:Trueにその値を設定するステップオプションを有効に。私はそれが原因でそのようなループか何かであったと思っ

y enabling the step option of the solver

ので、私はstepを削除し、結果を確認:

while solver1.successful() and solver1.t < t0+dt: 
    solver1.integrate(t_end) 

と驚き私が位置する領域に表示される不安定性を持っています。

y disabling the step option of the solver

それが終了しています:..私は正しい結果を持っています奇妙な状況...あなたの人の誰かがこの問題で私を助けることができたら、私は感謝しています。

EDIT:

私はソルバーを設定するには:

solver1 = ode(y_dot,jac).set_integrator('vode',with_jacobian=True) 
solver1.set_initial_value(x0,t0) 

そして、私はあなたがstep=Trueあなたは間接的にvode._integrator.runner(Fortranのサブルーチンを)与えているに設定すると.append()

+0

することができますが、このrunnerことについての詳細を得ることができますコードのいくつかを表示し、ソルバを設定し、プロットの結果を保存する方法を教えてください。 – silvado

+0

もちろん、私は自分の質問を編集しました。 – kuider

+0

プロットにODE状態変数の1つが表示されていると仮定して、プロットしている現在のODE状態を実際にどのように格納しているのかまだわかりません。 – Nikolas

答えて

2

を使用して結果を保存しますitask=2を使用する指示であり、デフォルトはitask=1である。あなたが別のitask=1またはitask=2のために何が起こっているかについての説明を見つけることができませんscipyのダウンロード0.12.0ドキュメントで

r._integrator.runner? 

but you can find it here

ITASK = An index specifying the task to be performed. 
!   Input only. ITASK has the following values and meanings. 
!   1 means normal computation of output values of y(t) at 
!    t = TOUT(by overshooting and interpolating). 
!   2 means take one step only and return. 
!   3 means stop at the first internal mesh point at or 
!    beyond t = TOUT and return. 
!   4 means normal computation of output values of y(t) at 
!    t = TOUT but without overshooting t = TCRIT. 
!    TCRIT must be input as RUSER(1). TCRIT may be equal to 
!    or beyond TOUT, but not behind it in the direction of 
!    integration. This option is useful if the problem 
!    has a singularity at or beyond t = TCRIT. 
!   5 means take one step, without passing TCRIT, and return. 
!    TCRIT must be input as RUSER(1).