待定系数法、高斯-约旦消元法、LU分解法及Cholesky分解法实现矩阵求逆

本文详细探讨了矩阵求逆在各领域的应用,包括待定系数法、伴随矩阵求逆、高斯-约旦消元、LU分解和Cholesky分解。这些方法在解决线性方程、优化问题、密码学和信号处理中扮演关键角色,特别强调了Cholesky分解在对称正定矩阵求逆中的高效性。
摘要由CSDN通过智能技术生成

目录

前言

一、待定系数法

二、伴随矩阵求逆

二、高斯-约旦消元法矩阵求逆

三、LU分解法矩阵求逆

四、Cholesky分解法矩阵求逆


前言

矩阵求逆在线性代数和数学应用中具有重要性,它对多个领域和问题都有关键作用,例如:

  1. 解线性方程组: 矩阵求逆是解线性方程组的基本方法之一。对于形如Ax = b的线性方程组,如果矩阵A可逆,那么可以通过x = A^(-1)b来精确地求解未知向量x。这在工程、物理、经济学等领域中都有广泛的应用。

  2. 线性变换的逆: 在线性代数中,矩阵表示了线性变换。矩阵的逆可以用来反转线性变换,这对于恢复原始数据、解码信息、还原图像等任务非常重要。

  3. 优化问题: 在数学优化和机器学习中,求解一些优化问题时需要计算矩阵的逆。例如,在最小二乘法中,需要求解一个矩阵方程,其中矩阵的逆用于最小化误差。

  4. 密码学和安全: 矩阵的逆也在密码学和信息安全中扮演着关键角色。例如,在公钥密码学中,矩阵的逆用于加密和解密消息。

  5. 信号处理:矩阵求逆可以用于设计数字滤波器,尤其是在频域中,通过对滤波器的频率响应进行矩阵求逆操作,可以得到所需的滤波器系数。

        总之,矩阵求逆在数学、科学和工程的多个领域中都具有广泛的应用,下面对不同的矩阵求逆方法做简要分析

一、待定系数法

此方法仅适合阶数较低的可逆矩阵的求逆,下面举例分析使用方法。

待求逆矩阵A:

A=\left[ \begin{matrix} 1& 1\\ -1& 1\\ \end{matrix} \right]

矩阵A的逆阵B假设为:

B=\left[ \begin{matrix} a& b\\ c& d\\ \end{matrix} \right] =A^{-1}

矩阵A和矩阵B互为逆阵,则有:

A*B=E

E=\left[ \begin{matrix} 1& 0\\ 0& 1\\ \end{matrix} \right]

即:

\begin{array}{c} A*B=\left[ \begin{matrix} 1& 1\\ -1& 1\\ \end{matrix} \right] \left[ \begin{matrix} a& b\\ c& d\\ \end{matrix} \right] =\left[ \begin{matrix} a+c& b+d\\ -a+c& -b+d\\ \end{matrix} \right] =\\ \end{array}\left[ \begin{matrix} 1& 0\\ 0& 1\\ \end{matrix} \right]

则有

