XLPack 6.1
Excel VBA 数値計算ライブラリ・リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ Ztrtri()

Sub Ztrtri ( Uplo As  String,
Diag As  String,
N As  Long,
A() As  Complex,
Info As  Long 
)

行列の逆行列 (複素三角行列)

目的
本ルーチンは上または下複素三角行列Aの逆行列を求める.
Level 3 BLAS版のアルゴリズムを使用する.
引数
[in]Uplo= "U": Aは上三角行列.
= "L": Aは下三角行列.
[in]Diag= "N": Aは単位三角行列ではない.
= "U": Aは単位三角行列である. (A()の対角要素を参照せず, 1とみなす)
[in]N行列Aの行および列数. (N >= 0) (N = 0 の場合, 処理を行わずに戻る)
[in,out]A()配列 A(LA1 - 1, LA2 - 1) (LA1 >= N, LA2 >= N)
[in] N×N三角行列 A. Uploに従い上三角部分あるいは下三角部分のみ参照される.
[out] 元の行列の(三角)逆行列.
[out]Info= 0: 正常終了.
= -1: パラメータ Uplo の誤り. (Uplo <> "U"および"L")
= -2: パラメータ Diag の誤り. (Diag <> "N"および"U")
= -3: パラメータ N の誤り. (N < 0)
= -4: パラメータ A() の誤り.
= i > 0: Aのi番目の対角要素が0である. 三角行列は特異でその逆行列を求めることはできない.
出典
LAPACK
使用例
行列 A の逆行列を求める. ただし,
( 0.20-0.11i 0 0 )
A = ( -0.93-0.32i 0.81+0.37i 0 )
( -0.80-0.92i -0.29+0.86i 0.64+0.51i )
とする.
Sub Ex_Ztrtri()
Const N = 3
Dim A(N - 1, N - 1) As Complex, Info As Long
A(0, 0) = Cmplx(0.2, -0.11)
A(1, 0) = Cmplx(-0.93, -0.32): A(1, 1) = Cmplx(0.81, 0.37)
A(2, 0) = Cmplx(-0.8, -0.92): A(2, 1) = Cmplx(-0.29, 0.86): A(2, 2) = Cmplx(0.64, 0.51)
Call Ztrtri("L", "N", N, A(), Info)
Debug.Print "Inv(A) ="
Debug.Print Creal(A(0, 0)), Cimag(A(0, 0)), Creal(A(0, 1)), Cimag(A(0, 1))
Debug.Print Creal(A(0, 2)), Cimag(A(0, 2))
Debug.Print Creal(A(1, 0)), Cimag(A(1, 0)), Creal(A(1, 1)), Cimag(A(1, 1))
Debug.Print Creal(A(1, 2)), Cimag(A(1, 2))
Debug.Print Creal(A(2, 0)), Cimag(A(2, 0)), Creal(A(2, 1)), Cimag(A(2, 1))
Debug.Print Creal(A(2, 2)), Cimag(A(2, 2))
Debug.Print "Info =", Info
End Sub
実行結果
Inv(A) =
3.83877159309021 2.11132437619962 0 0
0 0
4.44578642778825 1.9098735819418 1.02143757881463 -0.466582597730139
0 0
5.36621770339369 -1.22742914259824 -0.87238813712865 -0.888792689354233
0.955651784381066 -0.761535015678662
Info = 0