|
|
◆ Ylag()
| Function Ylag |
( |
I As |
Long, |
|
|
T As |
Double, |
|
|
Phi As |
LongPtr, |
|
|
RCont As |
Double, |
|
|
ICont As |
Long |
|
) |
| |
遅延微分方程式の初期値問題 (5(4)次 ドルマン・プリンス法) (解の後方値の補間)
- 目的
- 本ルーチンは, Retard を使って遅延微分方程式の初期値問題の解を求めるためおよび密出力を行うために解の後方値を補間により求める補助ルーチンである.
本ルーチンは, 微分方程式を定義するサブルーチン F および密出力を行うサブルーチン Solout の中で使うことができる.
- 戻り値
- Double
T における解の補間値 Y(I).
- 引数
-
| [in] | I | 求める解の要素番号. (0 <= I <= N - 1) |
| [in] | T | 補間値を求める T の値.
T は利用可能な過去のステップの範囲内になければならない. そうでない場合には 0 を返し, Retard が Info = 14 で終了する. どれだけさかのぼった時点の値を求めることができるかは確保する作業メモリ量に依存し, Retard のパラメータ Mxst で指定することができる. |
| [in] | Phi | 初期値が必要なときに呼び出されるユーザー定義関数で, 次のように定義すること. Function Phi(I As Long, T As Double) As Double
Phi = T における要素 I の関数値 Y(I) (I = 0 〜 N - 1). ただし, t0 - τ <= T <= t0.
End Function
ただし, t0 は t の初期値, τは遅延量である. すなわち, 初期値よりも遅延量だけ前までの関数値を Phi で定義しておかなければならない. 微分方程式の定義において遅延を含む関数値を必要としない要素については Phi が呼び出されることはない. すなわち, そのような要素番号については定義しなくてもよい. |
| [in] | RCont | 密出力のための制御情報.
F または Solout で受け取ったものをそのまま入力する. |
| [in] | ICont | 密出力のための整数制御情報.
F または Solout で受け取ったものをそのまま入力する. |
- 出典
- 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)
- 使用例
- 次の遅延微分方程式を定義する.
y'(t) = -y(t-1) ただし, t0 = 0, y(t) = 1 (-1 <= t <= 0)
Sub F(N As Long, T As Double, Y() As Double, Yp() As Double, RCont As Double, ICont As Long)
Yp(0) = - Ylag(0, T-1, AddressOf Phi, RCont, ICont)
End Sub
Function Phi(I As Long, X As Double) As Double
If I = 0 And X >= -1 And X <= 0 Then Phi = 1
End Function
Function Ylag(I As Long, T As Double, Phi As LongPtr, RCont As Double, ICont As Long) As Double 遅延微分方程式の初期値問題 (5(4)次 ドルマン・プリンス法) (解の後方値の補間)
|