9.スケーリング/ピボッティング
12.連立方程式の解法(反復法)
| 連立方程式の解法(直接法) | ||
|---|---|---|
| FuncMatSimGE(mat1, vec1, Optional pivFlag, Optional plim, Optional rlim) | ガウス消去法 | |
| FuncMatSimGJ(mat1, mat2, Optional pivFlag, Optional plim, Optional rlim) | ガウス・ジョルダン法 | |
| FuncMatSimLU(mat1, mat2, Optional method, Optional pivFlag, Optional plim, Optional rlim) | LU分解 | |
| FuncMatSimInv(mat1, mat2, Optional pivFlag, Optional plim, Optional rlim) | 逆行列利用 | |
| FuncMatSimQR(mat1, vec1, Optional method, Optional pivFlag, Optional plim, Optional rlim) | QR分解法 | |
| CalcMatBackLU(matOut, ByVal matL, ByVal matU, ByVal matB, Optional rankA, Optional rlim) |
前進→後退代入 (連立方程式を解く途中の関数であり、説明省略します) |
|
| CalcMatBack(matOut, ByVal matA, ByVal matB, Optional rankA, Optional rlim) |
後退代入 (連立方程式を解く途中の関数であり、説明省略します) |
|
| 戻り値 | 連立一次方程式の解(二次配列:ベクトル(行,0))。 |
|---|---|
| mat1 | 係数行列(二次配列)。 |
| vec1 | 定数項ベクトル(二次配列:(行,0)) |
| pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット、3=完全ピボット、4=スケーリング+完全ピボット |
| plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
| rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test()
Dim tmp As Variant
Dim mat1 As Variant
Dim vec1 As Variant
’セル値を配列に代入
mat1 = Range("B3:E6").Value
vec1 = Range("G3:G6").Value
’ガウス消去法による連立方程式の解
tmp = FuncMatSimGE(mat1, vec1)
’結果出力
Range("I3:I6").Value = tmp
End Sub
| 戻り値 | 連立一次方程式の解(二次配列)。 |
|---|---|
| mat1 | 係数行列(二次配列)。 |
| mat2 | 定数項ベクトルを列ベクトルとする行列(二次配列)。 |
| pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット、3=完全ピボット、4=スケーリング+完全ピボット |
| plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
| rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test()
Dim tmp As Variant
Dim mat1 As Variant
Dim mat2 As Variant
’セル値を配列に代入
mat1 = Range("B3:E6").Value
mat2 = Range("G3:I6").Value
’ガウス・ジョルダン法による連立方程式の解
tmp = FuncMatSimGJ(mat1, mat2)
’結果出力
Range(Cells(3, 11), Cells(3 + UBound(tmp, 1), 11 + UBound(tmp, 2))).Value = tmp
End Sub
| 戻り値 | 連立一次方程式の解(二次配列)。 |
|---|---|
| mat1 | 係数行列(二次配列)。 |
| mat2 | 定数項ベクトルを列ベクトルとする行列(二次配列)。 |
| method |
LU分解方法の指定(省略可)。 0=ガウス消去法(デフォルト)、1=クラウト法 |
| pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット、3=完全ピボット、4=スケーリング+完全ピボット |
| plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
| rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test()
Dim tmp As Variant
Dim mat1 As Variant
Dim mat2 As Variant
’セル値を配列に代入
mat1 = Range("B3:E6").Value
mat2 = Range("G3:I6").Value
’LU分解法による連立方程式の解
tmp = FuncMatSimLU(mat1, mat2)
’結果出力
Range(Cells(3, 11), Cells(3 + UBound(tmp, 1), 11 + UBound(tmp, 2))).Value = tmp
End Sub
| 戻り値 | 連立一次方程式の解(二次配列)。 |
|---|---|
| mat1 | 係数行列(二次配列)。 |
| mat2 | 定数項ベクトルを列ベクトルとする行列(二次配列)。 |
| pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット、3=完全ピボット、4=スケーリング+完全ピボット |
| plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
| rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test()
Dim tmp As Variant
Dim mat1 As Variant
Dim mat2 As Variant
’セル値を配列に代入
mat1 = Range("B3:E6").Value
mat2 = Range("G3:I6").Value
’逆行列法による連立方程式の解
tmp = FuncMatSimInv(mat1, mat2)
’結果出力
Range(Cells(3, 11), Cells(3 + UBound(tmp, 1), 11 + UBound(tmp, 2))).Value = tmp
End Sub
| 戻り値 | 連立一次方程式の解(二次配列:(行,0))。 |
|---|---|
| mat1 | 係数行列(二次配列)。 |
| vec1 | 定数項ベクトル(二次配列:(行,0))。 |
| method |
QR分解方法の指定(省略可)。 0=ハウスホルダー法(デフォルト)、1=グラムシュミット法。 |
| pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット |
| plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
| rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test()
Dim tmp As Variant
Dim mat1 As Variant
Dim mat2 As Variant
’セル値を配列に代入
mat1 = Range("B3:E6").Value
mat2 = Range("G3:G6").Value
’QR法による連立方程式の解
tmp = FuncMatSimQR(mat1, mat2)
’結果出力
Range(Cells(3, 9), Cells(3 + UBound(tmp, 1), 9 + UBound(tmp, 2))).Value = tmp
End Sub