LU分解

1.LU分解的基础知识

矩阵的LU分解又称为矩阵的三角分解,即将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U,即A=LUA=LUA=LU,其在方程组的求解和求矩阵的逆有许多应用。

LU分解的求解命令是lu,基本使用格式如下:

调用格式 说明
[L,U]=lu(A) 将一个矩阵分解为一个下三角L和一个上三角U
[L,U,P]=lu(A) 对A进行分解,其中L为单位下三角矩阵,U为上三角矩阵,P为置换矩阵,满足LU=PA

例1,对矩阵A=[1234567823417856]A=\left[\begin{array}{llll}1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 2 & 3 & 4 & 1 \\ 7 & 8 & 5 & 6\end{array}\right]A=⎣⎢⎢⎡​1527​2638​3745​4816​⎦⎥⎥⎤​进行分解。

A=[1,2,3,4;5,6,7,8;2,3,4,1;7,8,5,6];
[L1,U1]=lu(A)L1 =​    0.1429    1.0000         0         0
​    0.7143    0.3333    1.0000         0
​    0.2857    0.8333    0.2500    1.0000
​    1.0000         0         0         0U1 =​    7.0000    8.0000    5.0000    6.0000
​         0    0.8571    2.2857    3.1429
​         0         0    2.6667    2.6667
​         0         0         0   -4.0000[L2,U2,P]=lu(A)L2 =​    1.0000         0         0         0
​    0.1429    1.0000         0         0
​    0.7143    0.3333    1.0000         0
​    0.2857    0.8333    0.2500    1.0000U2 =​    7.0000    8.0000    5.0000    6.0000
​         0    0.8571    2.2857    3.1429
​         0         0    2.6667    2.6667
​         0         0         0   -4.0000P =0     0     0     11     0     0     00     1     0     00     0     1     0

从上面两者的计算结果比较分析可以得出:使用第一种方法得到的上三角矩阵并不是严格的上三角矩阵,这样对于以后的分析和计算显然是不利的,所以在工程计算或者其他计算中都采用第二种方法。

2.LU分解法求解方程组

LU分解法求解的基本思路就是:将系数矩阵A进行分解,得到LU=PALU=PALU=PA,然后利用Ly=PbLy=PbLy=Pb,最后再解Ux=yUx=yUx=y,从而求解方程组的解。

