求逆矩阵的三种方法

逆矩阵是线性代数中非常重要的的一个概念,先来看看什么是逆矩阵?

A是数域上的一个n阶矩阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=,则我们称BA的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。(该段文字来自于百度百科)

接下来以三阶矩阵为例,如下题

图片

1.待定系数法

待定系数法顾名思义是一种求未知数的方法。将一个多项式表示成另一种含有待定系数的新的形式,这样就得到一个恒等式。然后根据恒等式的性质得出系数应满足的方程或方程组,其后通过解方程或方程组便可求出待定的系数,或找出某些系数所满足的关系式,这种解决问题的方法叫做待定系数法。(该段来自于搜狗百科)

对于这个题来说,左边是题目中的矩阵,右边是假设的三阶矩阵

[1 -4 -3] | [a b c]

[1 -5 -3] | [d e f]

[-1 6  4] | [g h i]

接下来该说说矩阵的乘法,两个矩阵相乘,内部决定可乘与否,外部决定新形状

形如A[3*1]与B[2*3]不可乘,A[3*3]与B[3*1]可乘A*B=C3*1(三行一列的矩阵)

其核心是第一个矩阵第一行的每个数字,各自乘以第二个矩阵第一列对应位置的数字,然后乘积相加就可以得到,换句话说,结果矩阵的第M行与第N列交叉的位置的那个值等于第一个矩阵的第M行与第二个矩阵第N列对应位置的每个数字的乘积之和。

过程如下

[a-4d-3g    b-4e-3h    c-4f-3i      ] | [1 0 0]

[a-5d-3g    b-5e-3h   c-5f-3i       ] | [0 1 0]

[-a+6d+4g -b+6d+4g  -c+6c+4i ] | [0 0 1]

九个未知数九个方程

a-4d-3g=1                  a=2

b-4e-3h=0                  b=2

c-4f-3i=0                    c=3

a-5d-3g=0       >>>    d=1

b-5e-3h=1       >>>    e=-1

c-5f-3i=0         >>>    f=0

-a+6d+4g=0              g=-1

-b+6d+4g=0              h=2

-c+6c+4i=1                i=1

以上就是待定系数法的全部内容,这种方法方法并不难,主要考察的是细心。


2.伴随矩阵法

用这个方法之前,必须先搞清什么是余子式和代数余子式!

图片

 设矩阵 

图片

 ,将矩阵

图片

 的元素

图片

 所在的第i行第j列元素划去后,剩余的 

图片

 ,各元素按原来的排列顺序组成的n-1阶矩阵所确定的行列式称为元素

图片

 的余子式,记为

图片

 ,称

图片

 谓元素 

图片

 的代数余子式。方阵 

图片

 的各元素的代数余子式

图片

 所构成的如下矩阵:

   

图片

 =  

图片

该矩阵

图片

 称为矩阵

图片

 的伴随矩阵,伴随矩阵即代数余子式的转置

代数余子式求逆矩阵:

图片

(|A|≠0,|A|为该矩阵对应的行列式的值)

A11=  |-5 -3|=-2

         |6   4|

A12=-|1  -3|=-1

        |-1   4|

A13= |1   -5|=1

        |-1   6|

A21=-|-4 -3|=-2                         

        |6    4|                                      

A22= |1  -3|=1                              

        |-1  4|                                   

A23=-|1  -4|=-2                             

        |-1  6|

A31= |-4 -3|=-3

        |-5 -3|

A32=-|1  -3|=0

        |1  -3|

A33= |1  -4|=-1

        |1  -5|

|A|=(-4)*(-3)*(-1)+(-5)*4*1+1*6*(-3)-1*(-4)*4-(-1)*(-5)*(-3)-6*(-3)*1

     =-12+(-20)+(-18)+16+15+18

     =-50+49   

    =1 

     

       [-2 -2 -3]                                            

A*=[-1  1   0]        

       [1  -2  -1] 

                                    [-2 -2 -3]   [2 2 3]

A-1=(1/|A|)*(A*)=(-1)*[-1   1   0]= [1 -1 0]

                                    [1  -2  -1]  [-1 2 1]

