逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值

逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值1、简单介绍         一个方阵A如果满足,则A可逆,且

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、计算思路

              一个方阵 A 如果满足逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值,则A可逆, 且

                                                 逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值   

              由上面公式可以知道,我们只需求出 A 的伴随阵及A对应的行列式的值即可求出方阵A的

       逆矩阵。下面将分别实现这两个部分。

二、具体实现

       1、计算矩阵A对应的行列式的值

                     引入一个定理: 行列式的值等于它的任一行(列)的各元素与其对应的代数余子式

        乘积之和

                上面定理中提到了代数余子式,其实这个概念很简单。在n阶行列式中位于 (i,  j) 的元素逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值

         代数余子式就是将该元素所在的第i行和第j列划掉后,留下来的n-1阶行列式叫做逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值的余子式,

                 记作逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值。记

    逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值

             逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值叫做元逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值的代数余子式。

                       根据上面这些我们就可以写出 计算矩阵对应的行列式的值的算法了。                                                                         

private static double getValueOfDeterminant(double[][] data) { if(data.length == 1) { return data[0][0]; } if(data.length == 2) { return data[0][0] * data[1][1] - data[0][1] * data[1][0]; } double valueOfDeterminant = 0; double[] elementsMultiplyItsCofactor = new double[data[0].length]; for(int j=0; j<data[0].length; j++) { double cofactorValue = getValueOfDeterminant(getCofactor(data, 0, j)); if(j % 2 == 0) { elementsMultiplyItsCofactor[j] = data[0][j] * cofactorValue; } else { elementsMultiplyItsCofactor[j] = -1 * data[0][j] * cofactorValue; } valueOfDeterminant += elementsMultiplyItsCofactor[j]; } return valueOfDeterminant; }

                       函数 getValueOfDeterminant 中用到了一个函数 getCofactor , 这个函数很简单,就是    

         用来获取矩阵中矩阵A中(i, j)元逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值的余子式的。              

                         

      2、计算获取矩阵A的伴随阵并求逆矩阵

                 伴随阵的定义: 行列式|A|的各个元素的代数余子式逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值 所构成的如下矩阵

                                                             逆矩阵的伴随阵的求法_伴随矩阵与原矩阵的特征值

                 分别计算矩阵A中每个元素的代数余子式,并除以|A|,即可获得矩阵A的逆矩阵.

                 主要代码如下:                     

public static double[][] getMatrixInversion(double[][] data) { //the matrix has no inverse matrix if(data.length != data[0].length) { return new double[][]{}; } //Get value of determinant for the matrix double valueOfDeterminant = getValueOfDeterminant(data);   if(valueOfDeterminant == 0) { //The matrix doesn't have inversion matrix return new double[][]{}; } //Get inversion of the matrix inputed double[][] inversion = new double[data.length][data[0].length]; for(int i=0; i<inversion.length; i++) { for(int j=0; j<inversion[0].length; j++) { double num = getValueOfDeterminant(getCofactor(data, i, j)); if( (i + j) % 2 == 0 ) { inversion[j][i] = num / valueOfDeterminant; } else { inversion[j][i] = -1 * num / valueOfDeterminant; } } } return inversion; }                               

                通过伴随阵来求逆矩阵效率不太高,接下来将会尝试用LU分解法来求解逆矩阵。

 

        3. 后记      

                     后面的文章里讲到了 LU分解求线性方程组 Ax=b。很明显,只要将这里的 矩阵 b 替换成

         与A同型的单位矩阵E,则该线性方程组的解x就是 矩阵A的逆矩阵了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171659.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月21日 下午4:46
下一篇 2022年8月21日 下午4:46


相关推荐

  • db4o数据库文件_繁忙的Java开发人员指南db4o,使用db4o进行数据库重构

    db4o数据库文件_繁忙的Java开发人员指南db4o,使用db4o进行数据库重构存档日期:2019年5月13日|首次发布:2007年5月22日重构Java™代码比重构关系数据库要简单得多,但是幸运的是,对象数据库的情况并非如此。在《繁忙的Java开发人员db4o指南》的这一期中,TedNeward向您介绍了他最喜欢的对象数据库的另一个优点:db4o将重构简化到几乎没有用处。此内容不再被更新或维护。全文以PDF格式“按原样”提供。随着技术的飞速发展,…

    2022年7月21日
    14
  • sina获取实时股票数据

    sina获取实时股票数据packagecom cmn importjava io BufferedRead importjava io IOException importjava io InputStream importjava io InputStreamR importjava io OutputStream importjava io Unsupport

    2026年3月17日
    2
  • formidable ajax,文件上传multer能接收到的文件对象为什么formidable会解析成fields对象呢…

    formidable ajax,文件上传multer能接收到的文件对象为什么formidable会解析成fields对象呢…varmulter require multer varupload multer storage storage router post upload single file function req res next console log 文件 req body file 而使用 formidable 来解析 varfor

    2026年3月18日
    2
  • kafka批量删除topic_kafka自动创建topic

    kafka批量删除topic_kafka自动创建topic方法一:快速配置删除法1.kafka启动之前,在server.properties配置delete.topic.enable=true2.执行命令bin/kafka-topics.sh–delete–topictest–zookeeperzk:2181或者使用kafka-manager集群管理工具删除注意:如果kafka启动之前没有配置delete.topic.enab…

    2022年10月7日
    4
  • ORB-SLAM2 在线构建稠密点云(二)

    ORB-SLAM2 在线构建稠密点云(二)在之前的一篇博客中我们是讲修改后的 ORB SLAM2 PointCloud 代码编译成一个库 然后新建一个 ROS 节点调用这个库 实现利用相机在线建图的 这种方式有个弊端就是 每次我们修改 ORB SLAM2 PointCloud 以后 我们需要把 libORB SLAM2 so 文件重新复制到 ROS 工作空间中 如果我们修改过 h 头文件的化我们还需要把头文件也复制过去 这就造成

    2026年3月16日
    2
  • html表格空格符是什么,HTML中的空格符号是什么

    html表格空格符是什么,HTML中的空格符号是什么在HTML中的空格符号有:表示不断行的空白; 表示半个空白; 表示一个空白等在平时我们写文章时遇到空格时都会直接输入空格键来达到空格的效果,但是在HTML代码中如果我们输入空格键就会被忽略,达不到空格的效果,今天就像大家介绍HTML中空格代码如何写,希望对大家有所帮助。【推荐课程:HTML课程】方法是HTML空格转义字符,当我们需要几个空白字符时就输入几个例Gxl网提供大量免费、原创、…

    2022年10月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号