NMath應用教程:如何實現結構化稀疏矩陣類

.NET函數庫 NMath提供了各類各樣的結構化稀疏矩陣類型。結構性稀疏矩陣能夠比通常的矩陣更有效地被操縱,由於全部的元素並不須要被存儲。html

NMath包含的類以下表示:函數

  • 三角矩陣spa

爲了提升效率,只對上三角矩陣和下三角矩陣分別保存。code

  • 對稱和Hermite矩陣htm

對於對稱和Hermite矩陣,NMath只保存上三角。索引

  • 帶狀矩陣ci

爲了效率,零元素之外的帶寬矩陣沒有被保存。get

  • 三對角矩陣it

三對角矩陣的主對角線,超對角線,和次對角以外的0元素,NMath不保存。table

接下來爲你們帶來一個用 FloatComplexTriDiagMatrix 類來建立一個三對角矩陣單精度複數的代碼示例:

?

1
2
3
int rows = 8; cols = 8;
FloatComplexTriDiagMatrix A =
   new FloatComplexTriDiagMatrix( rows, cols );

在三角矩陣中使用 Diagonal() 可以快速的爲其設定主對角線,超對角線,和次對角:

?

1
2
3
4
5
6
7
8
9
10
11
12
A.Diagonal( -1 ).Set( Slice.All, 1 );
A.Diagonal( 0 ).Set( Slice.All, 2 );
A.Diagonal( 1 ).Set( Slice.All, 3 );
Console.WriteLine( "A = {0}" , A.ToString() );
// A = 8x8 [ (2,0) (3,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) 
//           (1,0) (2,0) (3,0) (0,0) (0,0) (0,0) (0,0) (0,0) 
//           (0,0) (1,0) (2,0) (3,0) (0,0) (0,0) (0,0) (0,0) 
//           (0,0) (0,0) (1,0) (2,0) (3,0) (0,0) (0,0) (0,0) 
//           (0,0) (0,0) (0,0) (1,0) (2,0) (3,0) (0,0) (0,0) 
//           (0,0) (0,0) (0,0) (0,0) (1,0) (2,0) (3,0) (0,0) 
//           (0,0) (0,0) (0,0) (0,0) (0,0) (1,0) (2,0) (3,0) 
//           (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1,0) (2,0)]

索引就會把它看成爲通常的矩陣而運行:

?

1
FloatComplex c = A[7,0];

還支持使用索引的值設置對角矩陣中對角線元素:

?

1
A[2,1] = new FloatComplex( 2, -1 );
相關文章
相關標籤/搜索