当前位置: 首页 > news >正文

网站自然优化自学陕西省建设信息管理网站

网站自然优化自学,陕西省建设信息管理网站,辽源做网站,免费咨询服务合同范本免费版本文实例讲述了C#计算矩阵的逆矩阵方法。分享给大家供大家参考。具体如下#xff1a;1.代码思路1)对矩阵进行合法性检查#xff1a;矩阵必须为方阵2)计算矩阵行列式的值(Determinant函数)3)只有满秩矩阵才有逆矩阵#xff0c;因此如果行列式的值为0(在代码中以绝对值小于1E-…本文实例讲述了C#计算矩阵的逆矩阵方法。分享给大家供大家参考。具体如下1.代码思路1)对矩阵进行合法性检查矩阵必须为方阵2)计算矩阵行列式的值(Determinant函数)3)只有满秩矩阵才有逆矩阵因此如果行列式的值为0(在代码中以绝对值小于1E-6做判断)则终止函数报出异常4)求出伴随矩阵(AdjointMatrix函数)5)逆矩阵各元素即其伴随矩阵各元素除以矩阵行列式的商2.函数代码(注本段代码只实现了一个思路可能并不是该问题的最优解)/// /// 求矩阵的逆矩阵/// /// /// public static double[][] InverseMatrix(double[][] matrix){//matrix必须为非空if (matrix null || matrix.Length 0){return new double[][] { };}//matrix 必须为方阵int len matrix.Length;for (int counter 0; counter matrix.Length; counter){if (matrix[counter].Length ! len){throw new Exception(matrix 必须为方阵);}}//计算矩阵行列式的值double dDeterminant Determinant(matrix);if (Math.Abs(dDeterminant) 1E-6){throw new Exception(矩阵不可逆);}//制作一个伴随矩阵大小的矩阵double[][] result AdjointMatrix(matrix);//矩阵的每项除以矩阵行列式的值即为所求for (int i 0; i matrix.Length; i){for (int j 0; j matrix.Length; j){result[i][j] result[i][j] / dDeterminant;}}return result;}/// /// 递归计算行列式的值/// /// 矩阵/// public static double Determinant(double[][] matrix){//二阶及以下行列式直接计算if (matrix.Length 0) return 0;else if (matrix.Length 1) return matrix[0][0];else if (matrix.Length 2){return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];}//对第一行使用“加边法”递归计算行列式的值double dSum 0, dSign 1;for (int i 0; i matrix.Length; i){double[][] matrixTemp new double[matrix.Length - 1][];for (int count 0; count matrix.Length - 1; count){matrixTemp[count] new double[matrix.Length - 1];}for (int j 0; j matrixTemp.Length; j){for (int k 0; k matrixTemp.Length; k){matrixTemp[j][k] matrix[j 1][k i ? k 1 : k];}}dSum (matrix[0][i] * dSign * Determinant(matrixTemp));dSign dSign * -1;}return dSum;}/// /// 计算方阵的伴随矩阵/// /// 方阵/// public static double[][] AdjointMatrix(double [][] matrix){//制作一个伴随矩阵大小的矩阵double[][] result new double[matrix.Length][];for (int i 0; i result.Length; i){result[i] new double[matrix[i].Length];}//生成伴随矩阵for (int i 0; i result.Length; i){for (int j 0; j result.Length; j){//存储代数余子式的矩阵(行、列数都比原矩阵少1)double[][] temp new double[result.Length - 1][];for (int k 0; k result.Length - 1; k){temp[k] new double[result[k].Length - 1];}//生成代数余子式for (int x 0; x temp.Length; x){for (int y 0; y temp.Length; y){temp[x][y] matrix[x i ? x : x 1][y j ? y : y 1];}}//Console.WriteLine(代数余子式:);//PrintMatrix(temp);result[j][i] ((i j) % 2 0 ? 1 : -1) * Determinant(temp);}}//Console.WriteLine(伴随矩阵);//PrintMatrix(result);return result;}/// /// 打印矩阵/// /// 待打印矩阵private static void PrintMatrix(double[][] matrix, string title ){//1.标题值为空则不显示标题if (!String.IsNullOrWhiteSpace(title)){Console.WriteLine(title);}//2.打印矩阵for (int i 0; i matrix.Length; i){for (int j 0; j matrix[i].Length; j){Console.Write(matrix[i][j] \t);//注意不能写为Console.Write(matrix[i][j] \t);}Console.WriteLine();}//3.空行Console.WriteLine();}3.Main函数调用static void Main(string[] args){double[][] matrix new double[][]{new double[] { 1, 2, 3 },new double[] { 2, 2, 1 },new double[] { 3, 4, 3 }};PrintMatrix(matrix, 原矩阵);PrintMatrix(AdjointMatrix(matrix), 伴随矩阵);Console.WriteLine(行列式的值为 Determinant(matrix) \n);PrintMatrix(InverseMatrix(matrix), 逆矩阵);Console.ReadLine();}4.执行结果希望本文所述对大家的C#程序设计有所帮助。
http://www.zqtcl.cn/news/260920/

相关文章:

  • 河北石家庄特产做网站优化的
  • 做网站工资年新多少在广东番禺网页设计公司
  • 宝安专业手机网站设计公司王野天个人资料
  • 给网站做蜘蛛抓取赚钱
  • 康保网站制作高端网站制作服务
  • 网站建设的网站分析怎么写crm管理系统销售
  • 茂名做网站的公司大专学电子商务有用吗
  • qq空间做宣传网站如何做图片网站
  • 邯郸住房城乡建设厅网站建设银行网站钓鱼网站
  • 高密建网站龙门城乡规划建设局网站
  • 阿里云从哪里建设网站企业设计网站公司排名
  • 长春做网站推广的公司公司要做个网站吗
  • 天水 网站建设招聘个人网站建设的国外文献综述
  • 什么网站做推广最好建行网站用户名是什么
  • 网站建设和维护需要学的东西服务器学生
  • 电子工厂网站建设企业管理咨询报告
  • 敖汉旗网站建设网站建设班级通讯录
  • 把手机做网站服务器做网站商丘
  • 婚恋咨询网站运营做速卖通代码的网站
  • 网站建设流程有哪七步c语言做的网站有什么优缺点
  • 树在线网页制作网站邢台中北世纪城网站兼职
  • 备案网站建设方案模板怎么看网站域名
  • asp iis设置网站路径效果好网站建设哪家好
  • 河南做外贸网站的公司大连在哪个省的什么位置
  • 网站架构怎么做wordpress e-commerce themes
  • 哪些网站微信支付平台经营管理系统
  • 教育教学成果展示网站建设桂林网站开发公司
  • 唐山房产网站建设asp.net 网站压缩
  • 卫浴网站设计大型网站建设的必须条件
  • 肇庆制作企业网站seo网站建设课程