LU矩阵分解

描述

[大号ü] = LU(一个因子分解的完整或稀疏矩阵一个成上三角矩阵ü和置换下三角矩阵大号这样一个= L * U

[大号üP] = LU(一个也返回的置换矩阵P这样A = P'* L * U。这个语法,大号是单位下三角和ü是上三角。

[大号üP] = LU(一个outputForm回报P在由指定的形式outputForm。指定outputForm'向量'回来P作为一个置换向量:一个(P) = L * U

[大号üPQ] = LU(小号因子分解稀疏矩阵小号变成一个单位下三角矩阵大号,上三角矩阵ü中,行置换矩阵P和列置换矩阵Q,这样P * S * Q = L *ù

[大号üPQd] = LU(小号也返回一个对角缩放矩阵d这样P * (D \ S) * Q = L * U。通常情况下,该行缩放导致一个稀疏的和更稳定的因子。

[___] = LU(小号用于通过使用枢转的策略指定的阈值使用任何先前的输出参数的组合。根据输出参数的个数指定为默认值和要求输入是不同的。看到参数说明了解详情。

[___] = LU(___outputForm回报PQ在由指定的形式outputForm。指定outputForm'向量'回来PQ作为置换载体。您可以在前面的语法使用任何输入参数的组合。

例子

全部收缩

计算矩阵的LU因子分解并检查结果因子。LU分解是一种分解矩阵的方法 一个 成上三角矩阵 ü ,下三角矩阵 大号 和置换矩阵 P 这样 PA = 。这些矩阵描述了在矩阵上执行高斯消去直到它变成行简化阶梯形的步骤。该 大号 矩阵包含了所有的乘法器,以及置换矩阵 P 占行交换。

创建一个3×3矩阵并计算LU因子。

A = [10 -7 0 -3 2 6 5 -1 5];
陆[L U] = (A)
L =3×31.0000 00 -0.3000 -0.0400 1.0000 0.5000 1.0000 0
U =3×310.0000 -7.0000 0 0 2.5000 5.0000 0 0 6.2000

乘以系数来重建一个。随着双输入语法,采用了置换矩阵P直接进入大号因子,使大号返回真的P'* L因此一个= L * U

L * U
ANS =3×310.0000 -7.0000 0 -3.0000 2.0000 6.0000 5.0000 -1.0000 5.0000

您可以指定三个输出来分离置换矩阵和乘子大号

[L,U,P] = LU(A)
L =3×31.0000 0 0 0.5000 1.0000 0 -0.3000 -0.0400 1.0000
U =3×310.0000 -7.0000 0 0 2.5000 5.0000 0 0 6.2000
P =3×31 0 0 0 0 1 0 1 0
P'* L * U
ANS =3×310.0000 -7.0000 0 -3.0000 2.0000 6.0000 5.0000 -1.0000 5.0000

通过执行LU分解,并使用因素简化问题求解线性系统。使用反斜杠操作比较与其他方法的结果,并分解目的。

创建一个5×5幻方矩阵,并且求解线性系统 斧头 = b 所有的元素b等于65,神奇的总和。因为65是一个神奇的总和此矩阵(所有的行和列添加至65岁),为预期的解决方案X为1s的向量。

一个=魔法(5);b = 65 * 1 (5、1);x = A \ b
x =5×11.0000 1.0000 1.0000 1.0000 1.0000

对于一般的方阵,反斜杠运算符使用LU分解计算线性系统的解。LU分解表达一个如三角矩阵,以及涉及三角矩阵的线性系统的产品很容易使用替换公式求解。

要重新创建由反斜杠计算的答案,请计算的LU分解一个。然后,利用因子求解两个三角线性系统:

y = L \ (P * b);x = U \ y;

之前求解线性系统可以提高性能当许多线性系统将得到解决,因为分解只发生一次,并不需要重复预先计算的矩阵因素的这种方法。

[L,U,P] = LU(A)
L =5×51.0000 0 0 0 0 0.7391 1.0000 0 0 0 0.4783 0.7687 1.0000 0 0 0.1739 0.2527 0.5164 1.0000 0 0.4348 0.4839 0.7231 0.9231 1.0000
U =5×523.0000 5.0000 7.0000 14.0000 16.0000 0 20.3043 -4.1739 -2.3478 3.1739 0 0 24.8608 -2.8908 -1.0921 0 0 0 19.6512 18.9793 0 0 0 0 -22.2222
P =5×50 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0
y = L \ (P * b);x = U \ y
x =5×11.0000 1.0000 1.0000 1.0000 1.0000

分解对象也是求解线性使用专门的因式分解系统是有用的,因为你会得到很多的预先计算的矩阵因素的性能优势,但你不需要知道如何使用的因素。使用与分解对象'鲁'键入来重新创建相同的结果。

DA =分解(A,'鲁');X = DA \ b
x =5×11.0000 1.0000 1.0000 1.0000 1.0000

计算稀疏矩阵的LU分解并验证其恒等式L *Ù= P * S * Q

创建巴克明斯特-富勒网格球顶的连通图的60逐60稀疏邻接矩阵。

S =巴基;

计算的LU分解小号使用稀疏矩阵的语法与四个输出返回的行和列置换矩阵。

[L,U,P,Q] = LU(S);

的行和列排列小号P * S * Q并将结果与​​三角因素比较乘以L * U。它们的差的1范数是舍入误差内,这表明L *Ù= P * S * Q

Ë= P * S * Q  -  L * U;范数(即,1)
ANS = 5.7732e-15

计算矩阵的LU分解。通过返回行排列作为载体代替基体节省内存。

创建一个1000乘1000的随机矩阵。

A =兰特(1000);

计算与存储为矩阵的置换信息的LU分解P。将结果与存储为矢量置换信息比较p。矩阵越大,使用置换向量的内存效率就越高。

[L1,U1,P] = LU(A);[L2,U2,P] = LU(A,'向量');谁是Pp
名称大小字节类属性P 1000x1000 8000000双P 1x1000 8000双

使用置换矢量也节约了后续操作的执行时间。例如,你可以使用以前的LU因式分解求解线性系统 斧头 = b 。虽然从置换向量和置换矩阵得万博 尤文图斯到的解是等价的(直到舍入),但使用置换向量的解通常需要较少的时间。

比较具有和没有列置换计算的稀疏矩阵的LU分解的结果。

加载west0479矩阵,这是一个实数值479通过-479稀疏矩阵。

加载west0479一个= west0479;

计算的LU因子分解一个通过调用有三个输出。产生L型和U因素的间谍阴谋。

[L,U,P] = LU(A);副区(1,2,1)间谍(L)标题(“L因素”)副区(1,2,2)间谍(U)标题(“U因子”

现在,计算的LU分解一个运用具有四个输出,其中的置换的列一个减少因子中非零的数量。产生的因素要比不使用列排列时少得多。

[L,U,P,Q] = LU(A);副区(1,2,1)间谍(L)标题(“L因素”)副区(1,2,2)间谍(U)标题(“U因子”

输入参数

全部收缩

输入矩阵。一个在尺寸上可以完全或稀疏以及正方形或矩形。

数据类型:|
复数支持:万博1manbetx是的

稀疏输入矩阵。小号大小可以是正方形或长方形。

数据类型:
复数支持:万博1manbetx是的

稀疏矩阵的旋转阈值,指定为标量或双元素向量。有效值在区间内[0 1]。您指定的方式取决于在调用中指定了多少输出

  • 对于三个或以下输出必须是一个标量,默认值是1.0

  • 对于四个或更多输出可以是标量或两个元素的矢量。默认值是[0.1 0.001]。如果您指定作为标量,那么只替换载体中的第一个值。

在较高的层次上,此输入使您能够在准确性和总执行时间之间进行权衡。较小的值往往会造成稀疏LU因素,但解决的办法可能会变得不准确。较大的值会导致更准确的解决方案(但不总是),通常在总的工作和内存使用率的增加。

首先根据输出参数的数量,其次根据被分解矩阵的性质,选择一个枢轴策略。在所有情况下,将阈值设置为1.0导致局部枢转,而将它们设置为0使枢转以仅基于所得矩阵的稀疏性来选择。的所有值大号的绝对值升/分钟(脱粒)或更少。

  • 三个或更少的输出参数-算法选择对角线主元,如果它满足方程

    第(j,j)的> = THRESH *最大(ABS(A(j:米,J)))
    否则,它选择包含绝对值最大的元素的行。

  • 对称战略的枢转- 如果小号是方形稀疏矩阵用基本上对称的结构,大致非零对角,然后使用对称的旋转策略。对于这个策略,算法选择对角主元Ĵ如果满足不等式:

    A(I,J)> = THRESH(2)*最大(ABS(A(j:米,J)))
    如果对角线项未能通过此测试,则选择最稀疏的行一世满足下式:
    A(i,j) >= thresh(1) * max(abs(A(j:m,j))

  • 非对称旋转策略- 如果小号不满足对称旋转策略的要求,那么采用了非对称策略。在这种情况下,选择最稀疏的行一世满足下式:

    A(i,j) >= thresh(1) * max(abs(A(j:m,j))
    的价值1.0对于脱粒(1)结果在常规的部分枢转。在项大号的绝对值1 /打(1)或更少。的第二元件输入向量不与非对称策略中使用。

注意

在某些罕见的情况下,不正确的分解导致P * S * QL * U。如果出现这种情况,请增加到最大1.0(正规的部分回转),然后再试一次。

置换输出的形状,指定为“矩阵”要么'向量'。此标志控制返回行排列P和列排列Q作为置换矩阵或排列的载体。

矩阵,输出PQ满足这些身份:

  • 三路输出 -P满足P *甲= L * U

  • 四个输出,PQ满足P * S * Q = L *ù

  • 五个输出 -PQd满足P * (D \ S) * Q = L * U

向量,输出PQ满足这些身份:

  • 三路输出 -P满足:一个(P) = L * U

  • 四个输出,PQ满足S (P, Q) = L * U

  • 五个输出 -PQd满足d(:,P)\ S(:,Q)= L * U

例子:[L,U,P] = LU(A, '载体')

输出参数

全部收缩

下三角因子,返回一个矩阵。形式大号取决于是否行排列P在单独的输出中返回:

  • 如果第三输出P被指定,则大号返回为一个单元下三角矩阵(即,以1s上主对角线下三角矩阵)。

  • 如果第三输出P未指定,则大号返回为一个单元的行的置换下三角矩阵。具体而言,它是产品P'* L的输出中的P大号在三个输出的情况下返回。

上三角因子,返回为上三角矩阵。

行置换,以置换矩阵的形式返回'向量'选项指定,作为置换向量。利用这个输出来提高数值计算的稳定性。

看到outputForm来描述此输出所满足的恒等式。

列置换,返回为置换矩阵,或者,如果'向量'选项指定,作为置换向量。使用这个输出来减少稀疏矩阵因子的填充(非零的数量)。

看到outputForm来描述此输出所满足的恒等式。

行缩放,返回为对角矩阵。d用于缩放的值在小号这样P * (D \ S) * Q = L * U。通常(但并不总是),行缩放会导致更稀疏和更稳定的因数分解。

算法

该LU分解使用高斯消元法的变体来计算。计算一个准确的解决方案依赖于原始矩阵的条件数的值气孔导度(A)。如果矩阵的条件数较大(近似奇异),则计算的因式分解可能不准确。

的LU分解是在获得与逆的关键步骤INV和行列式DET。它也是与运营商获得的线性方程溶液或矩阵分割的基础\/。这必然意味着的数值限定也存在于这些相关的函数。

扩展功能

R2006a前推出