Main Content

bvpset

境界値問題のオプション構造体を作成、変更

構文

options = bvpset('name1',value1,'name2',value2,...)
options = bvpset(oldopts,'name1',value1,...)
options = bvpset(oldopts,newopts)
bvpset

説明

options = bvpset('name1',value1,'name2',value2,...) は、指定された名前のプロパティを指定された値に設定し、境界値問題ソルバー bvp4c に使用できる options 構造体を作成します。指定されないプロパティは、既定値のままになります。どのプロパティについても、名前には先頭からプロパティを一意に識別できるまでの文字を入力すれば十分です。関数 bvpset は、プロパティ名の大文字と小文字の区別を無視します。

options = bvpset(oldopts,'name1',value1,...) は、既存のオプション構造体 oldopts を変更します。これは指定された名前と値の組み合わせによって oldopts 内の値を書き換え、変更後の構造体を出力引数として返します。

options = bvpset(oldopts,newopts) は、既存のオプション構造体 oldopts と、新しいオプション構造体 newopts を組み合わせます。newopts 内の値が、oldopts 内の対応する値を書き換えます。

入力引数なしの bvpset は、すべてのプロパティ名と取り得る値を表示し、中かっこ {} 内に既定値を示します。

関数 bvpget を使用して、options 構造体から特定のプロパティの値をクエリできます。

BVP のプロパティ

関数 bvpset により、境界値問題ソルバー bvp4c が使用するプロパティを指定できます。設定可能なプロパティは、以下のカテゴリに分類されます。

許容誤差プロパティ

関数 bvp4c は選点公式を使用するため、数値解は、選点方程式が満たされる点のメッシュに基づきます。メッシュの選択とエラー制御は、計算された解 S(x) が摂動を与えられた問題の厳密な解 S′(x) = f(x,S(x)) + res(x) であるという、この解の残差に基づいています。メッシュの個々のサブ区間で、解の i 番目の成分 res(i) における残差ノルムが計算され、この値が許容誤差以下となる必要があります。この許容誤差は、ユーザーが定義する相対および絶対許容誤差 RelTol および AbsTol の関数です。

(res(i)/max(abs(f(i)),AbsTol(i)/RelTol))RelTol

次の表で許容誤差プロパティを説明します。

BVP の許容誤差のプロパティ

プロパティ

説明

RelTol

正のスカラー {1e-3}

残差ベクトルのすべての要素に適用される相対許容誤差。これは、f(x,y) のサイズを基準にした残差の測定値です。既定の設定 1e-3 は、0.1% の精度に対応します。

計算された解 S(x) は、S′(x) = F(x,S(x)) + res(x) の厳密解です。メッシュの各サブ区間で、残差 res(x) は、以下の関係を満たします。

(res(i)/max(abs(F(i)),AbsTol(i)/RelTol))RelTol

AbsTol

正のスカラー、またはベクトル {1e-6}

残差ベクトルの対応する要素に適用される絶対許容誤差。AbsTol(i) は、これ未満では対応する要素の値が重要性を失うしきい値です。スカラー値を指定する場合は、すべての要素に適用されます。

ベクトル化

次の表で BVP ベクトル化プロパティを説明します。関数 bvp4c が使用する ODE 関数のベクトル化は、他の ODE ソルバーが使用するベクトル化とは異なります。

  • 関数 bvp4c の場合、ODE 関数は、F([x1 x2 ...],[y1 y2 ...])[F(x1,y1) F(x2,y2)...] を返すように、最初の引数および 2 番目の引数に関してベクトル化されなければなりません。

  • 関数 bvp4c は、解析的なヤコビアンが提供される場合でも、ベクトル化の恩恵を受けます。スティッフな ODE ソルバーでは、解析的なヤコビアンを使用する場合、ベクトル化を無視します。

ベクトル化のプロパティ

プロパティ

説明

Vectorized

on | {off}

on に設定すると、F([x1 x2 ...],[y1 y2 ...])[F(x1,y1) F(x2,y2) ...] を返すように ODE 関数 F がコード化されていることを関数 bvp4c に通知します。すなわち、ユーザーの ODE 関数が列ベクトルの配列全体をソルバーに一度に渡せることを示します。これにより関数の評価回数を減らすことができ、解を求めるための所要時間をかなり短縮できることになります。

MATLAB® の配列表記により、一般的に ODE 関数のベクトル化は簡単に行えます。前述の shockbvp の例では、添字にコロン表記法を使用し、配列の乗算 (.*) 演算子を使用することによって、関数 shockODE をベクトル化していました。

function dydx = shockODE(x,y,e)
pix = pi*x;
dydx = [ y(2,:)... 
-x/e.*y(2,:)-pi^2*cos(pix)-
pix/e.*sin(pix)];