\left\{ \begin{array}{l} \ a+c=1\\ \ b+d=0\\ -a+c=0\\ -b+d=1\\ \end{array} \right.

解之得:

\left\{ \begin{array}{l} a=0.5\\ b=-0.5\\ c=-0.5\\ d=0.5\\ \end{array} \right.

所以,矩阵A的逆阵为:

A^{-1}=\left[ \begin{matrix} 0.5& -0.5\\ 0.5& 0.5\\ \end{matrix} \right]

        待定系数法矩阵求逆过程至此结束,可以看出,对于二阶矩阵求逆需要求四元一次方程组,若对于三姐矩阵求逆,则需要求九元一次方程组,同理,对于N阶矩阵求逆,需要求解N^2元一次方程,其复杂度大大提高,因此只适用于低阶数矩阵求逆。下面介绍另外一种矩阵求逆方法。

二、伴随矩阵求逆

首先介绍一下矩阵理论中的几个重要概念:

1、余子式:

        一个n × n的矩阵A,删除矩阵A中a_{ij}第i行和第j列得到的(n-1)阶行列式,即为元素a_{ij}的余子式M_{ij}

2、代数余子式:

A_{ij}=\left( -1 \right) ^{i+j}M_{ij}

需要注意的是,不管余子式还是代数余子式,都与aij无关

示例:

A=\left[ \begin{array}{c} \begin{matrix} a_{11}& a_{12}& a_{13}\\ a_{21}& a_{22}& a_{23}\\ a_{31}& a_{32}& a_{33}\\ \end{matrix}\\ \end{array} \right]

a_{11}对应的余子式及代数余子式分别为:

M_{11}=\left[ \begin{matrix} \times& \times& \times\\ \times& a_{22}& a_{23}\\ \times& a_{32}& a_{33}\\ \end{matrix} \right] =\left[ \begin{matrix} a_{22}& a_{23}\\ a_{32}& a_{33}\\ \end{matrix} \right]

A_{11}=\left( -1 \right) ^{1+1}M_{11}=M_{11}=\left[ \begin{matrix} a_{22}& a_{23}\\ a_{32}& a_{33}\\ \end{matrix} \right]

a_{22}对应的余子式及代数余子式分别为:

M_{22}=\left[ \begin{matrix} a_{11}& \times& a_{13}\\ \times& \times& \times\\ a_{31}& \times& a_{33}\\ \end{matrix} \right] =\left[ \begin{matrix} a_{11}& a_{13}\\ a_{31}& a_{33}\\ \end{matrix} \right]

A_{22}=\left( -1 \right) ^{2+2}M_{22}=M_{22}=\left[ \begin{matrix} a_{11}& a_{13}\\ a_{31}& a_{33}\\ \end{matrix} \right]

其中,“×”代表删除的元素
 

性质(行列式与代数余子式的关系):

        行列式等于它的任一行(或列)的所有元素分别与其所对应的代数余子式乘积之和

按行:

|A|=\sum_{j=1}^n{a_{ij}A_{ij},i\in \left( 1,2,\cdots ,n \right)}

按列:

|A|=\sum_{i=1}^n{a_{ij}A_{ij},j\in \left( 1,2,\cdots ,n \right)}

3、伴随矩阵:

伴随矩阵与代数余子式矩阵互为转置关系,即:

A^*=C^T

4、矩阵求逆

A^{-1}=\frac{1}{|A|}A^*

5、示例分析

  • 设待求逆矩阵A为:

A=\left[ \begin{matrix} 1& 3\\ -2& 2\\ \end{matrix} \right]

  • 余子式分别为

M_{11}=\left| \begin{matrix} \times& \times\\ \times& 2\\ \end{matrix} \right|=2\,\,\,\,\,\,\,\,\,\,M_{12}=\left| \begin{matrix} \times& \times\\ -2& \times\\ \end{matrix} \right|=-2\\M_{21}=\left| \begin{matrix} \times& 3\\ \times& \times\\ \end{matrix} \right|=3\,\,\,\,\,\,\,\,\,\,\,\,\,\,M_{22}=\left| \begin{matrix} 1& \times\\ \times& \times\\ \end{matrix} \right|=1

  • 余子式矩阵为:

M=\left[ \begin{matrix} 2& -2\\ 3& 1\\ \end{matrix} \right]

  • 代数余子式矩阵为:

C=\left[ \begin{matrix} M_{11}& -M_{12}\\ -M_{21}& M_{22}\\ \end{matrix} \right] =\left[ \begin{matrix} 2& 2\\ -3& 1\\ \end{matrix} \right]

  • 伴随矩阵为:

A^*=C^T=\left[ \begin{matrix} 2& -3\\ 2& 1\\ \end{matrix} \right]

  • 矩阵A的行列式为:

        以第一行为例:

|A|=a_{11}A_{11}+a_{12}A_{12}=8

        以第二行为例:

|A|=a_{21}A_{21}+a_{22}A_{22}=8

        可以看出,无论取哪一行,当前行所有元素分别与其所对应的代数余子式乘积之和即为矩阵A的行列式

逆矩阵为:

        A^{-1}=\frac{1}{|A|}A^*=\frac{1}{8}\left[ \begin{matrix} 2& -3\\ 2& 1\\ \end{matrix} \right] =\left[ \begin{matrix} \frac{1}{4}& -\frac{3}{8}\\ \frac{1}{4}& \frac{1}{8}\\ \end{matrix} \right]

三、高斯—约旦消元法矩阵求逆

1、一般流程

        首先介绍高斯—约旦消元法求矩阵的逆的一般流程,假设有一个n阶方阵A: 

  • 增广矩阵: 将矩阵A与同阶单位阵E水平拼接,形成一个新的增广矩阵[A | E];
  • 初等行变换: 使用高斯-约旦消元法,将增广矩阵[A | E]做初等变换后,变换为形如[A' | B]的上三角矩阵,其中A'是矩阵A的行阶梯形式;
  • 单位矩阵:继续使用高斯-约旦消元法,将上三角矩阵[A' | B]变为一个单位矩阵[E | A^(-1)];
  • 逆矩阵:最终的矩阵[E | A^(-1)]中的A^(-1)部分就是原始矩阵A的逆矩阵;

2、示例分析

设待求逆矩阵A为:

A=\left[ \begin{matrix} 1& -4& -3\\ 1& -5& -3\\ -1& 6& 4\\ \end{matrix} \right]

增广矩阵为:

\left[ A\ |\ E \right] =\left[ \begin{matrix} 1& -4& -3& 1& 0& 0\\ 1& -5& -3& 0& 1& 0\\ -1& 6& 4& 0& 0& 1\\ \end{matrix} \right]

初等行变换:

根据第一部分矩阵求逆流程可以看出,矩阵A的逆矩阵为:

A^{-1}=\left[ \begin{matrix} 2& 2& 3\\ 1& -1& 0\\ -1& 2& 1\\ \end{matrix} \right]

四、LU分解法矩阵求逆

1、LU分解

矩阵A为:

A=\left[ \begin{matrix} 1& 1& 0& 1\\ 2& 3& 4& 2\\ 1& 2& 5& 1\\ 4& 3& 2& 0\\ \end{matrix} \right]

进行LU分解:

       消元的基本顺序(以4阶可逆方阵为例)为:

r_2r_1\Rightarrow r_3r_1\Rightarrow r_4r_1\Rightarrow r_3r_2\Rightarrow r_4r_2\Rightarrow r_4r_3

        需要注意的是,在LU分解时,其消元过程固定且唯一,必须首先使第一行做主元,然后向下依次消元得到一个上三角矩阵,此上三角矩阵即为LU分解后的U矩阵。而对于一个n阶可逆方阵而言,以第一行为主元时,消元次数为(n-1)次,以第二行为主元时,消元次数为(n-2)次,以此类推,以第(n-1)行为主元时,消元次数为1次,因此总消元次数为

1+2+\cdots \left( n-1 \right) =\frac{n\left( n-1 \right)}{2}

        对A矩阵执行初等行变换过程如下:

初等行变换后的矩阵即为LU分解后的U矩阵,可以用公式表示如下:

E_{43}E_{42}E_{32}E_{41}E_{31}E_{21}A=U

其中:

E_{21}=\left[ \begin{matrix} 1& 0& 0& 0\\ -2& 1& 0& 0\\ 0& 0& 1& 0\\ 0& 0& 0& 1\\ \end{matrix} \right]      E_{31}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ -1& 0& 1& 0\\ 0& 0& 0& 1\\ \end{matrix} \right]     E_{41}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\ -4& 0& 0& 1\\ \end{matrix} \right]E_{32}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& -1& 1& 0\\ 0& 0& 0& 1\\ \end{matrix} \right]      E_{42}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\ 0& 1& 0& 1\\ \end{matrix} \right]

