2017-04-19 14 views
2

最も単純な形式でscipy.integrate.ode.integrate(t)関数を使用する方法はわかりましたが、APIには2つのオプション引数、つまりsteprelaxが必要です。現在のdocumentationにはこれらの引数に関する情報がなく、exampleで使用されていません。私は彼らが何をしているのか、それが有用ないくつかのケースは何か?scipy.integrate.ode.integrate()オプションの `step`と` relax`引数は何をしますか?

答えて

5

stepおよびrelax引数は、ユーザーが完全な統合ではなく統合アルゴリズムの一部だけを実行できるようにするために存在します。アルゴリズムの内部をテストするのに便利ですが、平均的なユーザーにとっては特に有用ではありません。

両方の引数は、異なる種類の部分積分を選択するブール値フラグとして扱われます。 stepがTrue(ゼロ以外)の場合、integrate()はインテグレータのstep()メソッドを実行します。そのドキュメント文字列は"""Make one integration step and return (y1,t1)."""です。基本的には、通常の統合プロセスでは1つのステップしか実行されません。

relaxは(ゼロ以外)Trueの場合、integrate()はdocstringの"""Integrate from t=t0 to t>=t1 and return (y1,t)."""は基本的に、それはそれが所望の値を通過するまでの統合を実行し、それに余分なバックステップをしないと言うインテグレータのrun_relax()方法を実行します指定された値

これはすべてIntegratorBase source codeで見ることができます。


編集:私はこれらのドキュメントを明確にするためにscipyのダウンロードにプルリクエストをオープンしました:https://github.com/scipy/scipy/pull/7320/

+0

それは 'ステップは= false'のは、デフォルトですべての中間段階をスローすることを意味するのでしょうか?また、後ろのステップで何を意味しているのですか?単なる補間ですか? [example](https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy)のようにループ内で 'integrate'メソッドを実行している場合は、どちらも奇妙な振る舞いのように見えます。 integrate.ode.html)。最初のケースでは、多くの有益な情報が失われており、潜在的に多くの作業を不必要に再実行しています。後者の場合、補間による誤差が累積しています。私は何かを誤解していますか? – dkv

+0

はい、 '' step = False''はアルゴリズムの中間結果をスローアウトします。はい、バックステップは補間です。アルゴリズムの詳細に本当に関心があるなら、[VODE source code](http://www.netlib.org/ode/vode.f)を読むことをお勧めします。 '' step = True''は '' ITASK = 2''を設定し、 '' relax = True''は '' ITASK = 3''を設定することと等価です。 – jakevdp

+0

私は、実装の詳細ではなく、APIを完全に理解することに主に関心を持っています。さらに、lsodaやdopri5のように、vodeの代わりに使用できる他のインテグレータもあります。 – dkv

関連する問題