IMSL Fortran ライブラリでの行列格納モード

IMSL の行列の格納方法
IMSL Fortran ライブラリでの行列格納モード
行列の格納方法は、その構造と形式に応じて異なります。非対称密行列(一般行列)は全
要素を2次元配列に格納します。これを「一般モード」と称して Fortran の配列では共通
していいます。 それ以外の行列は 2 次元配列に格納して必要部分を参照するか、或いは、
変形 2 次元配列に格納して記憶域を節約する方法を採用しています。これら記憶域節約方
式を「圧縮モード」と称しています。
以下に、各種の行列とその格納方法について示します。詳細は IMSL 5.0 マニュアル参照資
料(Reference Material)を参照して下さい。
➀
一般モード
A(K,L) なる 2 次元配列
é a11
êa
21
A=ê
ê a 31
ê
ëa 41
a12
a13
a 22
a 23
a 32
a 33
a 42
a 43
[注意] · 対応関係 aij
a14 ù
a 24 ú
ú
a 34 ú
ú
a 44 û
→
➡
a11 a12
a21 a22
a31 a32
a41 a42
A(I,J)
· K は、整合寸法である
対称行列用圧縮モード
L
-1-
a13
a23
a33
a43
a14
a 24
a34
a 44
4
K
IMSL の行列の格納方法
➁
対称行列用圧縮モード
◍対称密行列 A を格納します。
é a11
êa
21
A=ê
ê a31
ê
ë a 41
a12
a13
a 22
a 23
a 32
a33
a 42
a 43
éa11
ê
A=ê
ê
ê
ë
a14 ù
a 24 ú
ú
a 34 ú
ú
a 44 û
a12
a13
a 22
a 23
a33
a14 ù
a 24 ú
ú
a34 ú
ú
a 44 û
を参照する
又は
é a11
êa
21
A=ê
êa31
ê
ëa 41
a 22
a32
a33
a 42
a 43
ù
ú
ú
ú
ú
a 44 û
を参照する
一般には、対称密行列 A の対角部分と上三角部分の要素を参照しますが、マニュ
アル第 9 章の BLAS ではフラッグの「U」又は「L」の選択により上三角部分又は下
三角部分を参照することができます。
③
エルミート行列用圧縮モード( A
◍複素密行列 A
T
T
= A)
= A を格納します。 aij = a ji , bij = b ji
a11
é
êa - i × b
21
21
A=ê
ê a 31 - i × b31
ê
ëa 41 - i × b41
a12 + i × b12
a13 + i × b13
a 22
a 23 + i × b23
a 32 - i × b32
a33
a 42 - i × b42
a 43 - i × b43
-2-
a14 + i × b14 ù
a 24 + i × b24 ú
ú
a34 + i × b34 ú
ú
a 44
û
IMSL の行列の格納方法
éa11 a12 + i × b12 a13 + i × b12 a14 + i × b12 ù
ê
a22
a23 + i × b12 a24 + i × b12 ú
ú
ê
A=
ê
a33
a34 + i × b12 ú
ú
ê
a44 û
ë
を参照する
ù
é a11
ú
êa - i × b
a22
21
21
ú
ê
A=
ú
êa31 - i × b31 a32 - i × b32
a33
ú
ê
ëa41 - i × b41 a42 - i × b42 a43 - i × b43 a44 û
を参照する
又は
一般には、複素密行列 A の対角部分と上三角部分の要素を参照しますが、マニュアル
第 9 章の BLAS ではフラッグの「U」又は「L」の選択により上三角部分又は下三角部
分を参照することができます。
④
対称帯行列用圧縮モード( A
T
= A)
◍対称バンド行列 A の対角部分と上三角部分の要素を2次元配列 A 上に格納します。
é a11
êa
21
A=ê
ê a31
ê
ë0
a12
a13
a 22
a 23
a 32
a33
a 42
a 43
0 ù
a 24 ú
ú
a 34 ú
ú
a 44 û
é´
A = êê ´
êëa11
´
a13
a12
a 23
a 22
a33
a 24 ù
a34 úú
a34 úû
一般には、上記のように、複素密行列 A の対角部分と上三角部分の要素を参照しま
すが、マニュアル第 9 章の BLAS ではフラッグの「L」の選択により下記のように、
A の対角部分と下三角部分を参照することができます。
é a11
êa
21
A=ê
ê a31
ê
ë0
a12
a13
a 22
a 23
a 32
a33
a 42
a 43
0 ù
a 24 ú
ú
a 34 ú
ú
a 44 û
é a11
A = êê a 21
êë a31
-3-
a 22
a33
a 32
a 43
a 42
´
a 44 ù
´ úú
´ úû
IMSL の行列の格納方法
⑤
非対称帯行列用圧縮モード
◍非対称バンド行列 A の要素を2次元配列 A 上に格納します。
é a11
êa
ê 21
A = ê a31
ê
ê0
êë 0
a12
0
0
a 22
a 23
0
a32
a 33
a34
a 42
a 43
a 44
0
a 53
a54
0 ù
0 ú
ú
0 ú
ú
a 45 ú
a 55 úû
é0
êa
11
A=ê
êa 21
ê
ë a31
a12
a 23
a34
a 22
a 33
a 44
a32
a 43
a54
a 42
a 53
0
a 45 ù
a 55 ú
ú
0 ú
ú
0 û
⑥ 疎行列の格納モード
・疎行列 A を、行列 A の非零の値の数の行と列と値の配列に格納します。
é a11
êa
ê 21
A=ê 0
ê
ê0
êë 0
0 a13 a14
a 22 0
0
a32
0
a33
a43
a34
0
0
0
a54
0ù
0 úú
0ú
ú
0ú
a55 úû
PARAMETER ( NZ = 11, N = 5 )
DIMENSION
IROW(NZ), JCOL(NZ), A(NZ)
DATA IROW / 1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5/
DATA JCOL / 1, 3, 4, 1, 2, 2, 3, 4, 3, 4, 5/
DATA A
/ a11, a13, a14, a21, a22, a32, a33, a34, a43, a54, a55/
-4-