Mathematics    

BVP 問題の表現

この節は、つぎの事柄を記述します。

例題: Mathieuの方程式

この例題は、Mathieuの方程式の4番目の固有値を決定します。ここでは、2階の微分方程式を、1階の2つの微分方程式として記述する方法を示し、そして、未知のパラメータbvp4c を使って決定する方法を示します。

ここでは、まず、Mathieuの方程式の4番目()の固有値 を計算します。

未知のパラメータが存在する場合、つぎの2階微分方程式は、3つの境界条件に従います。

1 1次のシステムへの書き換え   bvp4cを使って、方程式を、1次の微分方程式の等価なシステムとして書き換えます。を代入して、微分方程式は、2つの1次方程式として記述されます。

微分方程式は、未知パラメータに依存していることに注意してください。境界条件は、つぎのようになります。

2 MATLAB で1次のODEsシステムをコード化   ユーザは、方程式を1次のシステムとして表現すると、bvp4cが使用できる関数として、それをコード化できます。未知のパラメータが存在するので、関数は、つぎの型になります。

つぎのコードは、 "LSQR: An algorithm for sparse linear equations and sparse least squares," ACM Trans. Math. Soft., Vol.8, 1982, pp. 43-71.システムをMATLAB関数mat4odeに表したものです。

bvp4cでの未知パラメータの使用の詳細は、未知パラメータの検出 を参照してください。

3 境界条件関数のコード化   ユーザは、MATLAB関数の中に境界条件をコード化する必要があります。未知パラメータが存在するので、関数は、つぎの型で表します。

つぎのコードは、MATLAB関数mat4bc内に表現した境界条件です。

4 初期推定の作成   推定構造体 solinit は、bvpinitを使って作成されます。解と未知パラメータに対する初期推定が必要になります。

解に対する初期推定は、関数 mat4init の型で与えられます。この関数として、境界条件を満足し、正しい量的な挙動(符号の変化回数)をもっているので、を選択します。

bvpinitへのコールの中で、3番目の引数( lambda) は、未知パラメータとして初期推定を与えます。

この例題は、@を使って、bvpinitへの関数ハンドルとして、mat4initに渡します。

5 BVP ソルバの適用   mat4bvp例題は、関数mat4odemat4bc をもつ関数と共に bvp4cをコールし、構造体solinit が、bvpinit と共に作成できます。

6 結果の可視化   例題では、結果をすべて表示します。

bvpvalの使い方に関する情報は、 特定の点での解の計算を参照してください。

つぎのプロットは、最終固有値 = 17.097に関連した固有韓数を示しています。

未知パラメータの検出

bvp4c ソルバは、つぎの型の問題に対して、未知パラメータ を求めることができます。

ユーザは、ベクトルsolinit.parametersの中に未知パラメータに対する初期推定をbvp4cに与えます。solinitを作成するために、bvpinit をコールすると、付加的な引数parametersの中にベクトルとして、初期推定を設定します。

bvp4c 関数引数 odefunbcfun は、各々3番目の引数として設定します。

bvp4c ソルバは、各繰り返しで、未知パラメータの中間的な値を計算し、最終値をodefunbcfunの引数parameters に渡します。ソルバは、これらの未知パラメータの最終値をsol.parametersに出力します。

指定した点の解の計算

bvp4cで実行する選点法は、積分区間全体に渡り、C1の連続性を示します。ユーザは、bvp4cと補助関数bvpval を使って、戻される構造体sol を使って、の中の任意の点で近似解を計算することができます。

関数bvpval は、ベクトル化されています。ベクトルxintに対して、Sxinti番目の列は、解を近似します。


 境界値問題ソルバ 良い初期推定の作成法