Spmat¶
- class Spmat(*args)¶
GetFEM Spmat オブジェクト
GetFEM形式で新しい疎行列を作成します.これらの疎行列は,Matlabで使用される形式であるCSC(圧縮された疎の列)として保存することも,WSC(getfemの内部形式)として保存することもできます.CSC行列は書き込み可能ではありませんが(これは非常に非効率的です),ベクトルとの乗算とメモリ使用量のために最適化されています.WSCは書き込み可能であり,ランダムな読み取り/書き込み操作に関して非常に高速です.しかし,メモリオーバヘッドはCSC行列よりも高く,行列ベクトル乗算では若干遅いです.
デフォルトでは,新しく作成されたマトリックスはすべてWSCマトリックスとして構築されます.これは後で
Spmat.to_csc(...)
か,あるいはgetfem(例えばgf_linsolve()
は行列をCSCに変換します)によって自動的に変更できます.マトリックスには実数値または複素数値を格納できます.
Spmat オブジェクトの汎用的なコンストラクタ
SM = Spmat('empty', int m [, int n])
新しい空の(すなわち,ゼロで満たされた)次元 m x n 疎行列を作成します. n を省略すると,行列の次元は m x m になります.SM = Spmat('copy', mat K [, list I [, list J]])
(SpMatかもしれない)マトリックスKを複製します.インデックス I 及び/又は J が与えられる場合,行列は K の部分行列となります.例えばm = Spmat('copy', Spmat('empty',50,50), range(40), [6, 7, 8, 3, 10])
は 40x5 の行列を返します.
SM = Spmat('identity', int n)
n x n 次の単位行列を作成します.SM = Spmat('mult', Spmat A, Spmat B)
疎行列AとBの積の疎行列を作成します. A と B が両方とも実数であるか,両方とも複素数である必要があります.Spmat.to_complex()
を使う必要があるかもしれません.SM = Spmat('add', Spmat A, Spmat B)
疎行列AとBの和の疎行列を作成します.複素数行列を持つ実数行列の追加が可能です.SM = Spmat('diag', mat D [, ivec E [, int n [,int m]]])
対角行列を作成します. E が与えられる場合, D は行列であり, E の各列は D の対応する列の部分対角番号を含みます.SM = Spmat('load','hb'|'harwell-boeing'|'mm'|'matrix-market', string filename)
Harwell-BoeingやMatrix-Marketのファイルから疎行列を読みます.
- add(I, J, V)¶
小行列 'M(I,J)' に V を加えます.
V は疎行列でも密行列でもかまいません.
- assign(I, J, V)¶
Vを小行列 'M(I,J)' にコピーします.
V は疎行列でも密行列でもかまいません.
- char()¶
Spmatの(ユニークな)文字列表現を出力します.
これを使用して,2つの異なるSpmatオブジェクト間の比較を実行できます.この機能は完成予定です.
- clear(I=None, *args)¶
概要: Spmat.clear(self[, list I[, list J]])
行列のゼロ以外のエントリを削除します.
行列全体ではなく,小行列をクリアするには,オプションの引数 I と J を指定します.
- conjugate()¶
行列の各要素を共役させます.
- csc_ind()¶
CSCストレージの2つの通常のインデックス配列を返します.
M がCSC行列として保存されていない場合,それはCSCに変換されます.
- csc_val()¶
M の0以外のすべての要素の値の配列を返します.
M がCSC行列として保存されていない場合,それはCSCに変換されます.
- determinant()¶
MUMPSを使用して計算された行列式を返します.
- diag(E=None)¶
M の対角をベクトルとして返します.
E が使用されている場合,rankがEで与えられている部分対角を返します.
- dirichlet_nullspace(R)¶
Dirichlet条件 M.U=R を解きます.
最小L2ノルムを持つ解 U0 が(アセンブリング)制約行列M(すなわち,偏微分線形方程式系はこの部分空間上で解かれるべきである)のカーネルの直交基底を含む疎行列Nとともに返されます.
M.U=R の制約がある K.U = B
は次のように変わります
(N'.K.N).UU = N'.B ただし U = N.UU + U0
- display()¶
Spmatオブジェクトの簡単な概要が表示されます.
- full(I=None, *args)¶
概要: Sm = Spmat.full(self[, list I[, list J]])
(小)行列全体を返します.
オプションの引数 I および J は,抽出される行および列のサブインターバルです.
- is_complex()¶
行列に複素数が含まれている場合,1を返します.
- mult(V)¶
ベクトル V と疎行列 M の積.
行列と行列の乗算については, Spmat('mult') を参照してください.
- nnz()¶
疎行列に格納されている非NULL値の数を返します.
- save(format, filename)¶
疎行列をエクスポートします.
ファイルの形式は,Harwell-Boeingの場合は 'hb' ,Matrix-Marketの場合は 'mm' となります.
- scale(v)¶
行列をスカラー値 v で乗算します.
- set_diag(D, E=None)¶
マトリックスの対角(または副対角)を変更します.
E が与えられる場合, D は行列であり, E の各列は D の対応する列の部分対角の番号を含みます.
- size()¶
ni と nj が行列の次元であるベクトルを返します.
- storage()¶
行列で現在使用されているストレージの種類を返します.
ストレージは文字列 'CSC' または 'WSC'として返されます.
- tmult(V)¶
ベクトル V と転置された M は( M が複素数の場合は共役)の積.
- to_complex()¶
複素数を格納します.
- to_csc()¶
マトリックスをCSCストレージに変換します.
行列-ベクトル乗算にはCSCストレージが推奨されます.
- to_wsc()¶
行列をWSCストレージに変換します.
WSCストレージでは,読み取りと書き込み処理が非常に高速です.
- transconj()¶
行列を転置して共役させます.
- transpose()¶
行列を転置します.