上一篇我们对下三角矩阵的求解给出了一个方便的求解,利用消元代入可以在Θ(N2)\Theta(N^2)Θ(N2) 的时间内完成,对于上三角矩阵,我们仍然可以利用类似的方法在相同的时间内求解。
对于一个非三角矩阵系统何对其进行求解,我们将在接下来几篇博文中进行讨论,而在这篇博里我们会对求解做一个浅显的分析和简易尝试。


【1】下三角矩阵的线性方程求解
【2】矩阵的LU分解初步:一个对角线上元素非零的方阵◀


对于如下的线性方程(其中矩阵对角线上的元素不为零,矩阵非奇异)
[a11a12...a1na21a22...a2n............am1am2am3..amn][x1x2...xn]=[b1b2...bn]\begin{bmatrix} a_{11} & a_{12}&. &. &. &a_{1n}\\ a_{21} &a_{22} &. &. &. & a_{2n}\\ .& .& .& & & .\\ .& .& & .& & .\\ .& .& & & .&. \\ a_{m1}&a_{m2} &a_{m3} &. &. &a_{mn} \end{bmatrix} \begin{bmatrix} x_{1}\\ x_{2}\\.\\.\\.\\ x_{n}\end{bmatrix}= \begin{bmatrix}b_{1}\\ b_{2}\\.\\ .\\ .\\ b_{n}\end{bmatrix}⎣⎢⎢⎢⎢⎢⎢⎡​a11​a21​...am1​​a12​a22​...am2​​...am3​​....​....​a1n​a2n​...amn​​⎦⎥⎥⎥⎥⎥⎥⎤​⎣⎢⎢⎢⎢⎢⎢⎡​x1​x2​...xn​​⎦⎥⎥⎥⎥⎥⎥⎤​=⎣⎢⎢⎢⎢⎢⎢⎡​b1​b2​...bn​​⎦⎥⎥⎥⎥⎥⎥⎤​
我们记A=(aij)A=(a_{ij})A=(aij​),x=(xi)x=(x_{i})x=(xi​),b=(bi)b=(b_{i})b=(bi​),于是我们可以简单地将方程记作Ax=bAx=bAx=b
为了求解这个方程,我们定义两个三角矩阵LLL、UUU其中,LLL为一个单位下三角矩阵,UUU为一个上三角矩阵。如果有LU=ALU=ALU=A成立,那么我们将这一对LLL、UUU称作AAA的一个LULULU分解,这样线性方程又可以记作LUx=bLUx=bLUx=b在这里,我们令Ux=yUx=yUx=y,这样上式变成Ly=bLy=bLy=b如此一来,好处显而易见:我们将一个非三角线性系统转化为两个三角线性系统,这样我们就可以采用上一篇博文中介绍的方法求解。
以上我们简要介绍了LULULU分解的思路。为了对AAA完成LULULU分解,我们可以尝试高斯消元(Gaussian elimination)的方式,实际上LULULU分解确实是一种特殊的高斯消元。

在《算法导论》(第三版,480页)我们可以看到其利用“主元”的方式(俺们小学时候解二元一次方程组的那种方法,同乘上一个系数,一减就完事了,这里写的好高大上啊…)参考其推导如下:

KaTeX parse error: Undefined control sequence: \ at position 281: …1 \end{bmatrix}\̲ ̲
而我们逆用矩阵乘法公式可以继续分解为两个矩阵相乘(可以试着验真)
[a11ωTvA1]=[10va111][a11ωT0A1−vωTa11]\begin{bmatrix} a_{11} & \omega^T\\ v& A^ 1 \end{bmatrix}=\begin{bmatrix} 1 & 0\\ \frac{v}{a_{11}}&1 \end{bmatrix}\begin{bmatrix} a_{11} & \omega^T\\ 0& A^ 1- \frac{v \omega^T}{a_{11}} \end{bmatrix}[a11​v​ωTA1​]=[1a11​v​​01​][a11​0​ωTA1−a11​vωT​​]
这里我们采用a11a_{11}a11​为主元,而我们又令A1−vωTa11=L1U1A^ 1- \frac{v \omega^T}{a_{11}}=L^1U^1A1−a11​vωT​=L1U1,从而又可以得到
A=[10va11L1][a11ωT0U1]A=\begin{bmatrix} 1 & 0\\ \frac{v}{a_{11}}&L^1 \end{bmatrix}\begin{bmatrix} a_{11} & \omega^T\\ 0& U^1 \end{bmatrix}A=[1a11​v​​0L1​][a11​0​ωTU1​]
这个过程我们可以使用递归完成看出其递归性,我们能够使用递归算法来完成分解。递归是个老生常谈的问题,形式简洁但是使用起来可能会存在一些效率问题,我们可以将其重写为循环的形式,以下给出核心代码

 for (i = 0; i < Row - 1; i++){for (j = i; j < Row - 1; j++)MatA[j + 1][i] /= MatA[i][i];for (j = i; j < Row - 1; j++)for (k = i; k < Row - 1; k++)MatA[j + 1][k + 1] -= MatA[i][k+1] * MatA[j+1][i];}

