精华内容
下载资源
问答
  • LU分解

    2012-08-04 00:34:38
    LU分解
  • LU分解矩阵,LU分解矩阵,LU分解矩阵,LU分解矩阵,LU分解矩阵,
  • 矩阵的LU分解源于线性方程组的高斯消元过程。 对于一个含有N个变量的N个线性方程组,总可以用高斯消去法,把左边的系数矩阵分解为一个单位下三角矩阵和一个上三.设矩阵a是n阶方阵,那么如果a的1到n-1阶主子式都非零...

    矩阵的LU分解源于线性方程组的高斯消元过程。 对于一个含有N个变量的N个线性方程组,总可以用高斯消去法,把左边的系数矩阵分解为一个单位下三角矩阵和一个上三.

    设矩阵a是n阶方阵,那么如果a的1到n-1阶主子式都非零,那么矩阵a存在lu分解。如果矩阵a存在lu分解且a非奇异,那么lu分解唯一。 详见golub和van loan的matrix .

    LU分解,又称Gauss消去法,可把任意方阵分解成下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。其数学表达式为:A=LU。其中L为下三角矩阵的基本变换形.

    矩阵的LU分解有哪几个方法 高斯消元弄了其中一个怎么求另一个?

    Gauss消去法同时产生L和U 如果你不知道怎么算,那么去找本教材看看,这种是很简单的基础问题

    在线性代数中, lu分解(lu decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。.

    LU分解,也称为三角分解 当矩阵a满足可逆条件时,可对其作lu分解 A = LU 其中L是下三角,U是上三角 注意:分解不唯一 L是单位下三角时,称为Doolittle分解 U是单位下.

    LU分解在本质上是高斯消元法的一种表达形式。实质上是将A通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。这正是所谓的杜尔里特算法(.

    6 7 7],运用MATLAB中的LU分解语句[L1,U1]=lu(A),得到:L1 = 0.3333 1。.

    从数值稳定性的角度考虑,LU分解需要选主元,你用的“书上的方法”没有选主元,所以L当中有绝对值大于1的元素。

    LU分解 好处 SEIDEL迭代的好处及其看法, 以及方程组解的稳定性讨论。

    若矩阵Ax=b 把矩阵LU分解,求AX=b的问题就等价于求出A=LU后:因为Ly=b可求y,再因为Ux=y,可求出x。原始的求法x=A^(-1)*b,某些情况下,如果矩阵A中的数非常小.

    对矩阵x进行QR分解和LU分解,QR分解和LU分解是什么意思呢

    为了求解线性方程组,我们通常需要一定的解法。其中一种解法就是通过矩阵的三角分解来实现的,属于求解线性方程组的直接法。在不考虑舍入误差下,直接法可以用有.

    就是要可分解

    有个定理。如果矩阵的各阶顺序主子式均不为零,则必有LU分解,且LU唯一

    方程组变换中的性质

    借本数值分析看下吧若矩阵Ax=b 把矩阵LU分解,求AX=b的问题就等价于求出A=LU后:因为Ly=b可求y,再因为Ux=y,可求出x。原始的求法x=A^(-1)*b,某些情况下,如.

    是LU近似分解法 “近似” 不是LU分解谢谢是计算流体力学中的一种时间分裂。

    LU分解,又称Gauss消去法,可把任意方阵分解成下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。其数学表达式为:A=LU。其中L为下三角矩阵的基本变换形.

    LU分解法求解线性方程组 {3x1-x2-2x3-x4=2 {-x1+x2+2x3-x4=4 {2x1+2x2-x3+3x.

    其中L为下三角矩阵,U为上三角矩阵。例如,4*4矩阵A的情况,(1)式如下: (2) 可以用如(1)式分解来求解线性方程组 (3) 首先求解向量y使得 (4) 然后再来.

    好像一般求解线性方程组都用LU分解,很多软件包都基于LU分解原理的。很。

    LU分解法可以使用任何矩阵,而QR分解主要针对上海森伯格阵的全部特征值问题和计算对称三对角矩阵的全部特征值问

    比如LU分解QR分解矩阵分析中为什么有各种各样的分解?如果分解了,有什。

    这些分解就是为了加快运算速度而已由于上三角矩阵、下三角矩阵、等比较特殊,含有许多0所以通过LU QR分解将其分解成这些函数及其变形的乘积从而加快解方程或求.

    Doolittle分解是LU分解(三角分解)的一种特殊形式。其中L是下三角,U是上三角 L是单位下三角(主对角元都是1的下三角矩阵)时,称为Doolittle分解 U是单位下三角时.

    定理:当一个方阵A的1~(n-1)阶顺序主子式都不为0时,A存在唯一的doolittle分解。对于满足条件的这个方阵,采用直接三角分解法可以得到这个唯一的L、U矩阵。但事实.

    如何说明n>1一定存在一个奇异矩阵存在LU分解rt

    在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘.

    展开全文
  • 一个简单的LU分解小程序,闲着没事编的,希望能够帮到一些人。 这个是大型矩阵的LU分解,可以将excel表中的数据直接复制粘贴到相应的txt文件中,可实现大型矩阵的LU分解。 程序语言C++,编译环境VS2017,其实挺简单的...
  • matlab中lu分解代码2009-09-2411:27代码一、function[l,u]=lvfenjie(a)%对非奇异矩阵a作lu分解[n,n]=size(a);%判断被分解矩阵的维数forj=1:n%给出U的第一行L的第一列u(1,j)=a(1,j);l(j,1)=a(j,1)/u(1,1);endi=1;fork...

    matlab

    lu

    分解代码

    2009-09-24 11:27

    代码

    一、

    function [l,u]=lvfenjie(a)

    %

    对非奇异矩阵

    a

    lu

    分解

    [n,n]=size(a);%

    判断被分解矩阵的维数

    for j=1:n %

    给出

    U

    的第一行

    L

    的第一列

    u(1,j)=a(1,j);

    l(j,1)=a(j,1)/u(1,1);

    end

    i=1;

    for k=2:n

    for j=k:n

    for m=1:(k-1)

    uu(m)=l(k,m)*u(m,j);%

    计算公式中对应的

    l*u

    的和

    end

    u(k,j)=a(k,j)-sum(uu);%u

    的分解结果

    for m=1:(k-1)

    uu(m)=l(j,m)*u(m,k);

    end

    l(j,k)=(a(j,k)-sum(uu))/u(k,k);

    end

    end

    代码二、

    function [L,U]=myLU(A)

    %

    实现对矩阵

    A

    LU

    分解,

    L

    为下三角矩阵

    A

    [n,n]=size(A);

    L=zeros(n,n);

    U=zeros(n,n);

    for i=1:n

    L(i,i)=1;

    end

    for k=1:n

    展开全文
  • 1/6 LU 分解LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵。对应的matlab代码如下:function[L, U] =zlu(A)% ZLU - LU decomposition for matrix A% work as gauss elimination[m, n] = size(A);...

    1/6 LU 分解

    LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵。对应的matlab代码如下:

    function[L, U] =zlu(A)

    % ZLU - LU decomposition for matrix A

    % work as gauss elimination

    [m, n] = size(A);

    if m ~= n

    error('Error, current time only support square matrix');

    end

    L = zeros(n);

    U = zeros(n);

    for k = 1:n-1

    gauss_vector = A(:,k);

    gauss_vector(k+1:end) = gauss_vector(k+1:end) ./ gauss_vector(k);

    gauss_vector(1:k) = zeros(k,1);

    L(:,k) = gauss_vector;

    L(k,k) = 1;

    for l=k+1:n

    A(l,:) = A(l,:) - gauss_vector(l)*A(k,:);

    end

    end

    U = A;

    这段代码的目的非常简单,就是使用高斯消元法给出L,U。但是计算的稳定性非常不好,这点可以通过这段代码的分解结果和matlab自带lu的分解结果相比较得出。比较的方法非常简单:就是计算l*u与原始矩阵想减之后的Frobinus范数大小,使用如下的代码做出两个结果的比较:

    n = 1000;

    my_error = zeros(1, 1000);

    sys_error = zeros(1, 1000);

    for i = 1:n

    test = randn(5);

    [zl, zu] = zlu(test);

    [l, u] = lu(test);

    my_error(i) = norm(zl*zu - test, 'fro');

    sys_error(i) = norm(l*u - test, 'fro');

    end

    disp(mean(my_error));

    disp(var(my_error));

    disp(mean(sys_error));

    disp(var(sys_error));

    在这段代码里面,随机的生成一个5x5的符合高斯分布的矩阵,然后使用自己写的lu分解和matlab自带的lu分解分别给出L和U,再计算norm(L*U - test),从这里就可以看出我们自己计算出来的结果精度和matlab自带的lu真实的差异了。这个差异就体现为这些值的均值和方差。结果如下:

    mean of my lu : 13.313846

    variance of my lu : 43622.114147

    mean of matlab lu : 0.000000

    variance of matlab lu : 0.000000

    从这个结果可以看出,我们自己写的lu分解的结果在均值和方差上比matlab自带的差了很多。个人认为原因有两点:第一个方法的原因,matlab给出的结果是pivoted LU,第二个是因为实现的原因,matlab基于成熟的LAPACK,肯定会比自己写的更好了。

    这一步使用PA = LU来完成LU分解。代码如下:

    function [P, L, U] = zplu(A)

    % pivoted LU decompositon P*A = L*U

    [m, n] = size(A);

    if m ~= n

    error('zplu:test', 'current time only support square matrix');

    end

    P = eye(n);

    L = zeros(n, n);

    for k = 1:n-1

    %find the largest element in k column of A from row k to n

    [max_value, max_index] = max(A(k:end, k));

    max_index = max_index + k - 1;

    if max_index ~= k

    A([k max_index], :) = A([max_index k], :);

    P([k max_index], :) = P([max_index k], :);

    L([k max_index], :) = L([max_index k], :);

    end

    if A(k,k) ~= 0

    gauss_vector = A(:,k);

    gauss_vector(k+1:end) = gauss_vector(k+1:end) ./ gauss_vector(k);

    gauss_vector(1:k) = zeros(k,1);

    L(:,k) = gauss_vector;

    L(k, k) = 1;

    for l=k+1:n

    A(l,:) = A(l,:) - gauss_vector(l)*A(k,:);

    end

    end

    end

    U = triu(A);

    下面是运行前面检测程序的输出:

    mean of my lu : 7.803258

    variance of my lu : 1450.332510

    mean of matlab lu : 0.000000

    variance of matlab lu : 0.000000

    两个结果相比较可以看到,Matlab的lu一样的稳定,但是使用pivot来调整矩阵A的次序可以极大的提高LU分解的稳定度,这个可以从下降了非常多的方差可以看出。

    pivot LU是从k列的k+1到n个元素种选择最大的一个,调换到第k个位置。从我个人的角度理解,除以最大的元素使得高斯变换矩阵中非对角元素全部小于1。由于计算机种存储浮点数的机制,绝对值越靠近0,其精度越高。所以使用pivot这种方法可以极大的提高LU分解的稳定程度。但是也需要指出,使用pivot并不一定能提高LU分解的精度,对于特定的矩阵,不使用pivot说不定可以获得更好的性能。

    为了进一步提高提高LU分解的稳定性,可以使用full pivoted LU。分解公式:P*A*Q = L * U; 对应的Matlab代码如下:

    function [P, Q, L, U] = zflu(A)

    %full pivoted LU decomposition

    %

    % full pivoted LU decomposition

    [m, n] = size(A);

    if m ~= n

    error('current only support square matrix')

    end

    P = eye(n);

    Q = eye(n);

    for k=1:n-1

    %find the larget element in A(k:n,k:n)

    [max_value, row_index] = max(A(k:n, k:n));

    [max_value, col_index] = max(max_value);

    real_row = k-1 + row_index(col_index);

    real_col = k-1 + col_index;

    %exchange the row and column of matrix A

    if real_row ~= k

    A([k real_row],:) = A([real_row k], :);

    P([k real_row],:) = P([real_row k], :);

    end

    if real_col ~= k

    A(:, [k real_col]) = A(:, [real_col k]);

    Q(:, [k real_col]) = Q(:, [real_col k]);

    end

    if A(k, k) ~= 0

    rows = k+1:n;

    A(rows, k) = A(rows, k) ./ A(k, k);

    A(rows, rows) = A(rows, rows) - A(rows, k)*A(k, rows);

    end

    end

    L = tril(A);

    for k=1:n

    L(k, k) = 1;

    end

    U = triu(A);

    跑完test之后的结果如下:

    mean of my lu : 7.77222e-16

    variance of my lu : 4.3478e-29

    mean of matlab lu : 3.69764e-16

    variance of matlab lu : 2.03659e-32

    可以看到使用full pivoted LU 分解可以在很大程度上保证分解的稳定性,即便是使用我们自己写的代码。但是即便如此,仍然推荐使用LAPACK中的代码,因为那里面的代码是经过严格的测试和分析的,在各种一场情况下应该都有很好的表现。

    这里所介绍的LU分解可以使用另外一种基于GaxPy形式的运行,将在下面介绍。

    展开全文
  • 程序可以进行如下操作: ...(1)如果A可以进行LU分解并且分解为唯一,则输出计算的得到的L,U,Y,X (2)如果A可以进行LU分解并且分解不唯一,则输出其中一组L和U (3)如果A不可以进行LU分解,则提示无法分解
  • 矩阵分解 三角分解(LU分解)

    万次阅读 多人点赞 2017-11-17 11:32:17
    三角分解(LU分解) 在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,...

    三角分解(LU分解)

    在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。

    本质上,LU分解是高斯消元的一种表达方式。首先,对矩阵A通过初等行变换将其变为一个上三角矩阵。对于学习过线性代数的同学来说,这个过程应该很熟悉,线性代数考试中求行列式求逆一般都是通过这种方式来求解。然后,将原始矩阵A变为上三角矩阵的过程,对应的变换矩阵为一个下三角矩阵。这中间的过程,就是Doolittle algorithm(杜尔里特算法)。

    例子1:

    A = LU,这里将A的对应元素求出。可以直接顺序计算LU值



    例子2: 
    若AX=b是一个非奇异系统,那么高斯消元法将A化简为一个上三角矩阵。若主轴上没有0值,则无需交互行,因此只需进行第3类初等行变换(把第 i 行加上第 j 的 k 倍)即可完成此变换。例如 
    这里写图片描述 
    第3类行变换可以通过左乘相应的初等矩阵image实现,对上例来说进行的3个变换就是相应初等矩阵的乘积。注意最右边是一个下三角矩阵L 
    这里写图片描述 
    从而有G3G2G1A=U,即A=G11G12G13U。因此A=LU,为一个下三角与一个上三角矩阵的乘积,因此称为LU分解。 
    注意: 
    1)U是高斯消元的结果,且对角线上是主元 
    2)L对角线上是1,对角线下面的元素image恰恰是在式1中用于消去(i,j)位置上元素的乘子。

    LU分解常用来求解线性方程组,求逆矩阵或者计算行列式。例如在计算行列式的时候,A=LUdet(A)=det(L)det(U)。而对于三角矩阵来说,行列式的值即为对角线上元素的乘积。所以如果对矩阵进行三角分解以后再求行列式,就会变得非常容易。

    在线性代数中已经证明,如果方阵A是非奇异的,即A的行列式不为0,LU分解总是存在的。


    在计算机程序中常常用到这种方法解线性代数方程组。它的优点是存储量很省。L和U中的三角零元素都不必存储,这样只用一个n阶仿真就可以把L和U存储起来。

    即:下三角存储L各元素而上三角存储U的元素。

    再考察公式S会发现A中任一元素aij只在计算lij(j<=i)和uij(u>=j)中用到一次,以后就不再出现了,因为完全可以利用原始数据A的单元,一个个逐次存储L或U中

    的相应元素,即:




    下面是关于使用LU分解求解方程组Ax = b:

    当系数矩阵A完成了LU分解后,方程组Ax = b就可以化为L(Ux) = b,等价于求解两个方程组Ly = b和Ux = y;

    具体计算公式为


    采用LU分解有如下特点:

    (1)LU分解与右端向量无关。先分解,后回代,分解的运算次数正比于n^3,回代求解正比于n^2。遇到多次回代时,分解的工作不必重新做,这样节省计算时间。

    (2)分解按步进行,前边分解得到的信息为后边所用。

    (3)【A】矩阵的存储空间可利用,节省存储。


    展开全文
  • 本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码。1. 什么是LU分解?矩阵的LU分解源于线性方程组的高斯消元过程。对于一个含有N个变量的N个线性方程组,总可以用高斯消去法,把左边的...
  • 实验二矩阵的LU分解一、题目:求矩阵[2112;1232;2411;3123]的Doolittle分解二、方法:Doolittle分解,矩阵的紧凑格式的LU分解法三、程序:(1)紧凑格式的LU分解法functiona=nalupad(a)n=length(a);a(2:n-1)=a(2:n-1)/...
  • matlab,矩阵分解方法之一——LU分解方法,用于学习交流。矩阵的三角分解是一个方阵分解为两个基本三角阵的乘积,其中一个三角阵为上三角阵,另一个是下三角阵。这种分解为LU分解
  • ——LU分解 实验目的: 1、了解LU分解的数学依据与基本原理; 2、能熟练地应用、构造矩阵的LU分解程序求解方程组。 实验内容: 根据LU分解的原理与公式自己填写 实验题目: (1)编写程序写出下面系数矩阵的LU分解 ...
  • 在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求...
  • 矩阵LU分解

    2015-03-29 00:20:36
    这个ppt中介绍了数学中的矩阵LU分解以及矩阵LU分解的c语言实现代码和结果,已经很简洁的做成ppt形式,语言简洁,思路清晰,内容详细。供大家分享和学习。
  • 三角分解(LU分解

    2021-01-12 23:03:42
    三角分解(LU分解) 作者:HDU-STEA_banjiu 时间:2021/1/11 1.LU分解的意义 在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是...
  • 什么是LU分解将一个矩阵 $A$ 表示成 $A = LU$ 的形式,其中 $L$ 是下三角矩阵, $U$ 是上三角矩阵。这就是所谓的LU分解。例如:上面的例子中 $A$ 是方阵。如果 $A$ 不是方阵呢?这种情况下,我们希望 $L$ 和 $U$ 中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,409
精华内容 563
热门标签
关键字:

lu分解