欢迎来到天天文库
浏览记录
ID:27012568
大小:51.96 KB
页数:7页
时间:2018-11-30
《实现 矩阵对称化和反对称化》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法2016/1/3转自:http://www.jb51.net/article/70996.htm作者:北风其凉字体:[增加减小]类型:转载时间:2015-08-12我要评论这篇文章主要介绍了C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法,较为详细的分析了矩阵分解运算的原理与C#实现技巧,需要的朋友可以参考下本文实例讲述了C#实现将一个矩阵分解为对称矩阵与反称矩阵之和的方法。分享给大家供大家参考。具体如下:1.理论依据因为反对称矩阵满足A^T=-A设A=(aij)则
2、有aii=-aii所以aii=0.即主对角线上元素全为0.对任意n阶方阵A,有A=(A+T(A))/2+(A-T(A))/2,其中T(A)是A的转置,(A+T(A))/2是一个对称矩阵,(A-T(A))/2是一个反称矩阵。2.求出对称矩阵部分的函数//////把矩阵分解为对称矩阵与反称矩阵之和:对称矩阵//////矩阵///privatestaticdouble[][]SymmetricPa
3、rt(double[][]matrix){//合法性校验:矩阵必须为方阵if(MatrixCR(matrix)[0]!=MatrixCR(matrix)[1]){thrownewException("matrix不是一个方阵");}//矩阵中没有元素的情况if(matrix.Length==0){returnnewdouble[][]{};}//生成一个与matrix同型的空矩阵double[][]result=newdouble[matrix.Length][];for(inti=0;i4、++){result[i]=newdouble[matrix[i].Length];}//对称矩阵为(A+T(A))/2其中A为原矩阵,T(A)为A的转置矩阵for(inti=0;i///把矩阵分解为对称矩阵与反称矩阵之和:反称矩阵///5、ary>///矩阵///privatestaticdouble[][]SkewSymmetricPart(double[][]matrix){//合法性校验:矩阵必须为方阵if(MatrixCR(matrix)[0]!=MatrixCR(matrix)[1]){thrownewException("matrix不是一个方阵");}//矩阵中没有元素的情况if(matrix.Length==0){returnnewdouble[]6、[]{};}//生成一个与matrix同型的空矩阵double[][]result=newdouble[matrix.Length][];for(inti=0;i7、[j]-matrix[j][i])/2.0;}}returnresult;}4.其他函数//////判断一个二维数组是否为矩阵//////二维数组///true:是矩阵false:不是矩阵privatestaticboolisMatrix(double[][]matrix){//空矩阵是矩阵if(matrix.Length<1)returntrue;//不同行列数如果不相等,则不是矩阵int8、count=matrix[0].Length;for(inti=1;i///计算一个矩阵的行数和列数///
4、++){result[i]=newdouble[matrix[i].Length];}//对称矩阵为(A+T(A))/2其中A为原矩阵,T(A)为A的转置矩阵for(inti=0;i///把矩阵分解为对称矩阵与反称矩阵之和:反称矩阵///5、ary>///矩阵///privatestaticdouble[][]SkewSymmetricPart(double[][]matrix){//合法性校验:矩阵必须为方阵if(MatrixCR(matrix)[0]!=MatrixCR(matrix)[1]){thrownewException("matrix不是一个方阵");}//矩阵中没有元素的情况if(matrix.Length==0){returnnewdouble[]6、[]{};}//生成一个与matrix同型的空矩阵double[][]result=newdouble[matrix.Length][];for(inti=0;i7、[j]-matrix[j][i])/2.0;}}returnresult;}4.其他函数//////判断一个二维数组是否为矩阵//////二维数组///true:是矩阵false:不是矩阵privatestaticboolisMatrix(double[][]matrix){//空矩阵是矩阵if(matrix.Length<1)returntrue;//不同行列数如果不相等,则不是矩阵int8、count=matrix[0].Length;for(inti=1;i///计算一个矩阵的行数和列数///
5、ary>///矩阵///privatestaticdouble[][]SkewSymmetricPart(double[][]matrix){//合法性校验:矩阵必须为方阵if(MatrixCR(matrix)[0]!=MatrixCR(matrix)[1]){thrownewException("matrix不是一个方阵");}//矩阵中没有元素的情况if(matrix.Length==0){returnnewdouble[]
6、[]{};}//生成一个与matrix同型的空矩阵double[][]result=newdouble[matrix.Length][];for(inti=0;i7、[j]-matrix[j][i])/2.0;}}returnresult;}4.其他函数//////判断一个二维数组是否为矩阵//////二维数组///true:是矩阵false:不是矩阵privatestaticboolisMatrix(double[][]matrix){//空矩阵是矩阵if(matrix.Length<1)returntrue;//不同行列数如果不相等,则不是矩阵int8、count=matrix[0].Length;for(inti=1;i///计算一个矩阵的行数和列数///
7、[j]-matrix[j][i])/2.0;}}returnresult;}4.其他函数//////判断一个二维数组是否为矩阵//////二维数组///true:是矩阵false:不是矩阵privatestaticboolisMatrix(double[][]matrix){//空矩阵是矩阵if(matrix.Length<1)returntrue;//不同行列数如果不相等,则不是矩阵int
8、count=matrix[0].Length;for(inti=1;i///计算一个矩阵的行数和列数///
此文档下载收益归作者所有