E_{43}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\ 0& 0& -6& 1\\ \end{matrix} \right]

则A矩阵可以表示为:

A=\left( E_{43}E_{42}E_{32}E_{41}E_{31}E_{21} \right) ^{-1}U=LU

计算得出:

E_{43}E_{42}E_{32}E_{41}E_{31}E_{21}=\left[ \begin{matrix} 1& 0& 0& 0\\ -2& 1& 0& 0\\ 1& -1& 1& 0\\ -12& 7& -6& 1\\ \end{matrix} \right]

L=\left( E_{43}E_{42}E_{32}E_{41}E_{31}E_{21} \right) ^{-1}=\left[ \begin{matrix} 1& 0& 0& 0\\ 2& 1& 0& 0\\ 1& 1& 1& 0\\ 4& -1& 6& 1\\ \end{matrix} \right]

根据上述初等变换可以看出,L矩阵对应位置即为初等变换系数的相反数,如下标红位置,例如,L

矩阵在(2,1)位置处的值为2,对应E_{21}(2,1)处系数的相反数。

由上所述,矩阵A经过LU分解后表示如下:

A=LU=\left[ \begin{matrix} 1& 0& 0& 0\\ 2& 1& 0& 0\\ 1& 1& 1& 0\\ 4& -1& 6& 1\\ \end{matrix} \right] \left[ \begin{matrix} 1& 1& 0& 1\\ 0& 1& 4& 0\\ 0& 0& 1& 0\\ 0& 0& 0& -4\\ \end{matrix} \right]

2、矩阵求逆

A^{-1}=\left( LU \right) ^{-1}=U^{-1}L^{-1}

