主要内容

LU矩阵分解

描述

例子

lU] = Lu(一个分解全部或稀疏矩阵一个变成上三角矩阵U和一个置换的下三角矩阵l这样一个= L * U

例子

lUP] = Lu(一个还返回一个排列矩阵P这样a = p'* l * u.这个语法,l单位是下三角形和U是上三角。

例子

lUP] = Lu(一个OutputForm.返回P以指定的形式OutputForm..指定OutputForm.作为'向量'返回P作为一个排列向量,使:一个(P) = L * U

例子

lUP] = Lu(年代分解稀疏矩阵年代成一个单位下三角矩阵l,上三角矩阵U,行置换矩阵P,以及列置换矩阵,这样p * s * q = l * u

lUPD] = Lu(年代也返回一个对角线缩放矩阵D这样P * (D \ S) * Q = L * U.通常,行缩放会导致更稀疏和更稳定的分解。

___] = Lu(年代指定所采用的枢转策略的阈值使用任何前面的输出参数组合。属性的默认值和要求取决于指定的输出参数的数量输入是不同的。看到参数描述有关详细信息。

例子

___] = Lu(___OutputForm.返回P以指定的形式OutputForm..指定OutputForm.作为'向量'返回P作为排列向量。您可以在前面的语法中使用任何输入参数组合。

例子

全部收缩

计算矩阵的逻辑单元分解,并检查产生的因子。逻辑单元分解是分解矩阵的一种方法 一个 变成上三角矩阵 U ,较低的三角形矩阵 l ,以及置换矩阵 P 这样 pa .这些矩阵描述了对矩阵进行高斯消去的步骤,直到它成为行简化阶梯形。的 l 矩阵包含所有乘子,和排列矩阵 P 行交换的原因。

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

A = [10 -7 0 -3 2 6 5 -1 5];
陆[L U] = (A)
l =3×3-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直接进入l因素,使l被归还真的是p'* l因此一个= L * U

L * U
ans =3×310.0000 -7.0000 0 -3.0000 2.000 6.0000 5.0000 -1.0000 5.0000

您可以指定三个输出来分离排列矩阵和中的乘数l

[l,u,p] = lu(a)
l =3×31.0000 00 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.000 6.0000 5.0000 -1.0000 5.0000

通过执行逻辑单元分解和使用因子来简化问题来解决一个线性系统。将结果与使用反斜杠操作符和的其他方法进行比较分解目的。

创建一个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 1.0000

对于一般的方阵,反斜杠运算符使用LU分解计算线性系统的解。LU分解表达一个作为三角形基质的产物,使用替代公式容易解决涉及三角形基质的线性系统。

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

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

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

[l,u,p] = lu(a)
l =5×51.0000 0000 0.7391 1.0000 000 0.4783 0.7687 1.0000 00 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 -23478 3.1739 0 0 2 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 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 1.0000

分解Object也很有用来解决使用专业分解的线性系统,因为您获得了预先计算矩阵因子的许多性能效益,但您不需要知道如何使用这些因素。使用分解对象使用'鲁'类型重新创建相同的结果。

da =分解(a,'鲁');x = dA \ b
X =5×11.0000 1.0000 1.0000 1.0000 1.0000 1.0000

计算稀疏矩阵的逻辑单元分解并验证其恒等式l * u = p * s * q

创建Buckminster-Fuller圆顶的连通图的60 × 60稀疏邻接矩阵。

s = bucky;

的逻辑单元分解年代使用具有四个输出的稀疏矩阵语法返回行和列置换矩阵。

[l,u,p,q] = lu(s);

对的行和列进行置换年代P * *并比较乘以三角形因素的结果L * U.它们差异的1-范数在舍入误差范围内,表明l * u = p * s * q

e = p * s * q  -  l * u;常量(e,1)
ans = 5.7732e-15

计算一个矩阵的LU分解。通过将行排列返回为向量而不是矩阵来节省内存。

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

a = rand(1000);

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

[l1,u1,p] = lu(a);[L2,U2,P] = Lu(a,'向量');谁是Pp
Name Size Bytes Class Attributes P 1000x1000 8000000 double P 1x1000 8000 double

使用置换向量还可以节省后续操作的执行时间。例如,您可以使用前面的逻辑单元分解来解线性系统 斧头 b .虽然从排列向量和排列矩阵得金宝搏官方网站到的解是等价的(直到舍入),但使用排列向量的解通常需要更少的时间。

比较计算稀疏矩阵的LU分解的结果,而无需列置换。

加载West0479.矩阵,它是一个实值479 × 479稀疏矩阵。

负载West0479.一个= west0479;

计算的LU分解一个通过调用有三个输出。生成L和U因素的间谍图。

[l,u,p] = lu(a);子图(1,2,1)间谍(L)标题('l factor')子图(1,2,2)间谍(U)标题(“U因子”

图中包含2个轴。标题为L因子的轴1包含一个类型为line的对象。标题为U因子的轴2包含一个类型为line的对象。

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

[l,u,p,q] = lu(a);子图(1,2,1)间谍(L)标题('l factor')子图(1,2,2)间谍(U)标题(“U因子”

图中包含2个轴。标题为L因子的轴1包含一个类型为line的对象。标题为U因子的轴2包含一个类型为line的对象。

输入参数

全部收缩

输入矩阵。一个可以是完整的,也可以是稀疏的,也可以是正方形或长方形的。

数据类型:单身的|
复数的支持:金宝app是的

稀疏矩阵输入。年代尺寸可以是正方形或长方形。

数据类型:
复数的支持:金宝app是的

稀疏矩阵的枢轴阈值,指定为标量或二元素向量。有效值在间隔内[0 1].你指定的方式取决于在调用中指定了多少输出

  • 三次或以下输出必须是标量,默认值是1.0

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

在较高的层次上,该输入使您能够在准确性和总执行时间之间做出权衡。较小的值往往会导致更稀疏的LU因素,但解决方案可能会变得不准确。较大的值可以得到更精确的解决方案(但并不总是如此),并且通常会增加总工作和内存使用量。

首先根据输出参数的数量选择一个枢轴策略,然后根据被分解的矩阵的属性选择枢轴策略。在所有情况下,将阈值设置为1.0导致部分枢转,同时将它们设置为0导致只根据结果矩阵的稀疏性选择枢轴。所有的值l的绝对值是1 /分钟(打)或更少。

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

    a(j,j)> =阈值* max(abs(a(j:m,j))))
    否则,它选择包含绝对值最大元素的行。

  • 对称枢转策略- 如果年代稀疏矩阵是否具有多数对称结构和多数非零对角线使用对称的旋转策略。对于这种策略,算法选择对角枢轴j如果满足不平等:

    A(i,j) >= thresh(2) * max(abs(A(j:m,j)))
    如果对角线条目没有通过测试,那么选择最稀疏的行满足不平等:
    A(i,j) >= thresh(1) * max(abs(A(j:m,j)))

  • 非对称旋转策略- 如果年代不满足对称旋转策略的要求,那么呢使用非对称策略。在这种情况下,选择最稀疏的行满足不平等:

    A(i,j) >= thresh(1) * max(abs(A(j:m,j)))
    的值1.0thresh(1)导致常规部分枢转。参赛作品l的绝对值是1 /打(1)或更少。第二个元素输入载体不与非对称策略一起使用。

请注意

在一些罕见的情况下,不正确的因分结果P * *L * U.如果出现这种情况,请增加最多1.0(常规部分枢转),然后再试一次。

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

作为矩阵,输出P满足这些身份:

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

  • 四个输出,P满足p * s * q = l * u

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

作为向量,输出P满足这些身份:

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

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

  • 五个输出,P, 和D满足d(:,p)\ s(:,q)= l * u

例子:[l,u,p] = lu(a,'矢量')

输出参数

全部收缩

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

  • 如果第三个输出P指定,然后l作为单位较低三角形矩阵返回(即,主对角线上具有1S的下三角矩阵)。

  • 如果第三个输出P没有指定,那么l作为单位较低三角矩阵的行排列返回。具体来说,它是产品p'* l产出Pl在三个输出案例中返回。

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

行排列,作为排列矩阵返回,如果'向量'选项,作为排列向量指定。使用此输出来提高计算的数值稳定性。

看到OutputForm.对该输出所满足的恒等式的描述。

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

看到OutputForm.对该输出所满足的恒等式的描述。

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

算法

LU因子分解是用一种高斯消去法计算的。精确解的计算依赖于原始矩阵的条件数的值气孔导度(A).如果矩阵有一个大的条件数(它几乎是奇异的),那么计算的分解可能是不准确的。

逻辑单元分解是求逆的关键步骤发票行列式依据.它也是用运营商获得的线性方程解决方案或矩阵划分的基础/.这就必然意味着也存在于这些相关函数中。

扩展功能

在R2006A之前介绍