zoukankan      html  css  js  c++  java
  • 线性代数学习笔记(二)

    高斯消元法 解 线性方程

    对于Ax=b:

    for i := 1 to n-1:
        for j := i+1 to n:
            if a(i,j)==0:
                substitute row j with some row below j
            row j := row j - row i * a(j,i) / a(i,i)
    

    结合矩阵相乘的row picture来看,高斯消元每一步均可看做是一个矩阵E乘以A,例如:

    ( E_{i,j}A=egin{bmatrix}1 & 0 & 0\ 1 & 1 & 0\ 0 & 0 & 1end{bmatrix}egin{bmatrix}mathbf{a_1}\mathbf{a_2}\mathbf{a_3}end{bmatrix}=egin{bmatrix}mathbf{a_1}\mathbf{a_1+a_2}\mathbf{a_3}end{bmatrix} )

    Eij乘以A得到EA的意义是:第一行结果不变,第二行结果是原第一行加上原第二行,第三行结果不变。将所有Eij相乘(包括逆向迭代的过程),得到的结果就是A的逆矩阵(1.如果有逆的话;2.不考虑行交换):A-1Ax = Ix = x

    将b并入A,得到增广矩阵 [A b],目的是让对A的操作均等效在b中(相当于Eij乘以b),之后对增广矩阵进行高斯消元得到 [A-1A A-1b],即 [ I  A-1b],A-1b即为线性方程的解。

    总结:1. 构造增广矩阵;2. 对增广矩阵进行高斯消元。

    逆矩阵

    判断A是否可逆

    这里讨论的逆矩阵都是方阵的逆假如A是m*n的,B是n*m的,AB=Im,BA=In,我们似乎能定义:B就是非方阵A的逆矩阵。

    为什么不讨论非方阵矩阵的逆?可以证明上述情况下,m=n,也就是A必须是方阵。

    Quora的一个直观解释是,我们可以从“线性变换”的角度看这个问题:一个m*n的矩阵A,可以看做 n维空间 到 m维空间 的一个转化。它的逆矩阵是 m维空间 到 n维空间 的一个转化。假如n>m,那么A的转化就是“高维到低维”的一个转化,也就是不可逆的(我们可以从人得到影子,但是无法从影子得到人)。

    如果A满足以下条件之一,A就是可逆的:

    1. 消元之后有n个主元pivot(也就是A满秩)   or
    2. Ax=0无非零解(否则(左)A-1Ax=x=(右)A-10=0)  or
    3. A的行列式不等于0

    利用Gauss-Jordan消元法求A-1

    设A-1=[ a b; c d],AA-1按照column picture可以看做两个线性方程:A*[a;c]=[1;0]和A*[b;d]=[0;1],将这两个方程同时解(也就是增广矩阵右侧是矩阵I)就是Gauss-Jordan消元法:

    ( A^{-1}egin{bmatrix}A & Iend{bmatrix}=egin{bmatrix}I & A^{-1}end{bmatrix} )

    将求逆过程看做对系数矩阵 [A I] 进行高斯消元,将所有Eij相乘(见高斯消元)得到A的逆矩阵。

    总结:1. 构造大的增广矩阵;2. 对增广矩阵进行高斯消元。

    从GJ消元法得到的一个不大不小的推论:假如L是下三角矩阵,那么L的逆也是下三角矩阵(考虑求L的逆的过程即可得出)。

    注:单位矩阵,常标注为 I (identity matrix),但有时也被标为 E(elementary matrix)。

    矩阵的LU分解

    L=Lower,是一个下三角矩阵, U=Upper,是一个上三角矩阵。高斯消元的过程可以理解为A的LU分解:

    • U就是消元之后的系数矩阵
    • L是高斯消元每一步之积E的逆,EA=U,A=LU,L的对角线是1,下三角矩阵中每个元素 l(i,j) 都是高斯消元的系数 c(i,j)  
    • (E也是下三角矩阵,对角线也等于1,但是下三角中每个元素就没有这个性质)

    可以按照row picture结合高斯消元的步骤来理解:

    (row 3 of U) = (row 3 of A) - c(3,1)*(row 1 of U) - c(3,2)*(row 2 of U)  =>高斯消元的步骤

    (row 3 of A) =  c(3,1)*(row 1 of U) + c(3,2)*(row 2 of U) + 1*(row 3 of U)   =>row picture的含义

    U还能再分解为DU,D=diagonal是对角线矩阵,对角线元素等于U的主元(U的每一行都要除以相应的主元)。

    以上假设A不需要进行行交换,有时需要对A的行进行调整,就需要permutation matrice P:PA=LU (这就是matlab函数lu的参数意义)

    转置矩阵

    • (AB)T = BT AT
    • (A-1)T = (AT)-1

    AB是B的行的组合,BT AT是BT的列的组合。对称矩阵的逆还是对称的。任何矩阵乘以其转置得到一个对称矩阵:(RRT)T==RTTRT=RRT.对称矩阵分解成LDU后,L与U互为转置。

  • 相关阅读:
    java 中for each语句
    设备树使用手册
    Java中 final static super this instanceof 关键字用法
    Java 抽象类与oop三大特征
    Views的补充
    Form表单组件验证
    django信号相关
    缓存实例
    自定义django中间件
    【主机管理项目】-(路由表)
  • 原文地址:https://www.cnblogs.com/ericxing/p/3604925.html
Copyright © 2011-2022 走看看