我们本章的目的是对 \(A=LU\) 进行分析,我们以这种思路来看待高斯消元。

好现在还是从简单的开始。

首先,讲一下上一章中没讲完的内容——乘积的逆。

假设 \(A\) 和 \(B\) 均是可逆矩阵,即有:

\[A·A^{-1} = I = A^{-1}·A
\]

那 \(AB\) 的逆是什么?使用单独的逆相乘吗?是的。

用矩阵 \(A\) 的逆和 \(B\) 的逆相乘,什么顺序?反顺序相乘。因此有:

\[(AB)(B^{-1}A^{-1})=I
\]

所以 \(A^{-1}B^{-1}\) 就是我们所求的东西。这里可以把括号抹去,想怎么乘就怎么乘,因为括号可以移动,矩阵有乘法结合律

首先应该把什么乘起来?\(B\) 乘以 \(B\) 的逆,乘积为单位矩阵;\(A\) 乘以 \(A\) 的逆得到单位矩阵。

关于为什么逆矩阵顺序要反过来,就相当于原来你先脱鞋子在脱袜子,他的逆动作就该是先穿鞋子,再穿袜子,而不是先穿鞋子再穿袜子(bushi。

回到刚才的例子,还要放到另一侧来检验:

\[B^{-1}A^{-1}AB=I
\]

由于下一章可能会涉及到转置,这里就做一个铺垫。

如果转置某可逆方阵,那么其转置的逆是什么?

首先,\(A\) 矩阵可逆:

\[AA^{-1}=I
\]

两侧同时转置,则就要涉及到矩阵转置了。转置单位矩阵会得到什么?还是单位矩阵对吧,不管怎么转置行和列,因为单位矩阵是对称的所以不会有变化。如果我对左边的乘积进行转置,这还是得改变两者的顺序。分别转置两个矩阵,然后以相反顺序相反顺序相乘。

注:矩阵 \(A\) 的转置记作 \(A^T\)

\[(A^{-1})^TA^T = I
\]

这个公式的推导可以说是一目了然,它也足以告诉我们答案了,什么是矩阵 \(A\) 的转置的逆?就是\((A^{-1})^T\) 。

然后我们惊奇的发现:

\[(A^{-1})^T = (A^T)^{-1}
\]

也就是说,转置和逆这两种运算,对于单个矩阵而言,顺序可以颠倒。好,这些就是我们将要用到的基础公式。

接下来,我们回到我们的主题 \(A\) 的 \(LU\) 分解。

我假设有一个矩阵 \(A\) 它是一个具有一切美好性质的矩阵。考虑 \(2 \times 2\) 的情况。

\[A=\begin{bmatrix}
2&1\\
8&7
\end{bmatrix}
\]

所以 \(E_{2,1}\) 是多少?

很显然,

\[U = \begin{bmatrix} 2&1\\0&3 \end{bmatrix}\,\,\,\,\,
E_{2,1} = \begin{bmatrix}
1&0\\-4&1
\end{bmatrix}
\]

有:

\[\quad \quad E_{2,1}·A = U
\\
\begin{bmatrix}
1&0\\-4&1
\end{bmatrix}
\begin{bmatrix}
2&1\\
8&7
\end{bmatrix}=\begin{bmatrix} 2&1\\0&3 \end{bmatrix}
\]

我们开始计算:

\[\begin{equation}
A = LU\\
\begin{bmatrix}
2&1\\
8&7
\end{bmatrix}=
L
\begin{bmatrix}
2&1\\
0&3
\end{bmatrix}
\end{equation}
\]

所以,这里的 \(L\) 是什么,它和 \(E_{2,1}\) 有什么关系?是逆。因为如果两边同时乘以 \(E_{2,1}\) 的逆 \(\dots\)

\[\begin{aligned}
E_{2,1}·A·(E_{2,1})^{-1}&=U·(E_{2,1})^{-1}\\
I·A&=U·(E_{2,1})^{-1}\\
A&=U·(E_{2,1})^{-1}\\
\therefore L&=(E_{2,1})^{-1}\\
\because (E_{2,1})^{-1}&=\begin{bmatrix}
1&0\\
4&1
\end{bmatrix}\\
\therefore L&=\begin{bmatrix}
1&0\\
4&1
\end{bmatrix}
\end{aligned}
\]

好,这是 \(2 \times 2\) 的情况。那么,\(L\) 代表什么?为什么用字母 \(L\) ?

\(U\) 代表上三角矩阵(\(Upper\)),\(L\) 表示下三角矩阵(\(Lower\))。

可以看到,他的对角线上都是 \(1\) 因为对角线上都是主元,有时我们会把主元单独列出来:

\[\begin{aligned}
A&=LDU\\
\begin{bmatrix}
2&1\\
8&7
\end{bmatrix}&=
\begin{bmatrix}
1&0\\
4&1
\end{bmatrix}
\begin{bmatrix}
2&0\\
0&3
\end{bmatrix}
\begin{bmatrix}
1&\frac{1}{2}\\
0&1
\end{bmatrix}
\end{aligned}
\]

\(D\) 表示对角矩阵 (\(Diagonal\))

下面不能只停留在 \(2 \times 2\) 了,这里的例子非常简单。

接下来考虑 \(3 \times 3\) 的情况:

\[\begin{aligned}
E_{3,2}E_{3,1}E_{2,1}A&=U \,\,\,\,\,(No\,\,Row\,\,Exchanges)\\
A&={E_{2,1}}^{-1}{E_{3,1}}^{-1}{E_{3,2}}^{-1}U\\
&=LU
\end{aligned}
\]

我们假设一下:

\[E_{3,2}=\begin{bmatrix}
1&0&0\\
0&1&0\\
0&-5&1\\
\end{bmatrix}
\quad
E_{2,1}=\begin{bmatrix}
1&0&0\\
-2&1&0\\
0&0&1\\
\end{bmatrix}
\]

有:

\[\begin{bmatrix}
1&0&0\\
0&1&0\\
0&-5&1\\
\end{bmatrix}
\begin{bmatrix}
1&0&0\\
-2&1&0\\
0&0&1\\
\end{bmatrix}=
\begin{bmatrix}
1&0&0\\
-2&1&0\\
10&-5&1\\
\end{bmatrix}=E \longleftrightarrow EA=U
\]

下面我要反顺序计算它的逆:

\[\begin{bmatrix}
1&0&0\\
2&1&0\\
0&0&1\\
\end{bmatrix}
\begin{bmatrix}
1&0&0\\
0&1&0\\
0&5&1\\
\end{bmatrix}=
\begin{bmatrix}
1&0&0\\
2&1&0\\
0&5&1\\
\end{bmatrix}=L \longleftrightarrow A=LU
\]

对于 \(A=LU\) 如果不存在行交换,消元乘数可以直接写入 \(L\) 中。

我们考虑一个问题,**一个 \(n \times n\) 的矩阵 \(A\) ,需要多少次操作? **

令 \(n=100\) 假设矩阵中没有 \(0\) 。

第一步,

经过一步操作,剩下的就是 \(99 \times 99\) 的方阵了,因为主元已近在 \((1,1)\) 的位置,第一行已经固定,第一列同样的已经固定,剩下的也就是 \(99 \times 99\) 的方阵了。

那么,最终需要多少步?注意我们算的是时间复杂度(粗略理解就行,可能叫时间复杂度有点不太严谨),不是消元的次数。

所以,

\[Cost\,\,of\,\,A=n^2+(n-1)^2+(n-2)^2+\dots+1^2\approx\frac{1}{3}n^3\\
Cost\,\,of\,\,B=n^2
\]

下面讲讲置换(\(Permutations\)),考虑 \(3 \times 3\) 的情况。

有矩阵 \(\begin{bmatrix}
1&0&0\\
0&1&0\\
0&0&1
\end{bmatrix}\) ,通过一次置换可以得到: \(\begin{bmatrix}
0&1&0\\
1&0&0\\
0&0&1
\end{bmatrix}\) 、 \(\begin{bmatrix}
0&0&1\\
0&1&0\\
1&0&0
\end{bmatrix}\) 、

\(\begin{bmatrix}
1&0&0\\
0&0&1\\
0&1&0
\end{bmatrix}\) 、 \(\begin{bmatrix}
0&1&0\\
0&0&1\\
1&0&0
\end{bmatrix}\) 、 \(\begin{bmatrix}
0&0&1\\
1&0&0\\
0&1&0
\end{bmatrix}\) 。

仔细观察会发现这个矩阵群很有意思,将它们两两相乘,得到的矩阵仍然在这六个矩阵之中。

置换矩阵有一个很奇妙的性质:

\[P^{-1}=p^T
\]

它的逆等于其转置。我最后再讲一点,考虑 \(4 \times 4\) 的情况,有多少种转置矩阵?显然是 \(24\) 种。

本章到此结束。

预告:下一章的内容是转置和置换

线性代数 A 的 LU 分解的更多相关文章

  1. 线性代数笔记10——矩阵的LU分解

    在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...

  2. matlab 求解线性方程组之LU分解

    线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...

  3. 矩阵分解---QR正交分解,LU分解

    相关概念: 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0 正定矩阵:如果对于所有的非零实系数向量x ,都有 x ...

  4. 矩阵LU分解分块算法实现

    本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...

  5. 【线性代数】6-7:SVD分解(Singular Value Decomposition-SVD)

    title: [线性代数]6-7:SVD分解(Singular Value Decomposition-SVD) categories: Mathematic Linear Algebra keywo ...

  6. LU分解,Javascript代码

    ///A 为矩阵,这里写成一维数组,如 [1],[1,2,3,4] function GetLU(a) { var n = a.length;//矩阵的总数据数目 var s = Math.sqrt( ...

  7. matlab实现高斯消去法、LU分解

    朴素高斯消去法: function x = GauElim(n, A, b) if nargin < 2 for i = 1 : 1 : n for j = 1 : 1 : n A(i, j) ...

  8. LU分解(2)

    接着上次LU分解的讲解,这次给出使用不同的计算LU分解的方法,这种方法称为基于GaxPy的计算方法.这里需要了解lapapck中的一些函数.lapack中有一个函数名为gaxpy,所对应的矩阵计算公式 ...

  9. LU分解(1)

    1/6 LU 分解          LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU ...

  10. MATLAB矩阵的LU分解及在解线性方程组中的应用

    作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 三.实验程序 五.解答(按如下顺序提交电子版) 1.(程序) (1)LU分解源程序: function [ ...

随机推荐

  1. Java编程之容器类

    一.ArrayList 1.创建ArrayList对象 ArrayList<String> arr=new ArrayList<>(); //添加<>的为泛型 // ...

  2. Web前端开发规范手册(有点老,仅供参考)

    一.规范目的 1.1 概述 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本 ...

  3. php 根据时间设置多少小时 ,前天,昨天,多少月,多少年

    public static function formatTime($time){ if (is_int($time)) { $time = intval($time); } elseif ($tim ...

  4. 银河麒麟系统 jenkins docker 部署 自动化打包部署git 项目

    Jenkins 是一个开源的自动化服务器,主要用于实现 持续集成(CI) 和 持续交付/部署(CD),其核心作用在于通过自动化流程提升软件开发和交付的效率与质量 一.环境准备 1. 安装 Docker ...

  5. python中_自动生成的_pycache__文件夹

    _pycache__文件夹可以看作该文件夹下文件已被python接管或者说编译过. 在第一次执行代码的时候,Python解释器已经把编译的字节码放在__pycache__文件夹中,这样以后再次运行的话 ...

  6. 8.6K star!完全免费+本地运行+无需GPU,这款AI搜索聚合神器绝了!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 FreeAskInternet是一款革命性的开源项目,它完美结合了多引擎搜索和智能语言模型, ...

  7. ORA-24247:网络访问被访问控制列表(ACL)拒绝器

    我在oracle 存储过程中发送http请求, 报错如下: ORA-29273:HTTP请求失败 ORA-06512:在"SYS.UTL HTTP",line 1527 ORA-2 ...

  8. K8s进阶之Deployment的更新&回滚

    更新概述 更新指的是对 Deployment 所管理应用的配置.镜像版本等进行修改并应用到集群中的过程.通过更新 Deployment,你能够实现应用功能的升级.修复漏洞.调整资源分配等操作. 更新触 ...

  9. c++复习板子

    数论 GCD 点击查看 B4025 最大公约数 gcd: 点击查看代码 #include<bits/stdc++.h> #define int long long using namesp ...

  10. win10将python打包成apk详细文档

    打包不支持windows所以可以找一台linux的电脑 或者用win10子系统(推荐) 我用的是Ubuntu 方法:https://www.jianshu.com/p/fcf21d45ea74 我简单 ...