私はPythonを使用して、ODEの数値積分に関する演習を行っています。私はこの問題に遭遇します。
「ODEインテグレーターの1回の実行(つまり、integrate(t)メソッドの1回の呼び出し)中に、インテグレーターは内部で時間間隔を多くの個別のステップに分割し、それらのステップを使用して指定されたスキーム(Runge-Kuttaなど)を実行します。 。このプロセス中にODEの微分関数が呼び出される回数を調べてみましょう。」
回数を見つける方法はありますか?ありがとう。
インテグレーターに渡す関数では、その統計を収集するコードを記述できます。たとえば、代わりに
def f(t, x):
return -2 * x
書く
class F:
def __init__(self):
self.calls = 0
def __call__(t, x):
self.calls += 1
return -2 * x
次に、このクラスのオブジェクトをインテグレータに渡します。例:(概略的に)
f = F()
r = ode(f, jac)
r.integrate(tmax)
print(f.calls)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加