解析的な偏導関数

既定の設定では、bvp4c ソルバーはすべての偏導関数を有限差分で近似します。関数 bvp4c は、微分方程式の解析的な偏導関数 ∂f/∂y、および境界条件の解析的な偏導関数 ∂bc/∂ya と ∂bc/∂yb を指定すると、より効率的になります。問題に未知のパラメーターが含まれている場合には、パラメーターに関する偏導関数 ∂f/∂p および ∂bc/∂p も与えなければなりません。

次の表で解析的偏導関数プロパティを説明します。

BVP の解析的偏導関数のプロパティ

プロパティ

説明

FJacobian

関数ハンドル

f(x,y) の解析的な偏導関数を計算する関数ハンドル。y′ = f(x,y) を解くときに、dfdy = fjac(x,y) がヤコビアン ∂f/∂y を評価する場合は、このプロパティを @fjac に設定します。問題に未知のパラメーター p が含まれている場合には、[dfdy,dfdp] = fjac(x,y,p) は、偏導関数 ∂f/∂p も返さなければなりません。定数の偏導関数をもつ問題の場合は、このプロパティを dfdy の値か、cell 配列 {dfdy,dfdp} に設定します。

BCJacobian

関数ハンドル

bc(ya,yb) の解析的な偏導関数を計算する関数ハンドル。境界条件 bc(ya,yb) の場合、[dbcdya,dbcdyb] = bcjac(ya,yb) が偏導関数 ∂bc/∂ya、と ∂bc/∂yb を評価する場合は、このプロパティを @bcjac に設定します。問題に未知のパラメーター p が含まれている場合には、[dbcdya,dbcdyb,dbcdp] = bcjac(ya,yb,p) は、偏導関数 ∂bc/∂p も返さなければなりません。定数の偏導関数をもつ問題の場合は、このプロパティを cell 配列 {dbcdya,dbcdyb} または {dbcdya,dbcdyb,dbcdp} に設定します。

特異な BVP

関数 bvp4c は、以下の形式の特異問題を解くことができます。

y=Syx+f(x,y,p)

この場合の区間は [0,b] です。ここで、b > 0 です。このような問題の場合は、SingularTerm の値として定数行列 S を指定します。この形式の方程式の場合、odefun は f(x,y,p) 項のみを評価します。ここで p は未知のパラメーターを表します。

特異 BVP のプロパティ

プロパティ

説明

SingularTerm

定数行列

特異 BVP の特異項。以下の形式の方程式の場合、定数行列 S に設定します。

y=Syx+f(x,y,p)

この場合の区間は [0,b] です。ここで、b > 0 です。

メッシュ サイズ プロパティ

bvp4c は代数方程式系を解いて、各メッシュ点における BVP の数値解を求めます。代数システムの規模は、微分方程式の数 (n) と現在のメッシュのメッシュ点の数 (N) に依存します。許容されている数のメッシュ点を使い切った場合には計算が停止し、関数 bvp4c は警告メッセージを表示して、その時点で求められている解を返します。この解は許容誤差を満たしませんが、許容誤差を緩めるか、Nmax の値を増やすかして再計算するための非常に優れた初期推定になります。

次の表に、メッシュ サイズ プロパティを示します。

BVP のメッシュ サイズ プロパティ

プロパティ

説明

Nmax

正の整数 {floor(1000/n)}

BVP を解く場合に許容されるメッシュ点の最大数。ここで n は、問題に関与する微分方程式の数です。Nmax の既定値は、代数システムの規模を約 1000 の方程式に制限します。微分方程式が数個のシステムでは、正確な解を得るのに Nmax の既定値で十分です。

解の統計情報プロパティ

Stats プロパティを使用すると、解に関する統計情報を表示できます。

次の表で解の統計情報プロパティを説明します。

BVP 解の統計情報プロパティ

プロパティ

説明

Stats

on | {off}

計算に関する統計情報を表示するかどうかを指定します。stats プロパティが on の場合、問題を解いた後に bvp4c は以下の項目を表示します。

  • メッシュ内の点数

  • 解の最大残差

  • f(x,y) を計算するために微分方程式関数 odefun が呼び出された回数

  • bc(y(a),y(b)) を計算するために境界条件関数 bcfun が呼び出された回数

bvp4c の相対許容誤差を既定値の 1e-3 から 1e-4 に変更するオプション構造体を作成するには、以下のように入力します。

options = bvpset('RelTol',1e-4);

options から 'RelTol' の値を復元するには、以下のように入力します。

bvpget(options,'RelTol')

ans =

  1.0000e-004

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2006a より前に導入