资源描述:
《矩阵运算的程序实现以C描述》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、矩阵运算的程序实现一一以C#描述矩阵运算的程序实现一一以c#描述〃求去掉某行、某列(INum)后的矩阵double]」minus(inthNumJntINum,double[Jmatr){intm=(int)Math.Sqrt(matr.Length);//获取原行列式的行数intn=(int)Math.Sqrt(matr.Length);//获取原行列式的列数double[JnewMatr=newdouble[m・1,m・1];//新建二维数组,用于存储变形后的行列式讦(INum>m-1
2、
3、INum<0
4、
5、hNum>
6、;m・1
7、
8、hNum<0){MessageBox.Show("不存在该列或行");}讦(INum==m-1&&hNum==m-1)〃如果去掉的行列都为最后一行一列for(inti=0;i<m-l;i++)for(intj=O;j<m-l;j++){newMatr[i?j]=matr[i,j];}}if(INum==m-1&&hNum<m-1&&hNum>二0)//去掉最后一列,中间一行{for(intj=O;j<m-l;j++){f
9、or(inti=0;i<hNum;i++){newMatr[i?j]=matr[i,j];}for(inti=hNum;i<m・1;i++){newMatr[izj]=matr[i+1,j];}}}讦(hNum==m-1&&INum<m・1&&INum>二0)//去掉最后一行,中间一列for(inti=0;i<m・1;i++){for(intj=0;j<INum;j++){newMatr[i,j]=matr[i,j];}for(intj=iNum;j<m-1;j
10、++){newMatr[izj]=matr[i,j+1];}}}讦(INum<m-1&&INum>二0&&hNum<m・1&&hNum>二0)//去掉中间行列{for(inti=0;i<hNum;i++){for(intj=0;j<INum;j++)newMatr[i?j]=matr[i,j];for(intj2=INum;j2<m-l;j2++){newMatr[i,j2]=matr[i,j2+l];}}111111111/for(inti=h
11、Num;i<m-1;i++){for(intj=0;j<INum;j++){newl/latr[izj]=matr[i+1,j];}for(intj2=INum;j2<m-1;j2++){newMatr[i,j2]=matr[i+1,j2+1];}}}returnnewMatr;〃求行列式publicdoublevalueHls(double[,]matr){doublevalue=0;//用于存储最后计算值doublee=-1;//-1的次数if(matr.Length==1)value=i=matr[0,0];
12、i//if(matr.Length>l)//if不套for//{for(intj=0;j<Math.Sqrt(matr.Length)&&matr.Length>1;j++){e=e*(-1);double[JB=minus(0jmatr);value+=e*matr[O,j]*valueHls(B);}//}returnvalue;}〃矩阵求逆publicdouble[,]matrlnver(double[」matr){intm=(int)Math.Sqrt(matr.Length);//获取原行列
13、式的行数intn=(int)Math.Sqrt(matr.Length);//获取原行列式的列数doublet/]newMatr=newdouble[m,m];//新建二维数组,用于存储变形后的行列式doubleAValue=0;doublee=-1;//-1的次数AValue=1/valueHls(matr);for(inti=0;i<m;i++)for(intj=0;j<m;j++){e*=-l;newMatr[i,j]=e*AValue*valueHls(minus(j,i,matr));returnnewMatr;
14、}〃矩阵相乘publicdouble^]matrMult(doublea,double]」matr){doublet,]newMatr=newdouble[matr.GetLength(0),matr.GetLength