Loading article…
パック ストレージ マトリックス(パック マトリックスとも呼ばれる) は、プログラミングでマトリックスを表すために使用される用語です。これは、マトリックスの特殊な構造を利用することで、m 行 n 列の長方形配列よりもコンパクトな方法です。
パックストレージを活用できる行列の典型的な例は次のとおりです。
三角形のパック行列
パックされたストレージ行列を使用すると、行列を配列に変換して、行列を大幅に縮小することができます。正方行列を長さの配列に変換すると、(n-1)/2 . [1]
次の上側の行列を考えてみましょう。
これを 1 つの配列にまとめることができます。
- [2]
同様に下の行列:
次の 1 次元配列にパックできます。
- [2]
コード例 (Fortran)
次の両方のストレージ スキームは、BLAS および LAPACK で広く使用されています。
エルミート行列のパックされたストレージの例:
complex :: A ( n , n ) ! エルミート行列complex :: AP ( n * ( n + 1 ) / 2 ) ! A のパックされたストレージ! A の下三角は AP に列ごとに格納されます。! 行列 AP を A に展開しますdo j = 1 , n k = j * ( j - 1 ) / 2 A ( 1 : j , j ) = AP ( 1 + k : j + k ) A ( j , 1 : j - 1 ) = conjg ( AP ( 1 + k : j - 1 + k )) end do
バンド行列のパックされたストレージの例:
real :: A ( m , n ) ! kl 個の副対角要素と ku 個の上対角要素を持つ帯行列real :: AP ( - kl : ku , n ) ! A のパックされたストレージ! A の帯は AP に列ごとに格納されます。AP の一部の要素は使用されません。! 行列 AP を A に展開do j = 1 , n forall ( i = max ( 1 , j - kl ): min ( m , j + ku )) A ( i , j ) = AP ( i - j , j ) end do print * , AP ( 0 ,:) ! 対角要素
参照
さらに読む
- https://www.netlib.org/lapack/lug/
- https://www.netlib.org/blas/
- https://github.com/numericalalgorithmsgroup/LAPACK_Examples
参考文献
- ^ Golub, Gene H.; Van Loan, Charles F. (2013). Matrix Computations (第4版). メリーランド州ボルチモア: Johns Hopkins University Press. p. 170. ISBN 9781421407944。
- ^ ab Blackford, Susan (1999-10-01). 「Packed Storage」. Netlib . LAPACK ユーザーズ ガイド. 2024-04-01 にオリジナルからアーカイブ。 2024-10-01に取得。
