陆
LU矩阵分解
语法
Y = lu(A)
[L,U] = lu(A)
[L,U,P] = lu(A)
[L,U,P,Q] = lu(A)
[L,U,P,Q,R] = lu(A)
[…= lu(A,'向量')
[…= lu(A,打谷子)
[…= lu(A,thresh,'vector')
描述
的陆
函数表示一个矩阵一个
作为两个本质上是三角形矩阵的乘积,其中一个是下三角矩阵的排列,另一个是上三角矩阵的排列。因式分解通常被称为陆,或有时LR,分解。一个
可以是矩形。
Y = lu(A)
收益矩阵Y
它包含严格意义上的下三角形l
,即没有其单位对角线,和上三角形U
子矩阵。也就是说,如果[L,U,P] = lu(A)
,然后Y = U+ l型眼(尺寸(A))
.排列矩阵P
不返回。
[L,U] = lu(A)
返回一个上三角矩阵U
和一个排列下三角矩阵l
这样A = l * u
.返回值l
是下三角矩阵和排列矩阵的乘积。
[L,U,P] = lu(A)
返回一个上三角矩阵U
,一个下三角矩阵l
用一个单位对角线,和一个排列矩阵P
,以致于L* u = p * a
.该声明陆(A,“矩阵”)
返回相同的输出值。
[L,U,P,Q] = lu(A)
对于稀疏非空一个
,返回一个单位下三角矩阵l
,一个上三角矩阵U
,行排列矩阵P
,和列重排矩阵问
,所以P* a * q = l * u
.如果一个
是空的还是不稀疏的,陆
显示错误消息。该声明陆(A,“矩阵”)
返回相同的输出值。
[L,U,P,Q,R] = lu(A)
返回单位下三角矩阵l
,上三角矩阵U
,排列矩阵P
和问
,和对角缩放矩阵R
如此......以至于......P*(r \ a)* q = l * u
对于稀疏非空一个
.通常情况下(但并非总是如此),行缩放会导致更稀疏且更稳定的分解。该声明陆(A,“矩阵”)
返回相同的输出值。
[…= lu(A,'向量')
返回两个行向量的排列信息p
和问
.您可以指定1到5个输出。输出p
定义为:一个(p) = L * U
、输出问
定义为(p, q) = L * U
,输出R
定义为R (: p) \ (:, q = L * U
.
[…= lu(A,打谷子)
控制旋转。此语法仅适用于稀疏矩阵。的打
Input是类型的一个或两个元素向量单
或双
默认为[0.1,0.001]。如果一个
是一个具有大部分对称结构和大部分非零对角线的方阵,MATLAB®使用对称的旋转策略。在这个策略中,对角线是
A(i,j) >= thresh(2) * max(abs(A(j:m,j))))
被选中。如果对角线项未通过此测试,则选择对角线以下的主元项,使用打(1)
.在这种情况下,l
有绝对值的项吗1 /分钟(打)
或更少。
如果A不是如上所述,MATLAB使用非对称策略。在这种情况下,是最稀疏的行我
在哪里
A(i,j) >= thresh(1) * max(abs(A(j:m,j))))
被选中。1.0的值会导致传统的部分旋转。条目l
的绝对值1 /打(1)
或更少。的第二个元素打
当MATLAB使用非对称策略时,不使用输入向量。
较小的值打(1)
和打(2)
往往会导致更稀疏的LU因子,但解会变得不准确。较大的值可以导致更准确的解决方案(但并不总是如此),并且通常会增加总工作和内存使用。该声明陆(打,“矩阵”)
返回相同的输出值。
[…= lu(A,thresh,'vector')
如前所述,控制旋转策略并返回行向量中的排列信息。的打
输入必须在前面“向量”
在输入参数列表中。
请注意在极少数情况下,不正确的因式分解会导致 |
参数
一个 |
待分解的矩形矩阵。 |
打 |
稀疏矩阵的枢轴阈值。有效值在区间内 |
l |
的因素 |
U |
上三角矩阵是一个因式 |
P |
满足方程的行排列矩阵 |
问 |
满足方程的列置换矩阵 |
R |
Row-scaling矩阵 |
例子
示例1
开始
A = [1 2 3 4 5 6 7 8 0];
要查看LU因式分解,调用陆
有两个输出参数。
[L1,U] = lu(A) L1 = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 00 U = 7.0000 8.0000 00 0.8571 3.0000 00 4.5000
请注意,L1
是一个下三角矩阵的排列:如果你切换第2行和第3行,然后切换第1行和第2行,得到的矩阵是下三角矩阵并且有1
S在对角线上。还要注意U
是上三角形。为了检验因式分解是否有效,计算乘积
L1 * U
它返回原始的一个
.这个矩阵的逆矩阵,X = inv(A)
,实际上是由三角因子的倒数计算出来的
X = inv(U)*inv(L1)
用左边的三个参数来得到排列矩阵,
[L2,U,P] = lu(A)
返回一个真正的下三角形L2
的值相同U
,和排列矩阵P
.
L2 = 1.0000 00 0.1429 1.0000 0 0.5714 0.5000 1.0000 u = 7.0000 8.0000 00 0.8571 3.0000 00 4.5000 p = 00 1 1 0000 1 0
请注意,L2 = p * l1
.
P*L1 ans = 1.0000 00 0.1429 1.0000 0 0.5714 0.5000 1.0000
为了验证L2 * U
是一个排列的版本一个
,计算L2 * U
然后减去P *
:
P*A - L2*U ans = 0 0 0 0 0 0 0 0 0 0 0
在这种情况下,发票(U) *发票(左)
的排列结果发票(一个)
给出的发票(P) *发票(A)
.
这个例子矩阵的行列式是
d = det(A) d = 27
它是由三角形的行列式计算出来的
d = det(L)*det(U)
解决方案一个x=b是用矩阵除法得到的吗
x = A\b
解实际上是通过求解两个三角方程组得到的
y = L\b x = U\y
示例2
其差值的1范数在舍入误差范围内,表明L* u = p * b * q
.
生成巴克敏斯特-富勒测地线穹顶连通性图的60 × 60稀疏邻接矩阵。
B =结实的;
使用带有四个输出的稀疏矩阵语法来获得行和列排列矩阵。
[L,U,P,Q] = lu(B);
将排列矩阵应用于B
,并减去下三角矩阵和上三角矩阵的乘积。
Z = p * b * q - l * u;norm(Z,1) ans = 7.9936e-015
示例3
属性的好处“向量”
选择。方法可以节省多少内存陆(F,“矢量”)
语法。
F = gallery('uniformdata',[1000 1000],0);g = sum(F,2);[L,U,P] = lu(F);[L,U,p] = lu(F,'矢量');whos P P名称大小字节类属性P 1000x1000 8000000 double P 1x1000 8000 double
下面两个表述是等价的。第一种通常需要更少的时间:
x = U\(L\(g(p,:)));y = U\(L\(P*g));
提示
大多数计算LU分解的算法都是高斯消去的变体。因式分解是求逆的关键步骤发票
这个行列式依据
.它也是线性方程解或矩阵除法的基础\
和/
.