|
|
◆ Ylaga()
| Sub Ylaga |
( |
I As |
Long, |
|
|
N As |
Long, |
|
|
T As |
Double, |
|
|
Y() As |
Double, |
|
|
Phi As |
LongPtr, |
|
|
Cont() As |
Double, |
|
|
ICont() As |
Long, |
|
|
Optional Info As |
Long |
|
) |
| |
遅延微分方程式の初期値問題 (5(4)次 ドルマン・プリンス法) (解の後方値の計算)
- 目的
- 本プログラムは, Retarda を使って遅延微分方程式の数値解を求める際に, 遅延値の計算を行うための補助プログラムである.
1階の遅延微分方程式の初期値問題 dy/dt = f(t, y(t), y(t - τ), y(t - τ2), ...), ただし t = t0 において y = y0
において, f は過去の値 y(t - τ), y(t - τ2), ... にも依存する. これらは本プログラムを使って求めることができる.
本プログラムは, 5(4)次 ドルマン・プリンス法プログラム RETARD (文献 (1)) の YLAG を書き直したものである.
- 引数
-
| [in] | I | 求める y の要素番号. (1 <= I <= N または I = 0)
1 <= I <= N の場合: y の I 番目の要素だけを求める.
I = 0 の場合: y の全ての要素 (Y(0) 〜 Y(N - 1)) を求める. |
| [in] | N | 微分方程式の数. (N >= 1) |
| [in] | T | 独立変数 t を表す. 例えば, 後方値 y(t - τ) を求めるためには T = t - τ とする. |
| [out] | Y() | 配列 Y(LY - 1) (LY >= 1 (1 <= I <= N の場合), LY >= N (I = 0 の場合))
T における従属変数 y の値 (数値解の補間値).
1 <= I <= N の場合: y の I 番目の要素の計算値を Y(0) に返す.
I = 0 の場合: y の全ての要素の計算値を Y(0) 〜 Y(N - 1) に返す. |
| [in] | Phi | t < t0 における y を求めるユーザー定義サブルーチンで, 次のように定義すること. Sub Phi(I As Long, N As Long, T As Double, Y() As Double, Info As Long)
y() = T における y の値 (ただし, t0 - τ < T < t0).
Info = 0
End Sub
I = 0 であれば全要素を求め Y(0) 〜 Y(N - 1) に値を入れること. I <> 0 であれば I 番目の要素を求め Y(0) に入れること. ただし, ユーザーが Ylaga を呼び出すときに使う I にだけ対応していればよい. Info <> 0 を返すと Ylaga は終了する. |
| [in] | Cont() | 配列 Cont(LCont - 1)
制御情報領域. 内容を変更してはならない. Retarda または Retarda_r の呼び出しに使用したものと同じものでなければならない. |
| [in] | ICont() | 配列 Icont(LICont - 1) (LICont >= 50)
整数制御情報領域. 内容を変更してはならない. Retarda または Retarda_r の呼び出しに使用したものと同じものでなければならない. |
| [out] | Info | (省略可)
リターンコード.
= 0: 正常終了.
< 0: (-Info)番目の入力パラメータの誤り.
= 11: (エラー) 制御情報が正しくない.
= 12: (エラー) T が小さすぎる. Retarda の Mxst が小さすぎる可能性がある.
= 13: (エラー) T が大きすぎる.
= その他: Phi がこの値 (<> 0) を Info として返した. |
- 文献
- (1) E. Hairer, S.P. Norsett and G. Wanner, "Solving Ordinary Differential Equations. Nonstiff Problems. 2nd edition", Springer Series in Computational Mathematics, Springer-Verlag (1993) (邦訳:「常微分方程式の数値解法Ⅰ 基礎編」スプリンガージャパン (2007))
- 使用例
- Retarda の使用例を参照せよ.
|