9.スケーリング/ピボッティング
12.連立方程式の解法(反復法)
変換行列 | ||
---|---|---|
FuncMatInv(mat1, Optional pivFlag, Optional plim, Optional rlim) | 逆行列計算: ガウスジョルダン法 | |
CalcMatHH(matH, vecA, ByVal rowNo, Optional rlim) | ハウホルダー行列(Subプロシージャ) | |
FuncMatHess(mat1, Optional symFlag, Optional rlim) | ハウスホルダーによるヘッセンベルグ変換 | |
FuncMatBiDiag(mat1, Optional pivFlag, Optional plim, Optional rlim) | ハウスホルダー変換による二重対角化 |
戻り値 | 逆行列(二次配列)。 |
---|---|
mat1 | 逆行列算出対象行列(正方行列:(行,列)) |
pivFlag |
前処理フラグ(省略可)。 0=部分行ピボット、1=行ピボット、2=行スケーリング+ピボット、3=完全ピボット、4=スケーリング+完全ピボット |
plim | ピボット処理閾値(省略可)。デフォルト値=2e-12。 |
rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test() Dim cnt1 As Integer Dim tmp As Variant Dim matA As Variant ’行列の取得 matA = Range(Cells(3, 2), Cells(6, 5)).Value ’逆行列 tmp = FuncMatInv(matA) ’結果出力 Range(Cells(3, 7), Cells(3 + UBound(tmp, 1), 7 + UBound(tmp, 2))).Value = tmp End Sub
戻り値 | ヘッセンベルグ行列(行,列)。 |
---|---|
mat1 | ヘッセンベルグ化対象行列(行,列)。 |
symFlag |
対称行列フラグ(省略可)。 0=非対称行列、1=対称行列 |
rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test() Dim cnt1 As Integer Dim tmp As Variant Dim matA As Variant ’行列の取得 matA = Range(Cells(3, 2), Cells(6, 5)).Value ’逆行列 tmp = FuncMatHess(matA) ’結果出力 Range(Cells(3, 7), Cells(3 + UBound(tmp, 1), 7 + UBound(tmp, 2))).Value = tmp End Sub
戻り値 | 上から二重対角行列、左直交行列、右直交行列(行,列)。 |
---|---|
mat1 | 二重対角化対象行列(行,列)。 |
symFlag |
対称行列フラグ(省略可)。 0=非対称行列、1=対称行列 |
rlim | 数値丸め閾値(省略可)。デフォルト値=2e-12。 |
Sub test() Dim tmp As Variant Dim matA As Variant ’行列の取得 matA = Range(Cells(3, 2), Cells(10, 9)).Value ’逆行列 tmp = FuncMatBiDiag(matA) ’結果出力 Range(Cells(3, 11), Cells(3 + UBound(tmp, 1), 11 + UBound(tmp, 2))).Value = tmp End Sub