精华内容
下载资源
问答
  • lu分解
    千次阅读
    2019-01-02 15:40:23

    在高等工程数学一书中, LU分解(LU Decomposition)是矩阵分解中最普通的一种,也是最经典的一种,它可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积,有时是它们和一个置换矩阵的乘积。LU分解主要应用在其数值分析中,用来解线性方程、求反矩阵或计算行列式等。将所给的系数矩阵A转变成等价两个矩阵L和U的乘积 ,其中L和U分别是单位下三角矩阵和上三角矩阵。当A的所有顺序主子式都不为0时,矩阵A可以分解为A=LU(所有顺序主子式不为0,矩阵不一定不可以进行LU分解)。其中L是下三角矩阵,U是上三角矩阵。

    LU分解在本质上是高斯消元法的一种表达形式。实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。这正是所谓的杜尔里特算法(Doolittle algorithm):从下至上对矩阵A做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵。这类算法的复杂程度一般在(三分之二的n三次方) 左右。

    Doolittle分解

    对于非奇异矩阵(任n阶顺序主子式不全为0)的方阵A,都可以进行Doolittle分解,得到A=LU,其中L为单位下三角矩阵,U为上三角矩阵;这里的Doolittle分解实际就是Gauss变换;

    Crout分解

    对于非奇异矩阵(任n阶顺序主子式不全为0)的方阵A,都可以进行Crout分解,得到A=LU,其中L为下三角矩阵,U为单位上三角矩阵;

    列主元三角分解

    对于非奇异矩阵的方阵A,采用列主元三角分解,得到PA=LU,其中P为一个置换矩阵,L,U与Doolittle分解的规定相同;

    全主元三角分解

    对于非奇异矩阵的方阵A,采用全主元三角分解,得到PAQ=LU,其中P,Q为置换矩阵,L,U与Doolittle分解的规定相同;

    直接三角分解

    对于非奇异矩阵的方阵A,利用直接三角分解推导得到的公式(Doolittle分解公式或者Crout分解公式),可以进行递归操作,以便于计算机编程实现;

    下面介绍一下其在MATLAB中的程序实现:

         %LU分解法求解Ax=b, 假定A矩阵可进行LU分解以及对角线元素均不为0
    function [x] = Dool(A,b)
    n=length(A);A(2:n,1)=A(2:n,1)/A(1,1);
    for t=2:n-1                     %进行LU分解
        A(t,t:n)=A(t,t:n)-A(t,1:t-1)*A(1:t-1,t:n);
        A(t+1:n,t)=(A(t+1:n,t)-A(t+1:n,1:t-1)*A(1:t-1,t))/A(t,t);
    end
    A(n,n)=A(n,n)-A(n,1:n-1)*A(1:n-1,n);
    L=tril(A,-1)+eye(n);U=triu(A);  %矩阵A分解出L和U
    for t=2:n                       %解Lx=b
        b(t)=b(t)-L(t,1:t-1)*b(1:t-1);
    end
    b(n)=b(n)/U(n,n);               %解Ux=b
    for t=1:n-1;
        k=n-t;b(k)=(b(k)-U(k,k+1:n)*b(k+1:n))/U(k,k);
    end
    x=b;                            %方程Ax=b的解即为x

    至此,关于LU分解的介绍基本完毕,请大家继续关注!!

    更多相关内容
  • lu分解的matlab源代码ML学习计划 第一周:学习Scala: 编程-Scala-Martin-Odersky(课程) 了解Spark Scala: 学习火花闪电快速数据分析 Advanced-Analytics-Spark-Sandy-Ryza77 Hadoop最终指南汤姆·怀特 吴安德...
  • 该程序允许您从方阵的 LU 分解中获得 L 和 U 矩阵。
  • 我上传的是一个matlab脚本文件,程序会自动生成一个元素大小在3到5之间的四阶非奇异矩阵,向量b也是自动生成的,元素大小在4到6之间,有需要的朋友可根据实际情况进行更改
  • vb LU分解_lu分解_

    2021-10-02 09:49:58
    vb LU分解.exe,bin,Debug,vb LU分解.vshost.exe,vb LU分解.exe.config,vb LU分解.vshost.exe.config,vb LU分解.vshost.exe.manifest,vb LU分解.xml,vb LU分解.pdb,vb LU分解.exe,Release,.vs,vb LU分解,v14,.suo,vb ...
  • MATLAB-LU分解法实验报告
  • LU分解法求解线性系统
  • rrlu 使用具有行和列交换的部分旋转计算一般 m×n 实全矩阵 A 的 LU 分解的秩。 分解具有形式A(P,Q) = L * U 其中 P 和 Q 是置换向量,L 是下三角(下梯形,如果 m > n),U 是上三角(如果 m < n 则为上梯形)...
  • 利用矩阵lu分解的优秀特性进行矩阵求逆的代码,减少求逆计算量,大约200行 求逆矩阵思路: 1.求矩阵的crout(LU)分解,其中L为下三角矩阵,U为上三角矩阵 2.求L,U矩阵的伴随阵,参考文献:三角形矩阵求伴随矩阵...
  • MATLAB——进行LU分解

    2018-08-22 11:20:11
    本代码主要利用MATLAB工具实现MATLAB——进行LU分解,简单明了,易于理解
  • 矩阵的LU分解_fortran版

    2019-04-15 12:37:40
    采用fortran代码编写的矩阵的LU分解及大型多元方程的计算
  • 在网上找了很久都找不到python编写的,于是自己写了,在这里分享一下,代码调试通过,有详细注释。这里主要编写了一个自定义函数Doolittle(A,B)用于解AX=B的方程组,途中输出L、U矩阵和中间矩阵y和最终的解x。...
  • 一个简单的LU分解小程序,闲着没事编的,希望能够帮到一些人。 这个是大型矩阵的LU分解,可以将excel表中的数据直接复制粘贴到相应的txt文件中,可实现大型矩阵的LU分解。 程序语言C++,编译环境VS2017,其实挺简单的...
  • matlab,矩阵分解方法之一——LU分解方法,用于学习交流。矩阵的三角分解是一个方阵分解为两个基本三角阵的乘积,其中一个三角阵为上三角阵,另一个是下三角阵。这种分解为LU分解
  • - 使用部分旋转将 LU 分解为下三角矩阵 L 和上三角矩阵的示例代码 - 示例代码向前和向后替换,用于求解三角矩阵的线性系统。 - 基于 LU 的示例代码逆矩阵。
  • LU 分解,给出采用行连续划分方式下的MPI实现。矩阵A的规模为9*9 通过设置通信域中的进程数为3、6、9、18、25,得到结论当处理器数与矩阵size一样时,程序运行时间最长,当处理器数小于size时,运行时间差不多,大于...
  • 在解算电路问题上,LU分解的快慢影响着导纳线性方程的求解时间。针对于这个方向,本文探讨了采用预选算法和块矩阵并结合FPGA平台的并行运算模式。本次实验通过分别对比大型稀疏矩阵和小型稠密矩阵在传统LU解法和并行...
  • lu分解的matlab源代码Retinex铅笔 实现“通过快速Retinex分解生成健壮的铅笔图”。 CAD /图形2021 访问我们的 :page_facing_up: 。 论文可以在这里下载 :memo: 。 环境 系统:Windows 10 MATLAB 2020a 档案结构 . │...
  • 该程序将获得任何方阵的 LU 分解LU 分解方法包括找到满足方程 A=L*U 的 L 和 U 矩阵,A 是方阵。 一旦找到 L 和 U,为了求解 x,我们可以将方程 A*x=B 重写为 L*x_star=b (Eq.1) 其中 x_star=U*x (Eq.2)。 然后...
  • 该方法使用 LU 分解来计算矩阵 A 的逆。
  • LU分解MatLab源代码

    2016-10-05 11:57:03
    LU分解MatLab源代码,可实现PA=LU形式LU分解
  • (MKL)ScaLAPACK的LU和Cholesky分解 建造和安装 确保使用--recursive标志克隆了--recursive ,例如 git clone --recursive https://github.com/kabicm/lu 要生成并运行,请执行以下操作: mkdir build && cd build...
  • 包含文档和代码 分别用高斯消元法和列主元消去法编程求解方程组 ,并分别求出矩阵A的LU分解及列主元的LU分解(求出L,U,P),并用LU分解的方法求A的逆矩阵及A的行列式
  • lu分解法matlab代码 NJIT-matlab-homework 本代码库包含NJIT数值计算作业的matlab文件,共分为4个.m文件和一份说明。 您可以从书后的实习题自行选取与原程序不同的题目,按下列提示修改参数。修改完毕后点击matlab...
  • //本程序能够对输入的任意方阵求其行列式、判断是否能进行LU分解(doolittle分解),进行LU分解 //本程序在计算时,只需要更改要输入的方阵,无需更改其他参数 //本程序根据《线性代数》、《计算方法》课程行列式计算...
  • LU 分解

    2021-12-06 14:10:13
    使用scipy进行LU分解实例参考文献 待续 1.算法来源 Toledo, S. 1997. Locality of Reference in LU Decomposition with Partial Pivoting. SIAM J. Matrix Anal. Appl. 18, 4 (Oct. 1997),1065-1081. ...

    待续

    1.算法来源

    Toledo, S. 1997. Locality of Reference in LU Decomposition with Partial Pivoting. SIAM J. Matrix Anal. Appl. 18, 4 (Oct. 1997),1065-1081.
    https://sci-hub.wf/10.1137/s0895479896297744

    论文中原始算法:
    在这里插入图片描述

    2.LAPACK dgetrf()

    LAPACK 中 dgetrf() API介绍:
    http://www.netlib.org/lapack/explorehtml/dd/d9a/group__double_g_ecomputational_ga0019443faea08275ca60a734d0593e60.html#ga0019443faea08275ca60a734d0593e60

    subroutine dgetrf  ( integer  M,  
      integer  N,  
      double precision, dimension( lda, * )  A,  
      integer  LDA,  
      integer, dimension( * )  IPIV,  
      integer  INFO  
     ) 
    

    API的返回值有些难以理解,可参考此描述:
    在这里插入图片描述
    即返回值也覆盖在A里,L对角线元素都是1,所以返回的A中也就不体现L的对角线元素。
    在这里插入图片描述
    另外还有P矩阵(permutation/pivot matrix),可能是体现在IPIV?待验证

    3.使用scipy进行LU分解实例

    直接使用scipy官网中的例子:scipy.linalg.lu

    import numpy as np
    from scipy.linalg import lu
    A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]])
    p, l, u = lu(A)
    #p
    array([[0., 1., 0., 0.],
           [0., 0., 0., 1.],
           [1., 0., 0., 0.],
           [0., 0., 1., 0.]])
    #l
    array([[ 1.        ,  0.        ,  0.        ,  0.        ],
           [ 0.28571429,  1.        ,  0.        ,  0.        ],
           [ 0.71428571,  0.12      ,  1.        ,  0.        ],
           [ 0.71428571, -0.44      , -0.46153846,  1.        ]])
    #u
    array([[ 7.        ,  5.        ,  6.        ,  6.        ],
           [ 0.        ,  3.57142857,  6.28571429,  5.28571429],
           [ 0.        ,  0.        , -1.04      ,  3.08      ],
           [ 0.        ,  0.        ,  0.        ,  7.46153846]])
    

    参考文献

    [1] LOCALITY OF REFERENCE IN LU DECOMPOSITION WITH PARTIAL PIVOTING
    [2]http://www.netlib.org/lapack/explorehtml/dd/d9a/group__double_g_ecomputational_ga0019443faea08275ca60a734d0593e60.html#ga0019443faea08275ca60a734d0593e60
    [3] https://docs.scipy.org/doc/scipy/reference/reference/generated/scipy.linalg.lu.html#scipy.linalg.lu

    展开全文
  • 在Ubuntu下的CUDA编程中,使用CUSPARSE API中的cusparseScsrsv_solve函数和cusparseScsrilu0进行LU分解以及求解线性方程组。
  • lu分解法matlab代码 矩阵 用于Ruby的快速数值线性代数库 描述 NMatrix是用于Ruby的快速数值线性代数库,具有密集和稀疏的矩阵,主要用C和C ++编写。 它是SciRuby项目的一部分。 此存储库中提供了三个gem。 nmatrix ...
  • lu分解的matlab源代码灵x ENM 502-001 2021-02-21 分配2 LU分解 介绍 在本作业中,我们将在Matlab中实现LU分解。 基本上,下-上( LU )分解或因式分解因子a是下和上三角矩阵的乘积。 运算次数约为O(n^3) ,其中n是...
  • LU分解 NxN矩阵的LU分解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,152
精华内容 3,660
关键字:

lu分解