2016-12-28 3 views
0

私は初心者ですが、ode 'dopri5'を使用して関数を統合したいと思います。参照はそれほど役に立ちませんでした。私は認識していないというエラーがあります。だから、もともと私はodeintを使っていましたが、うまくいきました。ode、dopri5メソッドを実行中、エラー:サポートされていないオペランドタイプ 'ode'

Itmp = odeint(te.rhs, Itmp, [xLim[i], xLim[i+1]], mxstep=10000, 
          atol=1e-11, rtol=1e-11, args=(f,))[1] 

そしてdopri5を使用して統合する私の試み、このされています:ここではそのコードの塊がある

Itmp = ode(te.rhs).set_integrator('dopri5', max_step=10000,atol=1e-11, rtol=1e-11) 

私が手にエラーが私がすることを必要としながら、Itmpはタイプ「頌歌」であると言っていますodeintのようなフロートが私に与える。ここで

は特定のエラー、(私はフロートからItmpを減算してみてください)です。

unsupported operand type(s) for -: 'ode' and 'float' 

そして、私はPythonのデバッガを使用してItmpを印刷しようとすると、それは私に

<scipy.integrate._ode.ode object at 0x10d6ab410> 
を与えます

そして私は上記のエラーで停止し続けます。私は正しく書かれたodeコマンドを持っていないと思います。どんな助けでも大歓迎です!

+0

あなたは[mcve]を投稿できますか?それが現れているので、あなたの問題の起源を知るのは難しいです。念頭に置いておくべきことは、あなたの初期条件と積分器オブジェクト(Itmp')に同じ変数名を使用することです。これはひどく悪いことであり、エラーにつながる可能性があります。 – Wrzlprmft

+0

ODE関数の異なる引数の順序を考慮しましたか? 'odeint'は' odefunc(state、time) 'を必要としますが、' ode'は 'odefunc(time、state)'を使います。 – LutzL

答えて

0

odeクラスのコンストラクタの戻り値は、タイプodeのインスタンスオブジェクトです。この時点では、統合は行われていません。そのためには、インテグレータのステップ関数を呼び出す必要があります。ステップの後、新しい状態はodeオブジェクトのyフィールドにあります。

詳細については、odeクラスのドキュメントを参照してください。

初期条件も積分区間の終了も積分器に渡さなかったことに注意してください。

関連する問題