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]]) Duplicate a matrix K (which might be a SpMat). If index I and/or J are given, the matrix will be a submatrix of K. For example:

    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の積の疎行列を作成します. AB が両方とも実数であるか,両方とも複素数である必要があります. 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]])

行列のゼロ以外のエントリを削除します.

行列全体ではなく,小行列をクリアするには,オプションの引数 IJ を指定します.

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()

ninj が行列の次元であるベクトルを返します.

storage()

行列で現在使用されているストレージの種類を返します.

ストレージは文字列 'CSC' または 'WSC'として返されます.

tmult(V)

ベクトル V と転置された M は( M が複素数の場合は共役)の積.

to_complex()

複素数を格納します.

to_csc()

マトリックスをCSCストレージに変換します.

行列-ベクトル乗算にはCSCストレージが推奨されます.

to_wsc()

行列をWSCストレージに変換します.

WSCストレージでは,読み取りと書き込み処理が非常に高速です.

transconj()

行列を転置して共役させます.

transpose()

行列を転置します.