此时,矩阵求逆问题即转换为求上三角矩阵和下三角矩阵的逆阵

可求得矩阵L和U的逆阵分别为:

L^{-1}=\left[ \begin{matrix} 1& 0& 0& 0\\ -2& 1& 0& 0\\ 1& -1& 1& 0\\ -12& 7& -6& 1\\ \end{matrix} \right]

U^{-1}=\frac{1}{4}\left[ \begin{matrix} 4& -4& 16& 1\\ 0& 4& -16& 0\\ 0& 0& 4& 0\\ 0& 0& 0& -1\\ \end{matrix} \right]

A^{-1}=U^{-1}L^{-1}=\frac{1}{4}\left[ \begin{matrix} 16& -13& 10& 1\\ -24& 20& -16& 0\\ 4& -4& 4& 0\\ 12& -7& 6& -1\\ \end{matrix} \right]

3、注意事项        

        使用LU分解法进行矩阵求逆流程到此结束,需要说明的是使用该方法的注意事项:

  1. 矩阵可逆性: LU分解法只适用于可逆矩阵。确保矩阵是非奇异的(可逆的),否则求逆将会失败。

  2. 矩阵分解: 在求解逆之前,必须先对矩阵进行LU分解。确保LU分解的计算正确无误。

  3. 数值稳定性: 对于数值稳定性较差的矩阵,如接近奇异矩阵的情况,LU分解可能会面临数值精度损失的问题。在处理这些情况时需要额外小心。

  4. 分解结果的利用: 一旦完成了LU分解,可以重复利用这个分解结果求解多个线性方程组或者多个矩阵的逆。这可以节省计算时间。

  5. 存储开销: LU分解法需要存储两个三角矩阵 L 和 U,可能会占用额外的内存空间。考虑存储空间的消耗,特别是对于大型矩阵。

  6. 库和算法选择: 使用现有的数值计算库(如NumPy、SciPy等)提供的LU分解算法可能是明智的选择。这些库通常实现了优化的算法,能够更高效地进行LU分解和求解逆矩阵。

五、Cholesky分解法矩阵求逆

        第四章分别介绍了LU分解求逆的具体原理及流程,且该方法适用于任何非奇异矩阵,对特殊矩阵(对称正定矩阵)而言其计算复杂度并没有改善,而这种特殊矩阵的应用非常广泛,因此需要一种针对这种特殊矩阵的矩阵求逆方法,在保证数值稳定性的前提下能够进一提高计算效率,而这种方法就是Cholesky分解矩阵求逆法(本文仅介绍使用方法,不介绍具体推导过程),此方法将对称正定矩阵分解为一个下三角矩阵与其转置的乘积

A=LL^T

        其中,L为下三角矩阵,对于实数矩而言,矩阵L具有实数和正数对角元素。

1、Cholesky分解流程

假设有一个n×n的实对称正定矩阵A, 通过上述关系式反推下三角矩阵的元素值。

为了方便计算,本文以3×3的矩阵举例。 矩阵A为:

A=\left[ \begin{matrix} 9& 3& 6\\ 3& 14& -2\\ 6& -2& 16\\ \end{matrix} \right]

分解关系后:        

\left( \begin{matrix} 9& 3& 6\\ 3& 14& -2\\ 6& -2& 16\\ \end{matrix} \right) =\left( \begin{matrix} l_{1,1}& 0& 0\\ l_{2,1}& l_{2,2}& 0\\ l_{3,1}& l_{3,2}& l_{3,3}\\ \end{matrix} \right) \cdot \left( \begin{matrix} l_{1,1}& l_{2,1}& l_{3,1}\\ 0& l_{2,2}& l_{3,2}\\ 0& 0& l_{3,3}\\ \end{matrix} \right) $$ $$ =\left( \begin{matrix} l_{1,1}^2& l_{1,1}l_{2,1}& l_{1,1}l_{3,1}\\ l_{1,1}l_{2,1}& l_{2,1}^2+l_{2,2}^2& l_{2,1}l_{3,1}+l_{2,2}l_{3,2}\\ l_{1,1}l_{3,1}& l_{2,1}l_{3,1}+l_{2,2}l_{3,2}& l_{3,1}^2+l_{3,2}^2+l_{3,3}^2\\ \end{matrix} \right)

则:

\begin{aligned} l_{1,1}^{2}&=9\Rightarrow l_{1,1}=\sqrt{9}=3\\ \end{aligned}

\begin{aligned} l_{1,1}l_{2,1}&=3\Rightarrow l_{2,1}=\frac{3}{l_{1,1}}=\frac{3}{3}=1\\ \end{aligned}

