ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

odextend

常微分方程式の初期値問題の解の拡張

構文

solext = odextend(sol, odefun, tfinal)
solext = odextend(sol,[],tfinal)
solext = odextend(sol, odefun, tfinal, yinit)
solext = odextend(sol, odefun, tfinal, [yinit, ypinit])
solext = odextend(sol, odefun, tfinal, yinit, options)

説明

solext = odextend(sol, odefun, tfinal) は、独立変数の上限 tfinal で、sol に格納されている解を拡張します。odefun を関数ハンドルとして指定します。sol を ODE ソルバーを使って作成した ODE の解の構造体として指定します。solext の独立変数の下限は、sol と同じです。ode15i 以外の ODE ソルバーで sol を作成した場合、関数 odefun は、ODE 方程式 (y′ = f(t,y) の形式) の右辺を計算します。ode15isol を作成した場合、関数 odefun は、ODE 方程式 (f(t,y,y') = 0 の形式) の左辺を計算します。

「関数のパラメーター化」では、必要に応じて関数 odefun にパラメーターを追加する方法について説明しています。

関数 odextend は、sol を作成した同じ ODE ソルバーを使用して、sol の独立変数の上限から tfinal まで、関数 odefun を積分し、解を拡張します。既定の設定では、関数 odextend は以下を使用します。

  • 後続の積分の初期値 y = sol.y(:,end)

  • ODE ソルバーが sol の計算に使用していたものと同じ、積分プロパティと付加的な入力引数。この情報は、解の構造体 sol に含まれ、solext に渡されます。これらの値を変更しない限り、これらを関数 odextend に渡す必要はありません。

solext = odextend(sol,[],tfinal) は、解を拡張するために、ODE ソルバーが sol の計算に使用したソルバーと同じ ODE 関数を使用します。元の ODE 関数と異なる関数 odefun を使用しない限り、明確に関数 odefun を渡す必要はありません。

solext = odextend(sol, odefun, tfinal, yinit) は、ベクトル sol.y(end) の代わりに、後続の積分の新規初期条件として、列ベクトル yinit を使用します。

    メモ:   関数 ode15i で得られた解を拡張するには、以下の構文を使用します。列ベクトル ypinit が解の初期導関数です。

    solext = odextend(sol, odefun, tfinal, [yinit, ypinit])

solext = odextend(sol, odefun, tfinal, yinit, options) は、ODE ソルバーが sol の計算に使用したオプションの代わりに、options で指定された積分プロパティを使用します。新規オプションは、構造体 solext 内に蓄積されます。options プロパティの設定の詳細は、odeset を参照してください。既定の初期条件を指定する場合は、プレースホルダーとして yinit = [] を設定します。

次のコマンドは、関数 ode45 を使用して y' = vdp1(t,y) 系を解きます。

sol=ode45(@vdp1,[0 10],[2 0]);

ここで、vdp1 は MATLAB® ソフトウェアで提供されている ODE 関数の例で、区間は [0 10] です。以下のコマンドを実行します。

sol=odextend(sol,@vdp1,20);
plot(sol.x,sol.y(1,:));

解は区間 [0 20] に拡張され、[0 20] 上の解の最初の要素をプロットします。

参考

| | | | | | | | | | | |

この情報は役に立ちましたか?