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

◆ ZHBRead1()

Sub ZHBRead1 ( Fname As  String,
Title As  String,
Key As  String,
Nrow As  Long,
Ncol As  Long,
Nnz As  Long,
Val() As  Complex,
Ptr() As  Long,
Ind() As  Long,
DataType As  Long,
MatShape As  Long,
MatForm As  Long,
Optional Info As  Long,
Optional Nrhs As  Long,
Optional Base As  Long = 0,
Optional Format As  Long = 0,
Optional Sort As  Long = 0 
)

Harwell-Boeing形式ファイルの読み出し (シンプルドライバ) (複素行列)

目的
Harwell-Boeing形式ファイルから疎行列を読み出す.

読み出したデータは, データの順番など内容のチェックは行わずにそのまま配列に格納する. 疎行列は CSR, CSC または COO形式で格納される. ただし, オプションで疎行列を行あるいは列内で行番号の昇順に並べ替えることができる.

右辺行列(初期推定ベクトル, 解ベクトルを含む)の読み出しは行わない. ただし, Nrhs の値は省略可能パラメータに返す.
引数
[in]Fname入力ファイル名.
[out]TitleTitle 文字列.
[out]KeyKey 文字列.
[out]Nrow行列の行数.
[out]Ncol行列の列数.
[out]Nnz非ゼロ要素数.
[out]Val()配列 Val(LVal - 1) (LVal >= Nnz)
非ゼロ要素.
[out]Ptr()配列 Ptr(LPtr - 1) (LPtr >= Nrow + 1 (CSR), LPtr >= Ncol + 1 (CSC), または LPtr >= Nnz (COO))
行ポインタ(CSRの場合), 列ポインタ(CSC の場合), または 行インデクス(COO の場合).
[out]Ind()配列 Ind(LInd - 1) (LInd >= Nnz) 列インデクス(CSR あるいは COO の場合), または 行インデクス(CSC の場合).
[out]DataType行列のデータ型.
= 1: 複素数.
= 2: パターン.
[out]MatShape行列の形状.
= 0: 非対称行列.
= 1: 対称行列.
= 2: 歪対称(交代)行列.
= 3: エルミート行列.
= 4: 長方形行列.
[out]MatForm行列の格納形式.
= 0: 疎行列.
[out]Info(省略可)
= 0: 正常終了.
= i < 0: (-i)番目の入力パラメータの誤り.
= 1: ファイルがオープンできなかった.
= 3: ファイル読み出しエラー.
= 4: 読み出しフォーマットの誤り.
= 5: メモリーエラー.
[out]Nrhs(省略可)
右辺行列の列数.
[in]Base(省略可)
Ptr および Ind のインデクス形式. (省略時 = 0)
= 0: 0-ベース(C形式): 開始インデクス値が 0.
= 1: 1-ベース(Fortran形式): 開始インデクス値が 1.
[in]Format(省略可)
疎行列の格納形式. (省略時 = 0)
= 0: CSR形式.
= 1: CSC形式.
= 2: COO形式.
[in]Sort(省略可)
読み出した疎行列を行内で列番号の昇順(CSR の場合) または 列内で行番号の昇順(CSC の場合)に並べ替えるかどうかを指定. (省略時 = 0)
= 0: 並べ替えを行わない.
= 1: 並べ替えを行う.
使用例
次の Harwell-Boeing 形式ファイル (Test_ZHBWrite1.cua) を読み出す.
Test ZHBWrite1 Key
9 1 2 6 0
CUA 3 3 9 0
(8I10) (8I10) (3D23.15) (3D23.15)
1 4 7 10
1 2 3 1 2 3 1 2
3
7.800000000000000e-01 1.600000000000000e-01 7.300000000000000e-01
6.300000000000000e-01 2.300000000000000e-01 -1.370000000000000e+00
-9.000000000000000e-01 -1.460000000000000e+00 1.580000000000000e+00
-1.240000000000000e+00 7.900000000000000e-01 6.400000000000000e-01
4.800000000000000e-01 -1.080000000000000e+00 -4.100000000000000e-01
-9.100000000000000e-01 -7.300000000000000e-01 -1.500000000000000e+00
Sub ZHBWrite1(Fname As String, ByVal Title As String, Key As String, Nrow As Long, Ncol As Long, Nnz As Long, Val() As Complex, Ptr() As Long, Ind() As Long, DataType As Long, MatShape As Long, MatForm As Long, Optional Info As Long, Optional Fchk As Long=0, Optional Base As Long=-1, Optional Format As Long=0)
Harwell-Boeing形式ファイルへの書き込み (シンプルドライバ) (複素行列)
Sub Ex_ZHBRead1()
Dim Title As String, Key As String
Dim M As Long, N As Long, Nnz As Long, DataType As Long, MatShape As Long, MatForm As Long
Dim A(8) As Complex, Ia(3) As Long, Ja(8) As Long
Dim Info As Long
Call ZHBRead1("Test_ZHBWrite1.cua", Title, Key, M, N, Nnz, A(), Ia(), Ja(), DataType, MatShape, MatForm, Info)
Debug.Print "ZHBRead1: Info =" + Str(Info)
Debug.Print "Title = """ + Title + """, Key = """ + Key + """, M =" + Str(M) + ", N =" + Str(N) + ", Nnz =" + Str(Nnz)
Debug.Print "DataType =" + Str(DataType) + ", MatShape =" + Str(MatShape) + ", MatForm =" + Str(MatForm)
Debug.Print "(" + Str(Creal(A(0))) + "," + Str(Cimag(A(0))) + ")", "(" + Str(Creal(A(1))) + "," + Str(Cimag(A(1))) + ")", "(" + Str(Creal(A(2))) + "," + Str(Cimag(A(2))) + ")"
Debug.Print "(" + Str(Creal(A(3))) + "," + Str(Cimag(A(3))) + ")", "(" + Str(Creal(A(4))) + "," + Str(Cimag(A(4))) + ")", "(" + Str(Creal(A(5))) + "," + Str(Cimag(A(5))) + ")"
Debug.Print "(" + Str(Creal(A(6))) + "," + Str(Cimag(A(6))) + ")", "(" + Str(Creal(A(7))) + "," + Str(Cimag(A(7))) + ")", "(" + Str(Creal(A(8))) + "," + Str(Cimag(A(8))) + ")"
Debug.Print Ia(0), Ia(1), Ia(2), Ia(3)
Debug.Print Ja(0), Ja(1), Ja(2), Ja(3), Ja(4), Ja(5), Ja(6), Ja(7), Ja(8)
End Sub
Function Cimag(A As Complex) As Double
複素数の虚数部
Function Creal(A As Complex) As Double
複素数の実数部
Sub ZHBRead1(Fname As String, Title As String, Key As String, Nrow As Long, Ncol As Long, Nnz As Long, Val() As Complex, Ptr() As Long, Ind() As Long, DataType As Long, MatShape As Long, MatForm As Long, Optional Info As Long, Optional Nrhs As Long, Optional Base As Long=0, Optional Format As Long=0, Optional Sort As Long=0)
Harwell-Boeing形式ファイルの読み出し (シンプルドライバ) (複素行列)
実行結果
ZHBRead1: Info = 0
Title = "Test ZHBWrite1", Key = "Key", M = 3, N = 3, Nnz = 9
DataType = 1, MatShape = 0, MatForm = 0
( .78, .16) (-.9,-1.46) ( .48,-1.08)
( .73, .63) ( 1.58,-1.24) (-.41,-.91)
( .23,-1.37) ( .79, .64) (-.73,-1.5)
0 3 6 9
0 1 2 0 1 2 0 1 2