矩阵类Word文件下载.docx
- 文档编号:20763837
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:91
- 大小:31.22KB
矩阵类Word文件下载.docx
《矩阵类Word文件下载.docx》由会员分享,可在线阅读,更多相关《矩阵类Word文件下载.docx(91页珍藏版)》请在冰豆网上搜索。
returnelements[col+row*numColumns];
set
elements[col+row*numColumns]=value;
publicdoubleEps//用于获得数值计算的精度的公共属性
returneps;
eps=value;
publicMatrix()//Matrix类无参数的构造函数1:
用于产生一个1行1列的矩阵
numColumns=1;
numRows=1;
Init(numRows,numColumns);
publicMatrix(intnRows,intnCols)//Matrix类的构造函数2:
用于产生一个指定行数和列数的矩阵
numRows=nRows;
numColumns=nCols;
publicMatrix(double[,]value)//Matrix类的构造函数3:
用一个2维数组初始化成矩阵
numRows=value.GetLength(0);
//2维数组中的行数
numColumns=value.GetLength
(1);
//2维数组中的列数
double[]data=newdouble[numRows*numColumns];
//声明存储矩阵元素的数组
intk=0;
for(inti=0;
i<
numRows;
++i)
for(intj=0;
j<
numColumns;
++j)
data[k++]=value[i,j];
SetData(data);
publicMatrix(intnRows,intnCols,double[]value)//Matrix类的构造函数4:
用行列数初始化矩阵并把数组值导入矩阵
SetData(value);
publicMatrix(intnSize)//Matrix类的构造函数5:
用指定参数,初始化方矩阵
numRows=nSize;
numColumns=nSize;
Init(nSize,nSize);
publicMatrix(intnSize,double[]value)//Matrix类的构造函数6:
用指定参数,初始化方矩阵,并给方阵赋值
///<
summary>
///构造函数4:
用于从数据文件的数据构造一个矩阵
/summary>
paramname="
DataFileName"
>
数据文件的绝对路径和名字或者当前目录下的文件名字<
/param>
//publicMatrix(stringDataFileName)
//{
//this.Mat=LSMat.LoadDoubleDataFile(DataFileName);
//this.row=this.Mat.GetLength(0);
//this.col=this.Mat.GetLength
(1);
//this.hashcode=Matrix.matrixnumber;
//Matrix.matrixnumber++;
//}
publicMatrix(Matrixother)//Matrix类的构造函数7:
用已有的矩阵初始化新矩阵
numColumns=other.GetNumColumns();
numRows=other.GetNumRows();
SetData(other.elements);
publicboolInit(intnRows,intnCols)//初始化矩阵的行列数
intnSize=nCols*nRows;
if(nSize<
0)
returnfalse;
elements=newdouble[nSize];
//声明存储矩阵元素的变量
returntrue;
publicvoidSetEps(doublenewEps)//定义方法:
设置/缺省精度
eps=newEps;
publicdoubleGetEps()//定义方法:
获取设置的新的/缺省精度
publicstaticMatrixoperator+(Matrixm1,Matrixm2)//调用自定义Add()方法进行“+”重载:
两个矩阵相加
returnm1.Add(m2);
publicstaticMatrixoperator-(Matrixm1,Matrixm2)//调用自定义Subtract()方法进行“-”重载:
两个矩阵相减
returnm1.Subtract(m2);
publicstaticMatrixoperator*(Matrixm1,Matrixm2)//调用自定义Multiply()方法进行“*”重载:
矩阵与矩阵相乘
returnm1.Multiply(m2);
publicstaticMatrixoperator*(Matrixm1,doublem2)//调用自定义Multiply()方法进行“*”重载:
矩阵与数相乘
publicstaticimplicitoperatordouble[](Matrixm)//对double[]进行重载:
把矩阵显式转化为一维double型数组
returnm.elements;
publicboolMakeUnitMatrix(intnSize)//生成nSize阶单位矩阵
if(!
Init(nSize,nSize))
nSize;
if(i==j)
SetElement(i,j,1);
publicoverridestringToString()
returnToString("
"
true);
publicstringToString(stringsDelim,boolbLineBreak)//参数1,分隔符;
参数2,是否断点
StringBuildersb=newStringBuilder();
strings="
"
;
s+=GetElement(i,j).ToString();
if(bLineBreak)
if(j!
=numColumns-1)
s+=sDelim;
else
if(i!
=numRows-1||j!
sb.AppendLine(s);
returnsb.ToString();
publicstringToStringRow(intnRow,stringsDelim)
if(nRow>
=numRows)
returns;
stringss=GetElement(nRow,j).ToString("
F"
);
s+=ss;
publicstringToStringCol(intnCol,stringsDelim/*="
"
*/)
if(nCol>
=numColumns)
stringss=GetElement(i,nCol).ToString("
=numRows-1)
publicvoidSetData(double[]value)//导入矩阵元素的方法
elements=(double[])value.Clone();
//ObjectArray.Clone方法创建Array的浅表副本(浅表副本仅复制Array的元素(无论它们是引用类型还是值类型))
publicboolSetElement(intnRow,intnCol,doublevalue)//定义方法:
功能,使用数值参数设置指定行列下标的矩阵元素值
if(nCol<
0||nCol>
=numColumns||nRow<
0||nRow>
//arrayboundserror
elements[nCol+nRow*numColumns]=value;
publicdoubleGetElement(intnRow,intnCol)//参数为矩阵指定的行列下标,功能获取矩阵中指定位置的元素值
returnelements[nCol+nRow*numColumns];
publicintGetNumColumns()//获取矩阵的列数
publicintGetNumRows()//获取矩阵的行数
publicdouble[]GetData()//获取矩阵的元素,生成为为一维double型数组
returnelements;
publicdouble[,]GetArrayData()//获取矩阵的元素,把矩阵元素存储为2维double型数组
double[,]result=newdouble[numRows,numColumns];
i++)
j++)
result[i,j]=elements[j+i*numColumns];
returnresult;
publicintGetRowVector(intnRow,double[]pVector)//矩阵生成行向量:
把第参数1行的元素,转换成行向量并存入参数2中(一维Double型数组),返回矩阵的列数
pVector[j]=GetElement(nRow,j);
publicintGetColVector(intnCol,double[]pVector)//矩阵生成列向量:
把第参数1列的元素,转换成列向量并存入参数2中(一维Double型数组),返回矩阵的行数
pVector[i]=GetElement(i,nCol);
publicMatrixSetValue(Matrixother)//通过矩阵给矩阵赋值;
把已知矩阵的元素传递给另一个矩阵
if(other!
=this)
Init(other.GetNumRows(),other.GetNumColumns());
//finallyreturnareferencetoourselves
returnthis;
publicoverrideboolEquals(objectother)//判断两个矩阵是否相等
Matrixmatrix=otherasMatrix;
if(matrix==null)
//首先检查行列数是否相等
if(numColumns!
=matrix.GetNumColumns()||numRows!
=matrix.GetNumRows())
if(Math.Abs(GetElement(i,j)-matrix.GetElement(i,j))>
eps)//Math.Abs():
返回参数的绝对值
publicoverrideintGetHashCode()
doublesum=0;
sum+=Math.Abs(GetElement(i,j));
return(int)Math.Sqrt(sum);
//Math.Sqrt()返回参数的平方根。
publicMatrixAdd(Matrixother)//定义方法Add:
功能:
实现矩阵相加
//构造结果矩阵
Matrixresult=newMatrix(this);
//拷贝构造
if(other==null)
=other.GetNumColumns()||
numRows!
=other.GetNumRows())
thrownewMatrixException("
矩阵的行/列数不匹配。
//矩阵加法
result.SetElement(i,j,result.GetElement(i,j)+other.GetElement(i,j));
publicMatrixSubtract(Matrixother)//定义方法Subtract:
实现矩阵相减
//进行减法操作
result.SetElement(i,j,result.GetElement(i,j)-other.GetElement(i,j));
publicMatrixMultiply(doublevalue)//定义方法Multiply();
实现矩阵与数相乘
//构造目标矩阵
//copyourselves
//进行数乘
result.SetElement(i,j,result.GetElement(i,j)*value);
publicMatrixMultiply(Matrixother)
=other.GetNumRows())//首先检查行列数是否符合要求
Matrixresult=newMatrix(numRows,other.GetNumColumns());
//声明结果矩阵对象
//矩阵乘法,即
//[A][B][C][G][H][A*G+B*I+C*K][A*H+B*J+C*L]
//[D][E][F]*[I][J]=[D*G+E*I+F*K][D*H+E*J+F*L]
//[K][L]
doublevalue;
result.GetNumRows();
other.GetNumColumns();
value=0.0;
for(intk=0;
k<
++k)
value+=GetElement(i,k)*other.GetElement(k,j);
result.SetElement(i,j,value);
publicboolMultiply(MatrixAR,MatrixAI,MatrixBR,MatrixBI,MatrixCR,MatrixCI)
//首先检查行列数是否符合要求
if(AR.GetNumColumns()!
=AI.GetNumColumns()||
AR.GetNumRows()!
=AI.GetNumRows()||
BR.GetNumColumns()!
=BI.GetNumColumns()||
BR.GetNumRows()!
=BI.GetNumRows()||
AR.GetNumColumns()!
=BR.GetNumRows())
//构造乘积矩阵实部矩阵和虚部矩阵
MatrixmtxCR=newMatrix(AR.GetNumRows(),BR.GetNumColumns());
MatrixmtxCI=newMatrix(AR.GetNumRows(),BR.GetNumColumns());
//复矩阵相乘
AR.GetNumRows();
BR.GetNumColumns();
doublevr=0;
doublevi=0;
AR.GetNumColumns();
doublep=AR.GetElement(i,k)*BR.GetElement(k,j);
doubleq=AI.GetElement(i,k)*BI.GetElement(k,j);
doubles=(AR.GetElement(i,k)+AI.GetElement(i,k))*(BR.GetElem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 矩阵