当前位置: 首页 > 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.pierceye.com/news/260920/

相关文章:

  • windows 做网站服务器python做的网站漏洞
  • 培训网站推荐网站内容该怎么做
  • 精通网站建设电子档朵朵软件网站建设
  • 铜山区规划建设局网站网站开发的甘特图
  • 访问网站速度慢中国最新军事新闻直播
  • 商城网站的psd模板免费下载哪里可以上传自己的php网站
  • 珠宝网站策划书网页设计的毕业设计
  • 最经典最常用的网站推广方式什么做网站赚钱
  • 广州哪家做网站化妆品网站方案
  • cms开源网站管理系统北京网站建设策划解决方案
  • 洛阳做多屏合一网站最新款淘宝客源码整网站程序模板+后台带自动采集商品功能带文章
  • 宁国新站seo中国建筑网官网监理工程师网站
  • 自己建网站多少钱福州建设企业网站
  • 容桂佛山做app网站wordpress 搜索 任意
  • dw做单页网站教程盐城网站建设价位
  • 赤峰建设业协会的官方网站wordpress博客伪静态
  • 2016个人做淘宝客网站网站备案备注信息
  • 加盟招商推广网站怎么做网站的防盗链
  • 南阳网站关键词ppt在线浏览网站源码
  • 用vs2012做网站首页涉密网络建设
  • 个人主题网站设计seo技术论坛
  • 做venn图的网站网页设计期末考试作品
  • 中英文网站怎么做外贸SOHO建公司网站
  • 展馆门户网站建设广告片制作公司
  • 周至做网站的公司百度推广开户免费
  • 网站建设百度认证机场建设集团网站
  • 建设网站要多久的时间app软件小程序网站建设
  • 营销网站重要特点是网站建设运维方案
  • 江西网站定制公司丰润区建设局网站
  • 手机网站制作费用合肥优化推广公司