• matlab 求解线性方程组之LU分解


    线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积。常见的有如下分解:

    LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵

    QR分解:

    秩分解:A=CD  ,  A是m×n矩阵,C是m×4矩阵,D是4×n矩阵。

    奇异值分解:A=UDVT

    谱分解:

    在求解线性方程组中,一个核心的问题就是矩阵的LU分解,我们将一个矩阵A分解为两个更加简单的矩阵的复合LU,其中L是下三角矩阵,U是阶梯形矩阵。下三角矩阵和上三角矩阵具有非常良好的性质:Lx=y 或者Ux=y 很容易求解。

    问题1.对于任意的矩阵A,是否存在LU分解?

     定理:如果A行等价于阶梯形矩阵U,那么(EnEn-1......E1)A=U,其中的Ei,i=1,2,.....,n是高斯消去矩阵,他们都是下三角矩阵,并且都可逆。

     这个定理告诉我们三件事:

      1.并不是所有的矩阵都有LU分解的。

      2.A=LU=(EnEn-1......E1)-1U=(E1-1E2-1.....En-1)U。

      3.这个定理还给出了求解矩阵A-1的一种方法。

    数值算法1.Gauss消去

    用Gauss消去法将矩阵A行变换为U:

       

    用Gauss消去矩阵将A行变换为U:

    数值算法2.Gauss-jardon

        过程和Gauss-jardon基本一致,之不多在选择完最大元之后,将其化为1,这样就可以通过乘以一个倍数来消去其他行了。

    选择主元

       当对某一列进行Gauss消去时,一般都是选择这一列中绝对值最大的一个元素作为主元,当然这会进行行交换。其好处有一下几点:

    1.在Gauss会代的过程中,不会出现除数为0的情况。

    2.减少误差传播,这主要是因为乘数小于等于1.

      (为何乘数小于等于1,如果选择这一列中绝对值最大的一个元素作为主元,我们假设这个元素是a,那么乘数等于-b/a,此时|b/a|<=1)。

    为什么不用绝对值最小的元素做主元?易知此时乘数的绝对值大于等于1,会增加误差的传播累计。

    为什么应该避免用接近于0的数做主元?此时乘数可能非常大,参加如下例子:

       

  • 相关阅读:
    总结
    spring boot 使用mongodb基本操作与一些坑
    java 在循环中删除数组元素之二
    学习spring cloud 笔记
    一些名词解释
    redis--分布式锁
    微信小程序的加密与解密--java
    java 动态代理
    (收藏)CORS(跨域资源共享)
    策略模式学习笔记--在写更好的代码路上
  • 原文地址:https://www.cnblogs.com/francisYoung/p/5367600.html
Copyright © 2020-2023  润新知