\begin{aligned} l_{1,1}l_{3,1}&=6\Rightarrow l_{3,1}=\frac{6}{l_{1,1}}=\frac{6}{3}=2\\ \end{aligned}

\begin{aligned} l_{2,1}^{2}+l_{2,2}^{2}&=14\Rightarrow l_{2,2}=\sqrt{14-l_{2,1}^{2}}=\sqrt{14-1^2}=\sqrt{13}\\ \end{aligned}

\begin{aligned} l_{2,1}l_{3,1}+l_{2,2}l_{3,2}&=-2\Rightarrow l_{3,2}=\frac{-2-l_{3,1}l_{2,1}}{l_{2,2}}=\frac{-2-2\cdot 1}{\sqrt{13}}=\frac{-4\sqrt{13}}{13}\\ \end{aligned}

\begin{aligned} l_{3,1}^{2}+l_{3,2}^{2}+l_{3,3}^{2}&=16\Rightarrow l_{3,3}=\sqrt{16-\left( l_{3,1}^2+l_{3,2}^{2} \right)}=\sqrt{16-\left( 2^2+\left( \frac{-4\sqrt{13}}{13} \right) ^2 \right)}=\sqrt{\frac{140}{13}}\\ \end{aligned}正定矩阵A经过分解之后的下三角矩阵为:

L=\left[ \begin{matrix} 3& 0& 0\\ 1& \sqrt{13}& 0\\ 2& -\frac{4}{\sqrt{13}}& \sqrt{\frac{140}{13}}\\ \end{matrix} \right]

Cholesky分解流程公式整理如下:

  1. 初始化:初始化一个与A维度相同的下三角矩阵L。
  2. 计算Cholesky分解:逐步计算L的元素以完成Cholesky分解。

        a. 对角线元素:计算L_{ii}=\sqrt{A_{ii}-\sum_{k=1}^{i-1}{L_{ik}^{2}}},其中i=1,2,…,n。这里的\sum_{k=1}^{i-1}{L_{ik}^{2}}表示L已经计算出来的元素的平方和。

        b.非对角元素:对于i>j,计算L_{ij}=\frac{1}{L_{jj}}\left( A_{ij}-\sum_{k=1}^{j-1}{L_{ik}L_{jk}} \right)
        c.对于i<j,L_{ij}=0。因为对称矩阵的Cholesky分解是下三角矩阵。

根据Cholesky分解流程的计算公式,可以求得下三角矩阵的元素分别如下:

L_{11}=\sqrt{A_{11}}=3

L_{21}=\frac{1}{L_{11}}A_{21}=1

L_{22}=\sqrt{A_{22-}\sum_{k=1}^1{L_{2k}^{2}}}=\sqrt{14-1^2}=\sqrt{13}

L_{31}=\frac{1}{L_{11}}A_{31}=2

L_{32}=\frac{1}{L_{22}}\left( A_{32-}\sum_{k=1}^1{L_{3k}L_{2k}} \right) =\frac{1}{\sqrt{13}}\left( -2-2\cdot 1 \right) =-\frac{4}{\sqrt{13}}

L_{33}=\sqrt{A_{33-}\sum_{k=1}^2{L_{3k}^{2}}}=\sqrt{16-2^2-\left( -\frac{4}{\sqrt{13}} \right) ^2}=\sqrt{\frac{140}{13}}

正定矩阵A经过分解之后的下三角矩阵为:

L=\left[ \begin{matrix} 3& 0& 0\\ 1& \sqrt{13}& 0\\ 2& -\frac{4}{\sqrt{13}}& \sqrt{\frac{140}{13}}\\ \end{matrix} \right]

经验证,分解后的结果正确。

2、矩阵求逆

由上节叙述可以推导出A的逆阵关系式如下:

A=LL^T\Rightarrow A^{-1}=\left( LL^T \right) ^{-1}=\left( L^T \right) ^{-1}L^{-1}=\left( L^{-1} \right) ^TL^{-1}

可以求得矩阵A的逆为:

A^{-1}=\left( \begin{matrix} \frac{11}{63}& -\frac{1}{21}& -\frac{1}{14}\\ -\frac{1}{21}& \frac{3}{35}& \frac{1}{35}\\ -\frac{1}{14}& \frac{1}{35}& \frac{13}{140}\\ \end{matrix} \right)

        

向读者朋友推荐一个矩阵计算器,是我在写文章的时候无意间发现的宝藏网站,仅供参考。

矩阵计算器 (matrixcalc.org)

  • 37
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值