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


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


アップデート 2001.1.14