分解
求解线性系统的矩阵分解
描述
分解
创建可重用矩阵分解(LU, LDL, Cholesky, QR,和更多),使您能够解决线性系统(Ax = b或xA = b)更有效率。例如,计算后dA =分解(一)
调用dA \ b
返回相同的向量一个\ b
,但通常要快得多。分解
对象非常适合于解决需要重复解决的问题,因为系数矩阵的分解不需要多次执行。金宝搏官方网站
你可以使用分解
对象达
你可以在原来的系数矩阵上使用很多相同的运算符一个
:
复杂的共轭转置
达的
否定
- da
用标量乘或除
c *哒
或dA / c
.解一个线性方程组Ax = b使用
x = dA \ b
.解一个线性方程组xA = b使用
x = b /哒
.
创建
描述
的上或下三角形部分达
=分解(一个
,类型
,triangularFlag
)一个
是用来分解的。triangularFlag
可以“上”
或“低”
.使用此语法,分解类型必须为“低密度脂蛋白”
,“胆固醇”
,或“三角”
.
输入参数
一个
- - - - - -系数矩阵
矩阵
系数矩阵。系数矩阵在左侧线性方程组中表示为Ax = b或在右边作为xA = b.
数据类型:单
|双
复数的支持:金宝app是的
类型
- - - - - -分解类型
“汽车”
(默认)|“qr”
|“鳕鱼”
|“陆”
|“低密度脂蛋白”
|“胆固醇”
|“三角”
|“permutedTriangular”
|“联合”
|“hessenberg”
|“对角线”
分解类型,指定为这些表中的选项之一。
这些选项适用于任何系数矩阵。
价值 |
矩阵的分解 |
笔记 |
---|---|---|
|
N/A |
根据系数矩阵的性质自动选择矩阵分解类型。有关如何选择分解的信息,请参阅算法的部分 |
|
|
QR分解给出了一个最小二乘解。 如果 |
|
|
完全正交分解给出一个最小范数最小二乘解。 |
为广场系数矩阵,你也可以使用这些选项。
价值 |
矩阵的分解 |
笔记 |
---|---|---|
|
密度矩阵:
稀疏矩阵:
|
|
|
密度矩阵:
稀疏矩阵:
|
|
|
密度矩阵:
稀疏矩阵:
|
|
|
|
|
|
|
|
|
|
对于带宽较低的矩阵最有效。看到 |
|
|
|
|
|
|
triangularFlag
- - - - - -标志只使用系数矩阵的上或下三角部分
“上”
|“低”
标志仅使用系数矩阵的上或下三角部分,指定为其中之一“上”
或“低”
.此选项支持金宝app“三角”
,“胆固醇”
,“低密度脂蛋白”
分解类型。
“三角”
-如果上三角矩阵和下三角矩阵都存储在同一个矩阵中,则使用triangularFlag
只指定一个三角矩阵。“胆固醇”
而且“低密度脂蛋白”
——使用triangularFlag
为了避免使近似对称的系数矩阵对称。
名称-值对的观点
指定逗号分隔的可选对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
dA =分解(‘qr’,‘CheckCondition’,假)
的QR分解一个
当用系数矩阵来求解线性方程组时,它会关闭有关系数矩阵条件的警告。
一般参数
“CheckCondition”
- - - - - -切换到检查系数矩阵的条件
真正的
(默认)|假
切换到检查系数矩阵的条件,指定为逗号分隔的对,由“CheckCondition”
和逻辑1
(真正的
)或逻辑0
(假
).如果CheckCondition
是真正的
当系数矩阵条件差或秩低时,用mldivide (\)
或mrdivide (/)
产生警告。
数据类型:逻辑
“RankTolerance”
- - - - - -排名宽容
负的标量
等级公差,指定为非负标量。指定公差可以防止解受系数矩阵中随机噪声的影响。
分解
的秩一个
的对角线元素的个数R
QR分解的矩阵(Q, R, p) = qr (A, 0)
绝对值大于托尔
.如果一个
是k
的低阶近似一个
是由第一个乘以形成的吗k
列问
由第一个k
行R
.的低阶近似一个
.
请注意
此选项仅适用于以下情况“类型”
是“qr”
或“鳕鱼”
,或者当“类型”
是“汽车”
而且一个
是长方形的。否则,该选项将被忽略。
稀疏矩阵的参数
“BandDensity”
- - - - - -带密度阈值
0.5
(默认)|标量
频带密度阈值,指定为范围中的标量值[0 1]
.的价值“BandDensity”
确定要使用的带状解算器的稀疏带状系数矩阵必须有多密mldivide (\)
或mrdivide (/)
在解方程组时。如果系数矩阵的带密度大于指定的带密度,则使用带式求解器。
带密度定义为:(带中的#非零)/(带中的#元素)。的值1.0
指示永远不要使用条带求解器。
“LDLPivotTolerance”
- - - - - -LDL因子分解的枢轴耐受性
0.01
(默认)|标量
LDL分解的枢轴公差,指定为间隔中的标量值0.5 [0]
.使用较小的主轴公差值可以提供更快的分解时间和更少的条目,但也可能导致不太稳定的分解。
这个枢轴公差和低密度脂蛋白
用于真实稀疏矩阵。
“LUPivotTolerance”
- - - - - -LU分解的枢轴公差
(0.1 - 0.001)
(默认)|标量|向量
LU分解的枢轴公差,指定为标量或向量。指定一个标量值以更改公差向量中的第一个元素,或指定一个双元素向量以更改两个值。较小的枢轴公差往往导致更稀疏的LU因子,但解可能变得不准确。较大的值可以得到更精确的解决方案,但并不总是这样,而且通常会增加总工作和内存使用量。
这个枢轴公差和陆
用于稀疏矩阵。
属性
MatrixSize
- - - - - -系数矩阵大小
向量
此属性是只读的。
系数矩阵的大小,作为双元素行向量返回。
数据类型:双
类型
- - - - - -分解类型
“qr”
|“鳕鱼”
|“陆”
|“低密度脂蛋白”
|“胆固醇”
|“三角”
|“permutedTriangular”
|“联合”
|“hessenberg”
|“对角线”
此属性是只读的。
分解类型,返回为“qr”
,“鳕鱼”
,“陆”
,“低密度脂蛋白”
,“胆固醇”
,“三角”
,“permutedTriangular”
,“联合”
,“hessenberg”
,或“对角线”
.
数据类型:字符
CheckCondition
- - - - - -切换到检查系数矩阵的条件
真正的
(默认)|假
切换以检查系数矩阵的条件,指定为逻辑的或逻辑的1
(真正的
)或逻辑0
(假
).如果CheckCondition
是真正的
当系数矩阵条件差或秩低时,用mldivide (\)
或mrdivide (/)
产生警告。
数据类型:逻辑
数据类型
- - - - - -系数矩阵的数据类型
“双”
|“单一”
此属性是只读的。
系数矩阵的数据类型,返回任意一种“双”
或“单一”
.
数据类型:字符
IsConjugateTransposed
- - - - - -说明系数矩阵为复共轭转置
假
(默认)|真正的
此属性是只读的。
表示系数矩阵为复共轭转置,返回逻辑1
(真正的
)或逻辑0
(假
).这个指标是假
默认情况下,分解
由系数矩阵构造的对象。取值为真正的
如果您使用ctranspose
操作员在分解
对象,例如dA’\ b
.在这种情况下,达的
都是一样的分解
对象作为达
,但值为真正的
为IsConjugateTransposed
.
数据类型:逻辑
伊斯雷尔
- - - - - -说明系数矩阵为实数
真正的
|假
此属性是只读的。
表示系数矩阵是实数,返回为逻辑1
(真正的
)或逻辑0
(假
).的值假
表示系数矩阵包含复数。
数据类型:逻辑
IsSparse
- - - - - -说明系数矩阵是稀疏的
真正的
|假
此属性是只读的。
指示系数矩阵是稀疏的,以逻辑形式返回1
(真正的
)或逻辑0
(假
).
数据类型:逻辑
ScaleFactor
- - - - - -系数矩阵的乘尺度因子
1
(默认)|标量
此属性是只读的。
系数矩阵的乘比例因子,作为标量返回。的默认值。1
表示系数矩阵未缩放。然而,当你乘或除分解
的值ScaleFactor
的变化。例如,3 *哒
是一个分解
对象相当于达
,但值为3.
为ScaleFactor
.
数据类型:双
复数的支持:金宝app是的
对象的功能
可以使用的主要函数和运算符分解
对象与求解线性方程组有关。
ctranspose |
复杂的共轭转置 |
mldivide |
解x的线性方程组Ax = B |
mrdivide |
求解x的线性方程组xA = B |
isIllConditioned |
确定矩阵是否病态 |
的基础矩阵的条件号或秩分解
对象。由于采用了不同的算法,这些函数在分解
对象可以与直接在系数矩阵上使用相同的函数相比有所不同。
例子
求解有几个右边边的线性方程组
展示如何使用分解
对象可以提高求解效率
有很多右手边。
的逆迭代是一种迭代特征值算法,用于求解具有多个右侧的线性系统。它是从相应的特征向量的猜测开始迭代计算矩阵的特征值的一种方法。每次迭代计算x = x \
,然后缩放x
的规范。
创建一个稀疏矩阵一个
和随机的起始向量x1
而且x2
.
n = 1 e3;rng默认的%的再现性A = sprandn(n,n,0.2) + speye(n);x1 = randn (n, 1);x1, x2 =
应用100次迭代的反斜杠反迭代算法来计算的特征值一个
.
抽搐为ii=1:100 x1 = A \ x1;X1 = X1 /范数(X1);结束toc
运行时间为16.081457秒。
λ= x1‘* * x1
λ= -0.6707
现在使用一个分解
对象来解决同样的问题。
tic dA =分解(A);为ii=1:100 x2 = dA \ x2;X2 = X2 /范数(X2);结束toc
运行时间为1.225495秒。
λ= x2的* * x2
λ= -0.6707
由于矩阵的存在,算法的性能得到了显著提高一个
不需要在每次迭代期间分解。的LU分解可以改进反斜杠算法一个
之前为
循环,分解
对象使您可以访问所有相同的性能增益,而不需要编写复杂的代码。
选择分解类型
选择一个分解类型来覆盖基于输入矩阵的自动默认选择。
创建系数矩阵,并使用默认选择的分解类型分解矩阵。
一个= 1 (3);dA =分解(一)
MatrixSize: [3 3] Type: 'ldl'显示所有属性
用1的向量在右边解线性方程组。
b = 1 (3,1);x = dA \ b
警告:矩阵对工作精度是单一的。
x =3×1南南南
指定要使用的分解类型“qr”
方法,而不是默认值“低密度脂蛋白”
方法。这迫使反斜杠(\)寻找问题的最小二乘解,而不是返回向量南
年代。
dA_qr =分解(,“qr”)
MatrixSize: [3 3] Type: 'qr'显示所有属性
x = dA_qr \ b
警告:Rank不足,Rank = 1, tol = 1.153778e-15。
x =3×11.0000 0 0
利用矩阵的三角部分
指定“上”
在分解中只使用输入矩阵的上三角部分。
创建一个系数矩阵。只使用上三角形部分构造矩阵的三角分解。当上三角矩阵和下三角矩阵都存储在同一个矩阵中时,这个选项很有用。
A = randi([0 5],10)
一个=10×104 0 1 2 3 4 5 2 0 5 5 0 0 1 2 4 1 1 4 0 0 5 5 4 3 2 3 4 3 3 5 5 0 4 0 4 1 3 4 3 4 4 0 1 0 5 5 5 5 0 0 4 4 2 2 5 4 2 1 0 1 2 4 2 5 3 1 5 4 3 3 2 1 3 2 0 1 4 2 5 4 3 2 5 4 3 0 3 0 5 5 1 0 4 1 1 2 3 2
dA =分解(,“三角”,“上”)
MatrixSize: [10 10] Type: ' triangle '显示所有属性
关闭矩阵条件警告
使用“CheckCondition”
在求解线性方程组时,基于系数矩阵条件的名值对关闭警告分解
.
创建一个病态的系数矩阵。在这个矩阵中,把前两列加起来,就得到第三列。
A = [1 2 1.5;3 4 3.5;5 6 5.5)
一个=3×31.000 2.000 1.5000 3.0000 4.0000 3.5000 5.0000 6.0000 5.5000
解一个线性方程组
右边用向量1s表示。mldivide
产生关于系数矩阵条件的警告。
b = 1 (3,1);x = A \ b
警告:矩阵接近奇异或缩放严重。结果可能不准确。RCOND = 8.326673 e-18。
x =3×1-0.0556 1.9444 -1.8889
现在创建一个分解
对象求矩阵,求解相同的线性方程组。指定“CheckCondition”
作为假
这mldivide
不检查系数矩阵的条件。即使返回相同的解,mldivide
不显示警告消息。
dA =分解(,“CheckCondition”、假);x = dA \ b
x =3×1-0.0556 1.9444 -1.8889
使用isIllConditioned
命令,查询是否分解
对象是基于病态矩阵的。
tf = isIllConditioned (dA)
tf =逻辑1
扩展功能
分布式阵列
使用并行计算工具箱™跨集群的组合内存分区大型数组。
使用注意事项和限制:
如果
一个
是稀疏和类型是“陆”
,然后CheckCondition
一定是假的。如果
一个
是稀疏,那么类型呢“胆固醇”
而且“qr”
不受支持。金宝app如果
一个
稀疏是矩形的吗分解
不支持。金宝app排名
只支持分解金宝app类型“qr”
.rcond
不支持稀疏矩阵的分金宝app解和总是返回[]
.
有关更多信息,请参见运行MATLAB函数与分布式数组(并行计算工具箱)。
介绍了R2017b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。