例2:利用LU分解法求解方程组{x1+x2−3x3−x4=13x1−x2−3x3+4x4=4x1+5x2−9x3−8x4=0\left\{\begin{array}{l}x_{1}+x_{2}-3 x_{3}-x_{4}=1 \\ 3 x_{1}-x_{2}-3 x_{3}+4 x_{4}=4 \\ x_{1}+5 x_{2}-9 x_{3}-8 x_{4}=0\end{array}\right.⎩⎨⎧​x1​+x2​−3x3​−x4​=13x1​−x2​−3x3​+4x4​=4x1​+5x2​−9x3​−8x4​=0​ 的解。

A = [1,1,-3,-1;3,-1,-3,4;1,5,-9,-8];
b=[1;4;0]b =140[L,U,P]=lu(A)L =1.0000         0         00.3333    1.0000         00.3333    0.2500    1.0000U =3.0000   -1.0000   -3.0000    4.00000    5.3333   -8.0000   -9.33330         0         0    0.0000P =0     1     00     0     11     0     0y = L'*P*by =4.33330.25001.0000>> x = U'*yx =13.0000-3.0000-15.000015.0000

利用函数实现如下:

function x= solvebyLU(A,b)
%此函数用于利用LU分解法解方程组
flag=isexist(A,b);    %判断方程组是否有解
if flag==0disp('方程组无解');x = [];return;
elser = rank(A);[m,n]=size(A);[L,U,P]=lu(A);b = P*b;%解Ly=by(1) = b(1);if m>1for i=2:my(i)=b(i)-L(i,1:i-1)*y(1:i-1)';endendy = y';%解Ux=y得方程组的解x0(r)=y(r)/U(r,r);if r>1for i=r-1:-1:1x0(i)=(y(i)-U(i,i+1:r)*x0(i+1:r)')/U(i,i);endendx0 = x0';if flag==1x=x0;return;elseformat rat;Z = null(A,'r');[mz,nz]=size(Z);x0(r+1:n)=0;for i=1:nzt=sym(char([107 48+i]));k(i)=t;endx=x0;for i=1:nzx = x+k(i)*Z(:,i);endendend

运行结果:

 A = [1,1,-3,-1;3,-1,-3,4;1,5,-9,-8];b = [1;4;0];
x = solvebyLU(A,b)x =(3*k1)/2 - (3*k2)/4 + 5/4(3*k1)/2 + (7*k2)/4 - 1/4k1k2

MATLAB之LU分解法(十)相关推荐

  1. Matlab实现 LU分解法解线性方程组(全选主元列选主元)

    选主元LU分解 实验内容:列选主元LU分解和全选主元LU分解求解线性方程组 计算方法: 全选主元消元法 1.1 初始化 根据参数A.b,记录下矩阵.右端项的尺寸n: 以得到的尺寸n初始化解向量x: 同 ...

  2. Matlab | Lab4——用LU 分解法、 Jacobi 迭代、 Gauss-Seidel 迭代 解线性病态方程组(系数矩阵为Hilbert矩阵)

    1.要求 考虑线性方程组Hx=b,其中H为n阶Hilbert矩阵,即 通过先给定解(例如取x的各个分量为1),再计算出右端向量b的办法给出一个精确解已知的问题. (1)分别编写Doolittle LU ...

  3. 数值分析3-解线性方程组的高斯消去法、LU分解法及列主元消去法的matlab程序和调试方法

    对于形如Ax=b的线性方程组,在线性代数中是通过求逆的方式求解的,即x=A-1b,而在数值分析中,解线性方程组的方法是通过直接法或者迭代法来实现的,今天写的三个程序都属于直接法,分别为高斯消去法.LU ...

  4. matlab lu解线性方程,MATLAB报告用LU分解法求解线性方程组.doc

    MATLAB报告用LU分解法求解线性方程组 <MATLAB>期末大报告 报告内容:用LU分解法求解线性方程组 学院(系): 专 业: 班 级: 学 号: 学生姓名: 2014 年 6 月 ...

  5. LU分解法 | matlab

    % LU分解法 % M为输入的增广矩阵 % precision为输入的精度要求,如不输入或输入有误,则默认为10位if nargin == 2trydigits(precision);catchdis ...

  6. matlab 电力系统分析 毕设,基于MATLAB的P-Q分解法电力系统潮流计算毕业设计

    基于MATLAB的P-Q分解法电力系统潮流计算毕业设计 摘 要 电力系统潮流计算是研究电力系统稳定运行情况的一种重要的计算,在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用它来定量地分析比 ...

  7. 紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法

    紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法 标签:计算方法实验 /* 紧凑存储的杜利特尔分解法Doolittle:如果初始矩阵不要求保留的话,可以紧凑存储.因为每 ...

  8. Doolittle分解法(LU分解法)的Python实现

    在解一般的非奇异矩阵线性方程组的时候,或者在迭代改善算法中,需要使用LU分解法. 对于一个一般的非奇异矩阵A=(a11, a12,-,a1n,a21,-ann),可分解为一个下三角矩阵L和一个上三角矩 ...

  9. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  10. 计算机数值方法——LU分解法(C++\Python代码实现)

    算法流程 首先,LU分解法就是在高斯消元法的基础上,把矩阵AAA分解为一个上三角矩阵UUU与一个单位下三角矩阵LLL的乘积. 懒得敲LaTeX公式了,书上由具体的推导过程,这里我们重点介绍代码吧 主要 ...

最新文章

  1. Linux学习整理(一)
  2. 内置付费 inapp purchase and Error Domain=SKErrorDomain Code=0 “Cannot connect to iTunes Store”错误...
  3. 矩阵从左上到右下的最短距离问题
  4. 单链表按顺序插入节点
  5. linux小工具(2)终端记录器script命令
  6. CSS设置文字的划线
  7. 非关系型数据库mongodb的打开与连接
  8. CSS样式:覆盖规则
  9. 数据驱动开发_开发数据驱动的股票市场投资方法
  10. 调用线程必须为sta_Java手写分布式系统远程调用RPC框架
  11. opencv视频读写和视频等间隔采样
  12. 1 echo();2 print();3 die();4 printf();5 sprintf();6 print_r();7 var_dump(); 区别
  13. 分形:MandelBrot和Julia
  14. 提供《疯狂的程序员》下载地址
  15. OSChina 周日乱弹 ——不穿泳衣,我都不好意思上厕所
  16. 银河麒麟系统安装字体
  17. java什么是工厂_java – 创建工厂的什么名字是什么? (FooFactoryFactory听起来很傻的imo)...
  18. PGM:概率图模型Graphical Model
  19. C. Inna and Dima
  20. 函数模板和类模板详解

热门文章

  1. 一纬度横直线等于多公里_【归纳整理】高中地理必修一知识点总结
  2. 关于OriginPRO/Origin画图消锯齿以及平滑点与点之间的连接
  3. java 加密 —— 对称加密、非对称加密、消息摘要
  4. 工业镜头视场、倍率、焦距之间的关系
  5. 一份简单、直接、高效的中文求职信模板,一般是直接写在邮件正文中。
  6. 七步学习法 —— 如何高效学习一项技能
  7. 视觉跟踪的进展(Advances in Visual Tracking ) - 要饭的
  8. 面试总结(1)---7.28
  9. CocosCreator Shader Editor 2D/3D 特效编辑器
  10. 文件外链PHP,php如何去除外链