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