dsolve/numeric/gear - 常微分方程式の数値解を求める
使い方
dsolve(odesys, numeric, method=gear)
dsolve(odesys, numeric, method=gear[choice], vars, options)
dsolve(numeric, method=gear[choice], procopts, options)
パラメータ
odesys - 集合またはリスト ; ( 連立 ) 常微分方程式および初期条件
numeric - 名前 ; dsolve に数値解を要求します
method=gear - method=gear を指定 ; 数値解法として使用します
method=gear[choice] - 方程式 ; 数値解法と共に使用する副解法の指定
vars - ( オプション ) odesys に現れる従変数、または従変数の集合かリスト
options - ( オプション ) keyword = value 形式の方程式
procopts - 連立常微分方程式に用いる手続きの指定オプション (procedure, initial, start, number, procvars のいずれか。 ) 。詳細は dsolve[numeric,IVP] をご参照ください。
|
説明
|
|
•
|
オプションに numeric および method=gear または method=gear[choice] を指定した dsolve コマンドは、単独ステップの Gear 補外法 (Gear single-step extrapolation method) を用いて数値解を求めます。
|
•
|
gear 法のための choice は、bstoer と polyextr となります。bstoer choice のデフォルトは、Burlirsch-Stoer 有理補外法 (Burlirsch-Stoer rational extrapolation method) であり、polyextr choice は多項式補外 (polynomial extrapolation) を使用します。
|
•
|
infolevel[`dsolve/gear`] または infolevel[dsolve] を 2 と設定することで、最後の格子点での評価についての情報は誤差を含んで示されます。
|
•
|
以下のオプションは、gear を指定した解法で使用することができます。:
|
'output' = keyword or array
'known' = name or list of names
'maxfun' = integer
'number' = integer
'procedure' = procedure
'start' = numeric
'initial' = array
'procvars' = list
'startinit' = boolean
'implicit' = boolean
'optimize' = boolean
'abserr' = numeric
'relerr' = numeric
'initstep' = numeric
'maxstep' = numeric
'minstep' = numeric
'maxord' = integer
'maxpts' = integer
|
dsolve の出力形式を指定します。さらに、known オプションはユーザが定義した既知の関数を指定します。詳細は dsolve[numeric] をご参照ください。
|
|
一階の連立常微分方程式の右辺の評価数の最大値を指定します ( 詳細は dsolve[maxfun] をご参照ください。) 。このオプションは maxfun=0 と指定することで無効にできます。このオプションのデフォルトは無効となっています。
|
|
'number', 'procedure', 'start', 'initial', と 'procvars'
|
|
'startinit','implicit', と 'optimize'
|
|
解の精度を指定します。詳細は dsolve[Error_Control] をご参照ください。gear においてのデフォルトの値は abserr=Float(1,-7) と relerr=Float(1,-7) となっています。
|
|
'minstep', 'maxstep', と 'initstep'
|
|
ステップ幅のより詳細な制御を可能にします。これらのオプションは、dsolve[Error_Control] で説明されているものとなります。デフォルトでは、minstep=0.00001, maxstep は無効、および initstep=0.00001 が定められています。minstep を設定する場合、最初の数ステップで確実に小さい値がとれるように設定してください。
|
|
正の整数で、補外の最大のオーダーを指定します。これは 11 以下でなくてはいけません ( 6 以下の値を薦めます。) 。デフォルトの値は 4.となっています。
|
|
正の整数で、補外の過程で使用する 1 ステップ幅の差の最大数を指定します (10 以下の値を薦めます。) 。これはデフォルトでは 6 となっています。
|
•
|
計算は gear 手続きの誤差条件に対応するエラーメッセージを含んで返すかもしれません。
|
|
|
例
|
|
>
|
Digits := 10:
deq1 := {diff(y(x),x$3) = y(x)*diff(y(x),x)-x};
|
| (2.1) |
>
|
init1 := {(D@@2)(y)(1) = 4, D(y)(1) = 3, y(1) = 2.4 };
|
| (2.2) |
>
|
ans1 := dsolve(deq1 union init1, numeric,
method=gear[polyextr],
initstep=0.015, minstep=Float(1,-11),
abserr=Float(1,-5), relerr=Float(1,-5)):
ans1(1.01);
|
| (2.3) |
>
|
dsys2 := {x*y(x) - sin(y(x)) = diff(y(x), x), y(0) = -5.};
|
| (2.4) |
>
|
ans2 := dsolve(dsys2, numeric, method=gear, maxord=3):
ans2(0.45);
|
| (2.5) |
| (2.6) |
>
|
Digits := 25:
deq3 := diff(y(z), z$3) - y(z)*z*diff(y(z),z) = 5;
|
| (2.7) |
>
|
init3 := y(0) = 1, (D@@2)(y)(0) = -1, D(y)(0) = 2;
|
| (2.8) |
>
|
ans3 := dsolve({deq3, init3}, numeric, method=gear[bstoer],
maxpts=4):
ans3(-1);
|
| (2.9) |
| (2.10) |
|
|
参照
|
|
dsolve[classical], dsolve[dverk78], dsolve[Error_Control], dsolve[lsode], dsolve[maxfun], dsolve[numeric], dsolve[numeric,IVP], dsolve[rkf45], dsolve[rosenbrock], dsolve[Stiffness], dsolve[taylorseries], plots[odeplot]
|
|
参考文献
|
|
|
Gear, C.W. Numerical Initial Value Problems in Ordinary Differential Equations. Prentice-Hall, 1971.
|
|
|