パックされたストレージマトリックス

パックドストレージ行列(パックドマトリックスとも呼ばれる)は、プログラミングにおいて行列を表現するために使用される用語です。これは、行列の特殊な構造を利用することで、m行n列の矩形配列よりもコンパクトな表現方法です。

パックストレージを活用できる行列の一般的な例は次のとおりです。

三角形のパック行列

パックされた記憶行列は、行列を配列に変換することで、行列を大幅に縮小することができます。これにより、正方行列は長さの配列に変換されます。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

参考文献

  1. ^ Golub, Gene H.; Van Loan, Charles F. (2013). Matrix Computations (第4版). ボルチモア, MD: Johns Hopkins University Press. p. 170. ISBN 9781421407944
  2. ^ ab Blackford, Susan (1999-10-01). 「Packed Storage」. Netlib . LAPACK ユーザーズガイド. 2024年4月1日時点のオリジナルよりアーカイブ。 2024年10月1日閲覧
Retrieved from "https://en.wikipedia.org/w/index.php?title=Packed_storage_matrix&oldid=1285634819"