这段代码中我们得到了一个包含LUL ULU的新矩阵,实际上在这个矩阵中LLL和UUU以对角线分隔

    for (i = 0; i<Row; i++){L[i][i] = 1;//L是一个单位下三角矩阵,因此对角线时1for (j = 0; j <=i; j++)L[i][j] = MatA[i][j];}for (i = 0; i<Row; i++){for (j = 0; j <= i; j++)U[j][i] = MatA[j][i];}

矩阵的LU分解初步:一个对角线上元素非零的方阵相关推荐

  1. 设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。

    知识点:理解二维数组与主.辅对角线. 在上述求主对角线和辅对角线的和已给出如何找到在主对角线上及辅对角线上的元素. 那么在这里便不再赘述相同的概念了,若仍有疑问的同学可通过链接分别计算二维数组主对角线 ...

  2. MIT线性代数笔记四 矩阵的LU分解

    文章目录 1. 矩阵的LU分解 2. 消元法所需运算量 3. 行互换 Row exchanges   本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的 LLL矩阵,使得矩阵 AAA可以转变为 ...

  3. 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解

    第04讲 矩阵的LU分解 Factorization into A=LU 04 A的LU分解​v.youku.com 本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的L矩阵,使得矩阵A可以转 ...

  4. matlab将矩阵分解成lu,10行代码实现矩阵的LU分解(matlab)

    最近由于数值分析实验课要求,需要通过matlab实现矩阵的LU分解.但是看了很多网友写的程序,基本上都是通过循环嵌套循环来实现矩阵的LU分解.略感琐碎,因此最近两天便一直在思考能否利用矩阵的乘v法,来 ...

  5. 矩阵的LU分解,LU分解的推广,LU分解有什么意义,为什么要用LU分解。

    一点点数学!开干! 参考书籍:<矩阵分析与计算>李继根 张新发编著 矩阵的LU分解: LU分解定理:如果n阶方阵A的各阶顺序主子式≠0(K=1.2.3,-,n),即A的各阶顺序主子式矩阵都 ...

  6. 怎样用matlab做矩阵的LU分解,矩阵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 ...

  7. C语言 输入一个5行5列的数组。1.求数组主对角线上元素的和。2.求出辅对角线上元素的积。3.找出主对角线上最大的值及其位置

    C语言 输入一个5行5列的数组.1.求数组主对角线上元素的和.2.求出辅对角线上元素的积.3.找出主对角线上最大的值及其位置 主对角线是什么: 在一个n阶方阵(或是n阶行列式)中,从左上角到右下角这一 ...

  8. 线性代数:矩阵的LU分解

    矩阵的LU分解 基础公式 示例说明 2x2 矩阵情况 3x3 矩阵情况 本节是网易公开课上的麻省理工大学线性代数课程第四节: A的LU分解 的学习笔记. 本篇主要讲解 矩阵的LU分解. 矩阵的LU分解 ...

  9. 【数据结构】随堂练习设有一个 n 阶的下三角矩阵 A ,如果按照行的顺序将下三角 阵中的元素包括对角线上元素)存放在 n ( n +1)/2个连续的存储单元中,则 A [ i][j ]与 A [ 0]

    1.必答[单选题] 设有一个二维数组 A [m][ n ],按行优先存储在连续的单元中.假设 A [0] [0]存放位置在644, A [2][2]存放位置在676,每个元素占一个空间,问 A [3] ...

最新文章

  1. 【 C 】const 进一步解读(由switch引出)
  2. java多线程编程同步方法_实践【Java多线程编程核心技术】系列:同步方法造成的无限等待...
  3. C++二维码相关库编译
  4. JAX-WS使用Handler实现简单的WebService权限验证
  5. 完美解答35K月薪的MySQL面试题(一)MySQL是如何存储数据的
  6. springboot七牛云---报{“error“:“download token auth failed“}错误
  7. 王道考研 计算机网络3 速率相关的性能指标
  8. cortex-m 2017 whitepaper (English and Chinese)
  9. Tuxera NTFS对磁盘进行不同格式转换
  10. 十五、新人成才之路《做人七项原则 做一个有爱心的人》
  11. canvas-画图改进版
  12. Android推送方案分析(MQTT/XMPP/GCM)
  13. 酷派W711刷机教程
  14. DiffImg_图片对比(DiffImg)
  15. 【Proteus仿真】 51单片机利用定时器制作简易SPWM波形输出
  16. 《等一朵花开》读书感悟
  17. 2022年羊城杯wp
  18. 如何用 js 获取虚拟键盘高度?- 20170817 前端开发日报
  19. 字体加粗造成文字抖动
  20. 玩家参与装备熔炼顺序是怎样进行

热门文章

  1. 美国服务器与日本服务器哪个比较好鬼影互联推举
  2. c语言软件中ovr怎么取消,OVR Toolkit
  3. A Sample Crash Log
  4. 采用SAMKeychain钥匙串存储设备唯一标示与何种情况下同一个手机它存储的值会变化
  5. 传奇单机架设图文教程
  6. windows10 基于Spin的模型检测
  7. 【FFMpeg 命令行】基本应用
  8. Android基础知识【项目实训-实现二级导航“今日活动”及读取数据库】【5】
  9. 吉林大学 十佳歌手 计算机科学与工程学院,贾海洋 - 吉林大学 - 计算机科学与技术学院...
  10. Java钉钉开发_Exception_异常总结