lu分解

LU分解求逆

大兔子大兔子 提交于 2019-12-03 07:33:32
文章转自: https://www.cnblogs.com/bigmonkey/p/9555710.html https://blog.csdn.net/xx_123_1_rj/article/details/39553809 什么是LU分解 在线性代数中, LU分解是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积) 如果有一个矩阵A,将A表示成下三角矩阵L和上三角矩阵U的乘积,称为A的LU分解。   更进一步,我们希望下三角矩阵的对角元素都为1: LU分解的步骤   上一章讲到,对于满秩矩阵A来说,通过左乘一个消元矩阵,可以得到一个上三角矩阵U。   可以看到,L实际上就是消元矩阵的逆。容易知道二阶矩阵的逆:   现在假设A是一个3×3矩阵,在不考虑行交换的情况下,通过消元得到上三角矩阵的过程是: LU 分解的前提   并非所有矩阵都能进行LU分解,能够LU分解的矩阵需要满足以下三个条件: 矩阵是方阵(LU分解主要是针对方阵); 矩阵是可逆的,也就是该矩阵是满秩矩阵,每一行都是独立向量; 消元过程中没有0主元出现,也就是消元过程中不能出现行交换的初等变换 示例      如果A存在LU分解存,a,b满足什么条件?   使用消元法逐一消去主元:   由于E 31 中出现了 –b/a,所以a ≠ 0   b可以是任意常数。

矩阵LU分解

时光总嘲笑我的痴心妄想 提交于 2019-12-01 19:42:33
有如下方程组 ,当矩阵 A 各列向量互不相关时, 方程组有位移解,可以使用消元法求解,具体如下: 使用消元矩阵将 A 变成上三角矩阵 , , 使用消元矩阵作用于向量 b,得到向量 c, , , Ax=b 消元后变为 ,即 , 由于 为上三角矩阵, 使用回带法即可求解方程组。 对矩阵 做如下运算 。在消元过程中,已知 ,如何求解 呢? 表示将矩阵A的第二行乘以 1 再加上矩阵A的第三行得到矩阵B的第三行,矩阵B的第一二行于矩阵A的第一二行保持一致。根据语义, 表示将矩阵B的第二行乘以 -1 再加上矩阵B的第三行得到矩阵A的第三行,矩阵A的第一二行于矩阵B的第一二行保持一致。 , , 通过以上观察, 仅需将对角线下元素相加即可得到, ,在矩阵消元过程中,对消元系数取反,然后放在相应的位置即构成了 ,也就是 L 。同时,消元法记录下了 U,则有 Ux=c, b=Lc。 由于 L 为下三角矩阵,根据 Lc=b, 可求解 c;U 为上三角矩阵, 根据 Ux=c 可求解 x。 在消元过程中,如果遇到主元位置上为 0 情况时,需要使用行变换矩阵使消元过程得以继续,PAx=Pb,P为行变换矩阵,记录矩阵 L,U,P,可实现LU分解,过程如下: 有方程组 ,对矩阵 进行LU分解: 1) , , ; 2) , , ; 3)由于 为 0,需要交换2,3行,则有: , ,

LU分解

荒凉一梦 提交于 2019-11-28 02:12:30
实验题目:LU分解 实验目的:掌握把一个矩阵进行LU分解算法; 实验内容及要求:LU分解法求解线性方程 。要求输入一个矩阵;显示输出L阵和U阵。其中L为下三角,U为上三角 代码 1 #include " iostream " 2 using namespace std; 3 void main() 4 { 5 int i,j; 6 float A[ 3 ][ 4 ] = {{ 2 , 2 , 3 , 3 },{ 4 , 7 , 7 , 1 },{ - 2 , 4 , 5 , - 7 }},U[ 3 ][ 3 ] = {{ 0 , 0 , 0 },{ 0 , 0 , 0 },{ 0 , 0 , 0 }},L[ 3 ][ 3 ] = {{ 1 , 0 , 0 },{ 0 , 1 , 0 },{ 0 , 0 , 1 }},Y[ 3 ],X[ 3 ]; 7 for ( i = 0 ;i < 3 ;i ++ ) 8 for ( j = 0 ;j < 3 ;j ++ ) 9 { 10 U[ 0 ][j] = A[ 0 ][j]; 11 L[ 1 ][ 0 ] = A[ 1 ][ 0 ] / U[ 0 ][ 0 ]; 12 L[ 2 ][ 0 ] = A[ 2 ][ 0 ] / U[ 0 ][ 0 ]; 13 U[ 1 ][ 1 ] = A[ 1 ][ 1 ] - L[ 1 ][ 0 ] * U