在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。

什么是LU分解

  如果有一个矩阵A,将A表示成下三角矩阵L和上三角矩阵U的乘积,称为A的LU分解。

  更进一步,我们希望下三角矩阵的对角元素都为1:

  一旦完成了LU分解,解线性方程组就会容易得多。

LU分解的步骤

  上一章讲到,对于满秩矩阵A来说,通过左乘一个消元矩阵,可以得到一个上三角矩阵U。

  可以看到,L实际上就是消元矩阵的逆。容易知道二阶矩阵的逆:

  现在假设A是一个3×3矩阵,在不考虑行交换的情况下,通过消元得到上三角矩阵的过程是:

LU 分解的前提

  并非所有矩阵都能进行LU分解,能够LU分解的矩阵需要满足以下三个条件:

  1. 矩阵是方阵(LU分解主要是针对方阵);
  2. 矩阵是可逆的,也就是该矩阵是满秩矩阵,每一行都是独立向量;
  3. 消元过程中没有0主元出现,也就是消元过程中不能出现行交换的初等变换。

LU分解的意义

  LU分解的意义在于求解大型方程组。一个方程组可以简化为Ax = b的形式,其中A是n阶方阵,x是未知数组成的向量,b是n×1矩阵,例如:

  以往求解的方式有两种,一是高斯消元法,二是对A求逆,使得x = A-1b。第二种方式远比消元法复杂,先看一下消元法的计算量。假设A是n阶满秩方阵,如果不写成增广矩阵,即不考虑 b,那么第一次消元达到的效果是:

  其中方块是A原来的元素,0是达到的效果,三角是经过消元运算后改变的元素。以第二行为例,为了使第一个元素为0,需要让第一行乘以某个数(第一行n个元素,共进行了n次乘法运算),再将第一行和第二行相加或相减(第二行n个数与第一行的n个数相加,共进行了n次加法运算)。如果把一组乘法和加法看成一次运算,那么第二行的消元共进行了n次运算;共有n-1行需要类似运算,所以第一次消元共进行了n(n - 1) ≈ n2 次运算。依次类推,第二次消元共进行了(n - 1)(n - 2) ≈ (n - 1)2 次运算……消元到最后,变成了上三角矩阵U,总运算次数是:

  经过约n3/3次运算后可以得到上三角矩阵U,由于是增广矩阵,所以可以逐步求解x。

  LU分解的运算过程和高斯消元类似,首先经过n3/3次运算将A变成LU,使Ax = b变成(LU)x = L(Ux) = b,再对L求逆,使得Ux = L-1b,最后求解。

  看起来比高斯消元经历了更多的步骤,那为什么又说LU分解更快呢?在实践中,b是输出,输出又经常变动,从Ax = b频繁地变成Ax = b’,此时高斯消元就需要全部重新计算(高斯消元用增广矩阵消元,变化过程是[A, b]→[U, b’]),这对大型矩阵来说及其耗时。反观LU分解,因为它不依赖于b,所以计算一次后就可以存储U和L-1,在输出变化后也只是需要简单的相乘。实际上,由于L已经是整理过的斜对角全是1的下三角矩阵,所以用高斯-诺当消元法对L求逆非常简单。

允许行交换

  对于A = LU,我们之前限制了行的互换,但如果不可避免的必须进行行互换,只需要把A = LU变成 PA = LU就可以了,其中P是置换矩阵。实际上所有的A = LU都可以写成PA = LU的形式,当A没有行互换时,P就是单位矩阵。上一章叙述了置换矩阵的性质,P-1 = PT,所以A = P-1LU = PTLU

示例

  

  如果A存在LU分解存,a,b满足什么条件?

  使用消元法逐一消去主元:

  由于E31 中出现了 –b/a,所以a ≠ 0

  b可以是任意常数。


  作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途!

  扫描二维码关注公众号“我是8位的”

线性代数笔记10——矩阵的LU分解的更多相关文章

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

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

  2. MIT线性代数:4.A的LU分解

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

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

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

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

  5. 矩阵LU分解的MATLAB与C++实现

    一:矩阵LU分解 矩阵的LU分解目的是将一个非奇异矩阵\(A\)分解成\(A=LU\)的形式,其中\(L\)是一个主对角线为\(1\)的下三角矩阵:\(U\)是一个上三角矩阵. 比如\(A= \beg ...

  6. 矩阵LU分解

    有如下方程组 ,当矩阵 A 各列向量互不相关时, 方程组有位移解,可以使用消元法求解,具体如下: 使用消元矩阵将 A 变成上三角矩阵 , , 使用消元矩阵作用于向量 b,得到向量 c,, , Ax=b ...

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

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

  8. 第五节、矩阵分解之LU分解

    一.A的LU分解:A=LU 我们之前探讨过矩阵消元,当时我们通过EA=U将A消元得到了U,这一节,我们从另一个角度分析A与U的关系 假设A是非奇异矩阵且消元过程中没有行交换,我们便可以将矩阵消元的EA ...

  9. 矩阵LU分解程序实现(Matlab)

    n=4;%确定需要LU分解的矩阵维数 %A=zeros(n,n); L=eye(n,n);P=eye(n,n);U=zeros(n,n);%初始化矩阵 tempU=zeros(1,n);tempP=z ...

随机推荐

  1. 50_流程控制函数-case结构

    case函数的使用一:switch case 的效果 /* Java中 switch(变量或表达式){ case 常量1:语句1:break: ... default:语句n;break; } MyS ...

  2. Day10作业及默写

    1,继续整理函数相关知识点,写博客. 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*number): sum=0 for num in number: sum+=nu ...

  3. 复习回顾(String,StringBuffer,Arrays方法总结)

    String: String类的对象是一经创建就无法变动内容的字符串常量,创建String类的对象可以使用直接赋值和利用构造方法赋值 String str=“hello”;  String str=n ...

  4. Spring 消息

    RMI.Hessian/Burlap的远程调用机制是同步的.当客户端调用远程方法时,客户端必须等到远程方法完成之后,才能继续执行.即使远程方法不向客户端返回任何消息,客户端也要被阻塞知道服务完成. 消 ...

  5. 跨交换机划分vlan配置

    实验要求:使两台交换机上同一vlan的主机能够通信,不同vlan的主机不能通信 拓扑如下: 涉及内容有: 1.vlan的创建和划分 2.端口trunk模式的设置 配置如下: Switch1 enabl ...

  6. python自定义异常抛出接受多个数值

    在使用Python的时候,有时候想自己自定义异常错误,同时抛出多个参数,比如对数据库查找一条数据,如果没有找到,返回 {"errCode":"-1", &quo ...

  7. VMware网络连接IP设置

    网络配置(仅主机模式) 一.改变虚拟机IP地址达到联网目的 仅主机模式,第一步,打开我的电脑属性,查看VMt1网卡IP设置,设置一个区段:192.168.xx.aa       xx.aa自由设置,简 ...

  8. [LeetCode&Python] Problem 836. Rectangle Overlap

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  9. day01计算机组成与操作系统

    1.什么是编程语言编程语言是程序员与计算机之间的沟通介质 2.什么是编程编程的过程就是程序员通过某种语言将命令给到计算机并让计算机表达出来 修改后:编程就是程序员按照某种语法规则将自己想让计算机做的事 ...

  10. xdoj--1144 (合并模板)--有趣的优先队列(优先队列默认权值最大的数在前面)

    我觉得这道题出的很好 区别于“哈夫曼树” 因为事之多合并k个 理论说尽可能多合并. 然后我们看一个简单的例子 4 3 1 2 3 4  ——>6 4——>10 (6+10)=16: 1 2 ...