以上就是伴随矩阵法的全部内容,这种方法计算量比较大,特别注意是区分余子式和代数余子式这两个概念,代数余子式的转置(行变列,列变行)以及乘以行列式值分之一


3.初等变换法

一般采用的是初等行变换

定义:所谓数域P上矩阵的初等行变换是指下列3种变换:

1)以P中一个非零的数乘矩阵的某一行

2)把矩阵的某一行的c倍加到另一行,这里c是P中的任意一个数

3)互换矩阵中两行的位置

在说下面的内容之前,先引入两个概念

行阶梯矩阵

1.所有非零行在所有全零行上面即全零行都在矩阵的底部

2.非零行的首项系数称为主元,即最左边首个非零元素严格的比上面系数靠右

3.首相系数所在列,在首项系数下面元素都是零

行最简矩阵

在行阶梯矩阵的基础上,即非零行的第一个非零单元为1,且这些非零单元所在的列其它元素都是0

综上,行最简型矩阵是行阶梯形矩阵的特殊形式

一般来说,一个矩阵经过初等行变换后就变成了另一个矩阵,当矩阵A经过初等行变换变成矩阵B时,一般写作

图片

 可以证明:任意一个矩阵经过一系列初等行变换总能变成行阶梯型矩阵。

方法是一般从左到右,一列一列处理先把第一个比较简单的(或小)的非零数交换到左上角(其实最后变换也行),用这个数把第一列其余的数消成零处理完第一列后,第一行与第一列就不用管,再用同样的方法处理第二列(不含第一行的数)

图片

以上就是初等变换法的全部内容,这种方法主要得经常练习,要不然就会解的很慢,要么出错,另外行变换时一定要仔细认真

综上所述,该题目选D


希望各位阅读完本文章之后,对你们有所启发,找到适合自己求逆矩阵的方法,是极其重要的。

### PyTorch 中计算逆矩阵方法 在 PyTorch 中,可以通过函数 `torch.inverse` 或者 `torch.linalg.inv` 来完成对一个可方阵的操作。这些方法适用于那些非奇异(即满秩)的方阵。如果输入的是奇异矩阵,则会抛出异常或返回不合理的数值。 #### 函数介绍 - **`torch.inverse(input, out=None)`** - 功能描述:此功能接受一个二维张量作为参数,并返回该张量的逆矩阵。 - 参数详情: - `input`: 待的方阵型张量。 - `out`(可选): 输出结果存储的位置。 - 返回值:与输入具有相同类型的张量表示原矩阵[^1]。 - **`torch.linalg.inv(A, *, out=None)`** (推荐) - 新版 API 提供了更为统一和现代化的设计风格,在未来版本中可能会逐渐取代旧有的 `inverse` 方法。 - 它同样支持批量处理多个独立的小规模矩阵的情况。 - 注意事项:对于不可逆矩阵,它也会引发相应的错误提示[^2]。 #### 示例代码 下面是利用这两种方式分别实现逆矩阵计算的例子: ```python import torch # 创建一个3x3随机正定矩阵K K = torch.tensor([[4., 9., 2.], [8., 7., 6.], [3., 5., 0.]]) det_K = torch.det(K) # 检查行列式是否为零来判断能否成功逆矩阵 if det_K != 0: inv_K_v1 = torch.inverse(K) # 使用传统 inverse 方法获取逆矩阵 inv_K_v2 = torch.linalg.inv(K) # 推荐的新 linalg 模块下的 inv 方法 print("Inverse via torch.inverse:\n", inv_K_v1) print("\nInverse via torch.linalg.inv:\n", inv_K_v2) else: raise ValueError('Matrix is singular and cannot be inverted.') ``` 上述例子先构建了一个具体的三阶实数方阵 K 并检测其行列式的值。只有当行列式非零时才继续执行后续步骤去实际获得逆矩阵;否则立即终止程序并给出适当警告信息。 #### 关键点提醒 需要注意的是,无论是哪种途径都要传入的数据结构必须是一个有效的、非退化的方形数组才行。而且考虑到浮点精度误差的影响,在某些极端情况下即使理论上应该是可的也可能因为舍入等问题而被认为不可。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值