ルンゲ_クッタ法(マクロ02)


Sub RK_method02() 'ルンゲ_クッタ法
Range("c4:e75").Clear '領域消去
Cells(4, 3) = Cells(2, 2) '初期データを記憶
Cells(4, 4) = Cells(3, 2) '初期データを記憶
Cells(4, 5) = Cells(4, 2) '初期データを記憶
h = Cells(5, 2) '刻み幅の取得
h2 = h / 2 '刻み幅の半分の計算
For n = 4 To 75 '繰り返し
 tn = Cells(n, 3) '変数値の取得
 xn = Cells(n, 4) '関数値の取得
 yn = Cells(n, 5) '関数値の取得
 Cells(2, 3) = tn '作業領域に複写
 Cells(2, 4) = xn '作業領域に複写
 Cells(2, 5) = yn '作業領域に複写
 k1 = h * Cells(2, 7) 'k1の値の計算
 l1 = h * Cells(3, 7) 'k1の値の計算
 Cells(2, 3) = tn + h2 '変数値の変更
 Cells(2, 4) = xn + k1 / 2 '関数値の変更
 Cells(2, 5) = yn + l1 / 2 '関数値の変更
 k2 = h * Cells(2, 7) 'k2の値の計算
 l2 = h * Cells(3, 7) 'l2の値の計算
 Cells(2, 4) = xn + k2 / 2 '作業領域に複写
 Cells(2, 5) = yn + l2 / 2 '作業領域に複写
 k3 = h * Cells(2, 7) 'k3の値の計算
 l3 = h * Cells(3, 7) 'k3の値の計算
 tnp = tn + h '変数値の変更
 Cells(2, 3) = tnp '変数値の変更
 Cells(2, 4) = xn + k3 '関数値の変更
 Cells(2, 5) = yn + l3 '関数値の変更
 k4 = h * Cells(2, 7) 'k4の値の計算
 l4 = h * Cells(3, 7) 'k4の値の計算
 np = n + 1
 Cells(np, 3) = tnp '新しい変数値の記憶
 Cells(np, 4) = xn + (k1 + 2 * k2 + 2 * k3 + k4) / 6
 Cells(np, 5) = yn + (l1 + 2 * l2 + 2 * l3 + l4) / 6'新しい関数値の記憶
Next n
End Sub


アップデート 2001.5.27