分解

求解线性系统矩阵分解

描述

分解可重复使用的创建矩阵分解(LU,LDL,乔列斯基,QR,等等),使你求解线性系统(Ax = b的要么XA = B) 更有效率。例如,在计算DA =分解(A)通话轻拍返回向量作为相同A \ B,但通常要快得多。分解对象都能很好地适合于解决了需要反复的解决方案,因为不需要系数矩阵的分解不被执行多次。万博 尤文图斯

您可以使用分解目的DA有许多相同的运营商可能会在原始系数矩阵使用一个

  • 共轭复数DA”

  • 否定-dA

  • 乘法或使用由一个标量分C * DA要么DA / C

  • 求解线性系统Ax = b的运用X = DA \ b

  • 求解线性系统XA = B运用X = B / DA

创建

描述

DA=分解(一个返回矩阵的分解一个你可以用它来更有效地解决线性系统。分解型是基于所述输入矩阵的性质自动选择。

DA=分解(一个类型指定分解的类型以执行。类型'QR'“鳕鱼”'鲁'“低密度脂蛋白”“哲”“三角”'permutedTriangular'“带状”'hessenberg', 要么'对角线'

DA=分解(一个类型triangularFlag指定仅上部或下部的三角形部分一个是在分解中使用。triangularFlag'上'要么'降低'。有了这个语法,分解类型必须是“低密度脂蛋白”“哲”, 要么“三角”

DA=分解(___名称,值使用一个或多个指定的附加选项名称,值使用任何以前的语法对参数。例如,DA =分解(A, '校验条件',假)不指定基于的条件抛出一个警告一个而解决轻拍

输入参数

展开全部

系数矩阵。系数矩阵中出现的线性方程系统在左侧为Ax = b的或如右图XA = B

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

分解型,指定为在这些表中的选项之一。

这些选项工作任何系数矩阵。

的矩阵分解一个

笔记

'汽车'(默认)

N / A

自动选择基于所述系数矩阵的性质的矩阵分解型的。有关分解是如何选择的信息,请参阅算法mldivide

'QR'

一个 P = Q [R

Q单一,[R是上三角,和P是置换矩阵。

QR分解给出最小二乘解。

如果类型'QR',那么你可以不解决A'\乙要么B / A。取而代之的是,使用“鳕鱼”对于这些形式的问题。

“鳕鱼”

一个 = Q [R ž *

[R是上三角,并且两个Qž具有正交列。

完全正交分解给一个最小范数最小二乘解。

对于广场系数矩阵,你也可以使用这些选项。

的矩阵分解一个

笔记

'鲁'

密集矩阵:

P 一个 = 大号 ü

大号是下三角,ü是上三角,和P是置换矩阵。

稀疏矩阵:

P [R \ 一个 Q = 大号 ü

PQ是置换矩阵,而[R是对角缩放矩阵。

“低密度脂蛋白”

密集矩阵:

P * 一个 P = 大号 d 大号 *

大号是用ls下三角矩阵的对角,d是对角矩阵,并P是置换矩阵。

稀疏矩阵:

P * 小号 一个 小号 P = 大号 d 大号 *

小号是缩放矩阵。

一个必须是对称的。

“哲”

密集矩阵:

一个 = 大号 大号 *

大号是下三角。

稀疏矩阵:

一个 = P 大号 大号 * P *

P是置换矩阵。

一个必须是对称正定。

“三角”

一个 = Ť

Ť是三角形。

一个必须是三角形的。

'permutedTriangular'

一个 = P Ť Q *

Ť是三角形的,并且两个PQ是置换矩阵。

一个必须是一个三角矩阵的排列。

“带状”

一个 = P * 大号 ü

P是置换矩阵和两个大号ü是带状的。

最有效的与低带宽矩阵。看到带宽想要查询更多的信息。

'hessenberg'

一个 = P * 大号 ü

P是置换矩阵,大号是带状,并ü是上三角。

一个必须第一次对角低于零。

'对角线'

一个 = d

d是对角线。

一个必须是对角。

标志仅使用上部或降低系数矩阵的三角形部分,指定为'上'要么'降低'。此选项支持万博1manbetx“三角”“哲”“低密度脂蛋白”分解类型。

  • “三角”- 如果两个上和下三角矩阵被存储在相同的矩阵,则使用triangularFlag仅指定三角矩阵中的一个。

  • “哲”“低密度脂蛋白”- 用triangularFlag避免对称化一几乎对称的系数矩阵。

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:DA =分解(A, 'QR', '校验条件',假)执行的QR分解一个并且当它被用来关闭关于系数矩阵的条件警告求解线性系统。

常规参数

展开全部

肘节以检查系数矩阵的情况下,指定为逗号分隔的一对组成的“校验条件”而无论是逻辑1真正)或逻辑0)。如果校验条件真正和系数矩阵被严重空调或低等级的,则线性系统求解使用mldivide(\)要么mrdivide(/)产生警告。

数据类型:合乎逻辑

排名容忍,指定为非标。指定容差可以帮助防止溶液从易受在系数矩阵的随机噪声。

分解计算的排名一个作为对角元素的数量[RQR分解的矩阵[Q,R,P] = QR(A,0)与绝对值大于TOL。如果军衔一个ķ,然后一个的低秩近似一个通过乘以第一形成ķQ由第一ķ[R。更改公差影响的这种低等级近似一个

注意

此选项仅适用于当'类型''QR'要么“鳕鱼”或当'类型''汽车'一个为矩形。否则,此选项将被忽略。

稀疏矩阵参数

展开全部

带密度阈值,指定为在范围内的标量值[0 1]。的价值'BandDensity'确定如何密稀疏,带状系数矩阵必须是解算器带状通过使用mldivide(\)要么mrdivide(/)求解方程系统时。如果系数矩阵的带密度大于指定带密度越大,则使用带状解算器。

带密度定义为:(#非零元素在频带)/(在频带#元件)。的价值1.0表示从不使用带状求解。

枢轴容忍LDL分解,指定为在区间的标量值[0 0.5]。使用旋转公差的较小值可以给分解速度更快的时间和更少的条目,但也可能导致不太稳定的分解。

这个支点宽容是相同的是LDL用途实稀疏矩阵。

枢轴容忍LU分解,指定为标量或矢量。指定一个标量值以改变公差向量的第一个元素,或指定一个两元素矢量来改变这两个值。较小的枢轴公差倾向于导致稀疏LU因素,但该解决方案可以变得不准确。较大的值会导致更准确的解决方案,但并非总是如此,通常增加总的工作和内存使用情况。

这个支点宽容是相同的是用途稀疏矩阵。

属性

展开全部

此属性是只读的。

系数矩阵的大小时,返回作为两元件行向量。

数据类型:

此属性是只读的。

分解式,返回'QR'“鳕鱼”'鲁'“低密度脂蛋白”“哲”“三角”'permutedTriangular'“带状”'hessenberg', 要么'对角线'

数据类型:烧焦

肘节以检查系数矩阵的情况下,指定为逻辑1真正)或逻辑0)。如果校验条件真正和系数矩阵被严重空调或低等级的,则线性系统求解使用mldivide(\)要么mrdivide(/)产生警告。

数据类型:合乎逻辑

此属性是只读的。

系数矩阵的数据类型,或者返回'双'要么'单'

数据类型:烧焦

此属性是只读的。

指示器系数矩阵的复共轭转置,返回为任一逻辑1真正)或逻辑0)。该指标是默认情况下,任何分解对象从系数矩阵构成。然而,该值真正如果您使用ctranspose操作上分解对象中的表达,如轻拍。在这种情况下,DA”是一样的分解对象DA,但值真正对于IsConjugateTransposed

数据类型:合乎逻辑

此属性是只读的。

指示器系数矩阵是真实的,返回作为任一逻辑1真正)或逻辑0)。的价值表示该系数矩阵包含复数。

数据类型:合乎逻辑

此属性是只读的。

指示器系数矩阵是稀疏矩阵,返回作为任一逻辑1真正)或逻辑0)。

数据类型:合乎逻辑

此属性是只读的。

乘法比例因子系数矩阵,返回作为标量。默认值1表示该系数矩阵不进行缩放。然而,当你乘,或将分解由标量的对象,的值比例因子变化。例如,3 * DA分解对象相当于DA,但值3对于比例因子

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

对象函数

主要功能和运营商,您可以用使用分解对象与求解方程的线性系统。如果分解类型'QR',那么你可以不解决A'\乙要么B / A。取而代之的是,使用“鳕鱼”对于这些形式的问题。

ctranspose 共轭复数
mldivide 求解线性方程组的系统Ax = b的对于X
mrdivide 求解线性方程组的系统XA = B对于X
isIllConditioned 判断矩阵是否是病态的

您还可以检查的基本矩阵的条件数或秩分解对象。由于不同的算法被采用,使用关于这些功能的结果分解比直接使用在系数矩阵相同功能的对象可以是不同的。

  • 仅1输入表格秩(DA)被支持万博1manbetx。

  • 分解类型必须是'QR'要么“鳕鱼”

  • 排名的价值取决于选择RankTolerance如果指定。

rcond
  • 运行在相同的条件下检查反斜杠\用途来确定是否发出警告。

  • 万博1manbetx除了支持所有类型分解'QR'“鳕鱼”

例子

全部收缩

说明如何使用分解对象可以提高解决效率 斧头 = b 与许多右手边。

逆迭代是一个迭代算法特征值,解决了线性系统与许多右手边。它是这样一种方法来迭代地计算从相应特征向量的猜测开始矩阵的特征值。每次迭代单位计算X = A \ X,然后秤X它的规范。

创建一个稀疏矩阵一个和随机起始矢量X1X2

N = 1E3;RNG默认%,持续重现A = sprandn(N,N,0.2)+ speye(N);X1 = randn(N,1);X2 = X1;

使用反斜杠计算的特征值应用逆迭代算法的100次迭代一个

抽搐对于II = 1:100 X1 = A \ X1;X1 = X1 /范数(X1);结束TOC
经过时间是18.987628秒。
拉姆达= X1' * A * X1
拉姆达= -0.6707

现在使用分解目的在于解决同样的问题。

抽动DA =分解(A);对于II = 1:100×2 = DA \ X2;X2 = X2 /范数(2次);结束TOC
经过时间是1.176988秒。
拉姆达= X2' * A * X2
拉姆达= -0.6707

该算法的性能显着提高,因为矩阵一个并不需要每次迭代过程中被因式分解。另外,即使反斜杠算法可以通过执行的LU分解改进一个之前对于-loop中,分解对象可以访问所有相同的性能提升,而无需您编写复杂的代码。

选择一个分解型覆盖基于所述输入矩阵的自动默认选择。

创建一个系数矩阵,并使用分解型的默认选择分解矩阵。

A =酮(3);DA =分解(A)
DA =具有属性分解:MatrixSize:[3 3]类型: 'LDL' 显示所有属性

解决使用那些对右手侧的向量的线性系统。

B =酮(3,1);X = DA \ b
警告:矩阵是奇异的,以加工精度。
X =3×1楠楠的NaN

指定要使用的分解型'QR'方法,而不是默认“低密度脂蛋白”方法。这迫使反斜线(\)找到最小二乘问题的解决,而不是返回的载体为NaN秒。

dA_qr =分解(A,'QR'
dA_qr =具有属性分解:MatrixSize:[3 3]类型: 'QR' 显示所有属性
X = dA_qr \ b
警告:秩亏,秩= 1,TOL = 1.153778e-15。
X =3×11.0000 0 0

指定'上'在分解只使用输入矩阵的上三角部分。

创建一个系数矩阵。构造为仅使用上三角部分中的矩阵的三角分解。该选项可以在其中两个上三角和下三角矩阵被存储在相同的基质的情况下是有用的。

A =兰迪([0 5],10)
A =10×104 0 3 4 2 1 4 5 2 0 5 5 0 0 2 4 1 1 4 0 0 5 5 1 4 3 3 4 3 3 5 2 5 0 4 0 4 1 3 4 3 4 4 0 1 0 5 5 5 50 0 4 4 2 2 5 2 1 0 1 2 4 4 2 5 3 1 4 3 3 5 2 1 3 2 0 1 4 2 5 4 3 5 4 3 0 3 2 0 5 5 1 0 4 1 1 2 3 2
DA =分解(A,“三角”'上'
DA =具有属性分解:MatrixSize:[10 10]类型: '三角' 显示所有属性

使用“校验条件”基于该系数矩阵的条件使用求解线性系统时,名称 - 值对来关闭警告分解

创建一个系数矩阵是病态的。在该矩阵中,前两列一起求平均产生第三列。

A = [1 2 1.5;3 4 3.5;5 6 5.5]
A =3×31.0000 2.0000 1.5000 3.0000 4.0000 3.5000 5.0000 6.0000 5.5000

求解线性系统 斧头 = b 使用1秒的右手侧的一个矢量。mldivide产生关于系数矩阵的条件的警告。

B =酮(3,1);X = A \ B
警告:矩阵接近奇异或严重缩放。结果可能是不准确的。RCOND = 8.326673e-18。
X =3×1-0.0556 1.9444 -1.8889

现在创建一个分解对象的矩阵,解决了相同的线性系统。指定“校验条件”以便mldivide不检查系数矩阵的条件。即使返回相同的解决方案,mldivide不显示警告消息。

DA =分解(A,“校验条件”,假);X = DA \ b
X =3×1-0.0556 1.9444 -1.8889

使用isIllConditioned功能检查是否分解目的是基于一个病态矩阵。

TF = isIllConditioned(DA)
TF =合乎逻辑1

扩展功能

也可以看看

||

介绍了在R2017b