5章:VBAによるN元の連立微分方程式プログラムリスト
- N元の連立微分方程式プログラムリスト
3章のN元の連立微分方程式の解の求め方をVBAで書くと以下のようになります。
'グローバル変数の定義
Dim n As Integer '連立数
Dim Nc As Integer '計算回数
Dim t As Double '時間
Dim h As Double '時間刻み幅
Dim Y(11) As Double '変数
Dim f(11) As Double '変数
Dim Ka(11), Kb(11), Kc(11), Kd(11) As Double 'K値
Sub Main()
n = Sheets("Sheet1").Cells(5, 2).Value
h = Sheets("Sheet1").Cells(6, 2).Value
Nc = Sheets("Sheet1").Cells(7, 2).Value
t = Sheets("Sheet1").Cells(23, 2).Value '初期値tを読み込み
Sheets("Sheet1").Cells(10, 6).Value = t '初期値tを設定
For i = 1 To n Step 1
Y(i) = Sheets("Sheet1").Cells(23, 2 + i).Value '変数Y(i)の初期値を読み込み
Sheets("Sheet1").Cells(10 + i, 6).Value = Y(i) '変数Y(i)の初期値を設定
Next i
For j = 0 To Nc Step 1
For i = 1 To n Step 1
f(i) = Sheets("Sheet1").Cells(9 + i, 2).Value '関数f(i)の値を読込
Ka(i) = h * f(i)
Next i
Sheets("Sheet1").Cells(10, 6).Value = t + h / 2 '時間tを設定
For i = 1 To n Step 1
Sheets("Sheet1").Cells(10 + i, 6).Value = Y(i) + Ka(i) / 2 '変数Y(i)の値を設定
Next i
For i = 1 To n Step 1
f(i) = Sheets("Sheet1").Cells(9 + i, 2).Value '関数f(i)の値を読込
Kb(i) = h * f(i)
Next i
Sheets("Sheet1").Cells(10, 6).Value = t + h / 2 '時間tを設定
For i = 1 To n Step 1
Sheets("Sheet1").Cells(10 + i, 6).Value = Y(i) + Kb(i) / 2 '変数Y(i)の値を設定
Next i
For i = 1 To n Step 1
f(i) = Sheets("Sheet1").Cells(9 + i, 2).Value '関数f(i)の値を読込
Kc(i) = h * f(i)
Next i
Sheets("Sheet1").Cells(10, 6).Value = t + h '時間tを設定
For i = 1 To n Step 1
Sheets("Sheet1").Cells(10 + i, 6).Value = Y(i) + Kc(i) '変数Y(i)の値を設定
Next i
For i = 1 To n Step 1
f(i) = Sheets("Sheet1").Cells(9 + i, 2).Value '関数f(i)の値を読込
Kd(i) = h * f(i)
Next i
t = t + h '次の時間tを計算
Sheets("Sheet1").Cells(24 + j, 1).Value = j '計算Noを出力
Sheets("Sheet1").Cells(24 + j, 2).Value = t '時間tを出力
For i = 1 To n Step 1
Y(i) = Y(i) + (Ka(i) + 2 * Kb(i) + 2 * Kc(i) + Kd(i)) / 6 '次のY(i)の値を計算
Sheets("Sheet1").Cells(24 + j, 2 + i).Value = Y(i) 'Y(i)の値を出力
Next i
Next j
End Sub
- プログラムリスト解説
- ワークシート("Sheet1")の初期値セルから初期値を読み出します。
- ワークシート("Sheet1")の変数セルに値を設定します。
- ワークシート("Sheet1")の関数セルに計算結果を読み出します。
- プログラム中には、関数が設定されておらず、ワークシート("Sheet1")の関数セルに
設定します。
- 本プログラムでは、プログラムを変更することなく関数を変更できます。
- 本プログラムは10元以内のあらゆる線形微分方程式に適用できます。
6章:N元の連立微分方程式フリーソフトに行く。
トップページに戻る。