資源簡介
這是一個用c#語言寫成的矩陣類,可以完成矩陣的各種準確的數學計算,如:矩陣的加減乘除、轉置、逆運算、 復矩陣的乘法、求行列式值、 求矩陣秩、一般實矩陣的奇異值分解、求廣義逆、約化對稱矩陣為對稱三對角陣、實對稱三對角陣的全部特征值與特征向量的計算、求赫申伯格矩陣全部特征值、求實對稱矩陣特征值與特征向量等.可以將其做成dll用到其他的環境下。填補了.net中沒有矩陣的空白,是你進行科學計算不可或缺的插件之一。
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Text;
namespace?Matrix
{
????public?class?Matrix
????{
????????private?int?numColumns?=?0; //?矩陣列數
????????private?int?numRows?=?0; //?矩陣行數
????????private?double?eps?=?0.0; //?缺省精度
????????private?double[]?elements?=?null; //?矩陣數據緩沖區
????????/**
?????????*?屬性:?矩陣列數
?????????*/
????????public?int?Columns
????????{
????????????get
????????????{
????????????????return?numColumns;
????????????}
????????}
????????/**
?????????*?屬性:?矩陣行數
?????????*/
????????public?int?Rows
????????{
????????????get
????????????{
????????????????return?numRows;
????????????}
????????}
????????/**
?????????*?索引器:?訪問矩陣元素
?????????*?@param?row?-?元素的行
?????????*?@param?col?-?元素的列
?????????*/
????????public?double?this[int?row?int?col]
????????{
????????????get
????????????{
????????????????return?elements[col?+?row?*?numColumns];
????????????}
????????????set
????????????{
????????????????elements[col?+?row?*?numColumns]?=?value;
????????????}
????????}
????????/**
?????????*?屬性:?Eps
?????????*/
????????public?double?Eps
????????{
????????????get
????????????{
????????????????return?eps;
????????????}
????????????set
????????????{
????????????????eps?=?value;
????????????}
????????}
????????/**
?????????*?基本構造函數
?????????*/
????????public?Matrix()
????????{
????????????numColumns?=?1;
????????????numRows?=?1;
????????????Init(numRows?numColumns);
????????}
????????/**
?????????*?指定行列構造函數
?????????*?
?????????*?@param?nRows?-?指定的矩陣行數
?????????*?@param?nCols?-?指定的矩陣列數
?????????*/
????????public?Matrix(int?nRows?int?nCols)
????????{
????????????numRows?=?nRows;
????????????numColumns?=?nCols;
????????????Init(numRows?numColumns);
????????}
????????/**
?????????*?指定值構造函數
?????????*?
?????????*?@param?value?-?二維數組,存儲矩陣各元素的值
?????????*/
????????public?Matrix(double[]?value)
????????{
????????????numRows?=?value.GetLength(0);
????????????numColumns?=?value.GetLength(1);
????????????double[]?data?=?new?double[numRows?*?numColumns];
????????????int?k?=?0;
????????????for?(int?i?=?0;?i?????????????{
????????????????for?(int?j?=?0;?j?????????????????{
????????????????????data[k++]?=?value[i?j];
????????????????}
????????????}
????????????Init(numRows?numColumns);
????????????SetData(data);
????????}
????????/**
?????????*?指定值構造函數
?????????*?
?????????*?@param?nRows?-?指定的矩陣行數
?????????*?@param?nCols?-?指定的矩陣列數
?????????*?@param?value?-?一維數組,長度為nRows*nCols,存儲矩陣各元素的值
?????????*/
????????public?Matrix(int?nRows?int?nCols?double[]?value)
????????{
????????????numRows?=?nRows;
????????????numColumns?=?nCols;
????????????Init(numRows?numColumns);
????????????SetData(value);
????????}
????????/**
?????????*?方陣構造函數
?????????*?
?????????*?@param?nSize?-?方陣行列數
?????????*/
????????public?Matrix(int?nSize)
????????{
????????????numRows?=?nSize;
評論
共有 條評論