zoukankan      html  css  js  c++  java
  • 数学

    线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件

    目前我们用于解线性方程组的方法依然是Gauss消元法。在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作,这就默认了对A与b的操作数是相等的且每换一个b就要重复一遍对A的操作。

    然而,在实际情况中,右侧向量b经常发生变化。而且,研究发现,Gauss消元法中,对n阶矩阵A的消元操作数正比于n3,而对右侧向量b的回代操作(包括行变换和恢复成代数方程的形式)数仅仅正比于n2。(操作次数上的相对大小可以根据A与b元素数量的差距进行猜想)

    在b不变时,两种算法上的复杂度差距不明显,选择同步操作更为方便直观。但是,当b变化时,如果我们将对A和对b的操作进行分隔的话,只需对A完成一次完整的消元操作,再对b进行回代操作。这样可以大大减少操作的次数。

    所以,在b变化时,我们先对A单独进行分解操作。其中的一种分解方法是LU分解。这种方法的优势在于分解结果中L(上三角矩阵)和U(下三角矩阵)都是三角形矩阵,后续运算比较简便。而且二者恰好相配,使用计算机进行运算时可以存储在一个数组中,节约存储空间。 

    利用A的LU分解解线性方程组的过程为将Ax=b等价变形成(LU)x=b,根据结合律有L(Ux)=b,再解Ly=b中的y,最后解Ux=y得到线性方程组的解。

    LU分解的步骤如下:

    1.求U留E:沿用Gauss消元法,将A化为U,不同的是,变换过程中左边乘上的每一个E都要记录下来;

    2.逆E为L:将用到的E各自求逆(取含变换操作的元素的相反数)再逆序相乘(将消元乘数按照原来的位置写到一起,再补齐左上-右下对角线上的1和对角线上方的0),乘积即为L:

    E求逆的简便方法和乘积求逆的运算法则在#3中已经提到。

    逆序相乘等价于归置消元乘数于下三角矩阵中是一个常用结论,记忆使用可以简化运算。

    乘积为L的依据是:假设E为所有E的乘积,EA=U可变形为E-1EA=E-1U=IA=A=LU,其中L=E-1

    什么样的矩阵才能进行LU分解?

    具体判定方法没有给出。不过根据分解的过程,我们可以推定消元过程中不进行行交换的矩阵才能进行LU分解,即默认主元位(k行k列)上的元素均非0。

    如果必须进行行交换怎么办?

    Prof. Strang引入了置换的概念,针对n阶矩阵,其置换矩阵群含有n!个置换矩阵P也即可能的置换操作。这个矩阵群具有许多特殊的性质,比如P-1=PT,P之间的乘积仍属于该矩阵群。

    置换将在#5中进行详细介绍。

  • 相关阅读:
    POJ 1815 求最小点割(拆点+枚举割边)
    POJ 2391 floyd + 拆点构图 + 二分 + 最大流
    POJ 1966 去掉最少的点使得图不连通(最小点割)
    sgu 194 无源汇的上下界可行流
    POJ 2396 有源汇的上下界可行流(好题)
    DIV水平垂直居中
    The Struts dispatcher cannot be found
    Introduction to 3D Game Programming with Direct X 9.0c读书笔记(1)
    Chapter 5Looking Through a Filter(如何将纹理坐标变换到屏幕坐标)
    Chapter 6Blurring Things Up之Do It Twice
  • 原文地址:https://www.cnblogs.com/samaritan-z/p/8353323.html
Copyright © 2011-2022 走看看