分解
矩阵分解求解线性系统
描述
分解
创建可重用的矩阵分解(LU,低密度脂蛋白,柯列斯基、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 /一个 |
自动选择矩阵分解类型的基于系数矩阵的性质。分解是如何选择的更多信息,请参阅算法的部分 |
|
|
QR分解最小二乘解。 如果 |
|
|
完整的正交分解给最低标准最小二乘解。 |
为广场系数矩阵,您还可以使用这些选项。
价值 |
矩阵的分解 |
笔记 |
---|---|---|
|
密度矩阵:
稀疏矩阵:
|
|
|
密度矩阵:
稀疏矩阵:
|
|
|
密度矩阵:
稀疏矩阵:
|
|
|
|
|
|
|
|
|
|
最有效的低带宽矩阵。看到 |
|
|
|
|
|
|
triangularFlag
- - - - - -国旗只使用上或下三角部分系数矩阵
“上”
|“低”
国旗只使用系数矩阵的上或下三角部分,指定为“上”
或“低”
。该选项支持金宝app“三角”
,“胆固醇”
,“低密度脂蛋白”
分解类型。
“三角”
——如果一个上、下三角矩阵存储在相同的矩阵,然后使用triangularFlag
指定唯一的三角矩阵。“胆固醇”
和“低密度脂蛋白”
——使用triangularFlag
为了避免使对称近对称系数矩阵。
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子: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 (/)
当解决一个方程组。如果乐队系数矩阵的密度大于指定的乐队密度,然后使用联合解算器。
乐队密度的定义是:在乐队(# 0)/(#乐队中的元素)。的值1.0
表示不使用联合解算器。
LDLPivotTolerance
- - - - - -主对LDL分解
0.01
(默认)|标量
主对LDL分解,指定为一个标量值的区间0.5 [0]
。用小的主值公差可以更快的分解时间和更少的条目,但也可能导致不稳定的因子分解。
这主宽容是相同的低密度脂蛋白
使用真实的稀疏矩阵。
LUPivotTolerance
- - - - - -主对LU分解
(0.1 - 0.001)
(默认)|标量|向量
主对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是的
对象的功能
主函数和运算符,您可以使用分解
对象是有关解决方程的线性系统。如果分解类型“qr”
,那么你不能解决一个“\ B
或B / A
。相反,使用“鳕鱼”
问题与形式。
ctranspose |
复杂的共轭转置 |
mldivide |
解线性方程组Ax = B为x |
mrdivide |
解线性方程组xA = B为x |
isIllConditioned |
判断矩阵是病态的 |
你也可以检查基础矩阵的条件数或等级分解
对象。因为不同的算法,使用这些函数的结果分解
对象可以使用相同的功能不同而直接在系数矩阵。
例子
解决线性系统和几个右手边
展示如何使用分解
对象可以提高求解的效率
与许多右手边。
的逆迭代是一个迭代的特征值的算法,解决了线性系统与许多右手边。它是一种迭代方法计算矩阵的特征值从一个猜出相应的特征向量。每次迭代计算x = x \
,然后天平x
的规范。
创建一个稀疏矩阵一个
开始和随机向量x1
和x2
。
n = 1 e3;rng默认的%的再现性一个= sprandn (n, n, 0.2) + speye (n);x1 = randn (n, 1);x1, x2 =
应用100次迭代使用反斜杠的逆迭代算法来计算的特征值一个
。
抽搐为2 = 1:10 0 x1 = \ x1;x1 = x1 /规范(x1);结束toc
运行时间是18.108925秒。
λ= x1‘* * x1
λ= -0.6707
现在使用一个分解
对象来解决相同的问题。
抽搐dA =分解(A);为2 = 1:10 0 x2 = dA \ x2;x2 = x2 /规范(x2);结束toc
运行时间是1.126502秒。
λ= x2的* * x2
λ= -0.6707
算法的性能大大改善,因为矩阵一个
不需要在每个迭代中映像。此外,即使反斜杠算法可以提高通过执行一个LU分解一个
之前为
循环,分解
对象提供访问所有相同的性能收益,而无需编写复杂的代码。
选择分解类型
选择一个分解类型覆盖自动默认选择基于输入矩阵。
创建一个系数矩阵分解和矩阵分解使用默认选择类型。
一个= 1 (3);dA =分解(一)
dA =分解与属性:MatrixSize:[3 3]类型:“陆”显示所有属性
解决线性系统使用一个向量的右边。
b = 1 (3,1);x = dA \ b
警告:矩阵是奇异的工作精度。
x =3×1南南南
指定分解类型使用“qr”
而不是默认的方法“低密度脂蛋白”
方法。这就迫使反斜杠(\)找到一个最小二乘解的问题,而不是返回一个向量的南
年代。
dA_qr =分解(,“qr”)
dA_qr =分解与属性:MatrixSize:[3 3]类型:“qr”显示所有属性
x = dA_qr \ b
警告:等级不足,排名= 1,tol = 1.153778 e15汽油。
x =3×11.0000 0 0
使用三角矩阵的一部分
指定“上”
只使用一个输入的上三角部分矩阵的分解。
创建一个系数矩阵。构造一个矩阵的三角分解只使用上三角部分。这个选项可能是有用的在这种情况下,一个上三角和下三角矩阵存储在相同的矩阵。
=兰迪([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 =分解(,“三角”,“上”)
dA =分解与属性:MatrixSize:[10 10]类型:“三角”显示所有属性
关掉矩阵条件警告
使用“CheckCondition”
名称-值对关闭警告基于系数矩阵的条件解决线性系统时使用分解
。
创建一个病态系数矩阵。在这个矩阵,平均在一起前两列产生第三列。
= (1 2 1.5;3 4 3.5;5 6 5.5)
一个=3×31.0000 2.0000 1.5000 3.0000 4.0000 3.5000 5.0000 6.0000 5.5000
解决线性系统
使用向量1 s的右边。mldivide
生产的调节系数矩阵的一个警告。
b = 1 (3,1);x = A \ b
警告:矩阵是奇异的工作精度。
x =3×1南正无穷
现在创建一个分解
对象的矩阵和解决相同的线性系统。指定“CheckCondition”
作为假
这mldivide
不检查系数矩阵的条件。尽管返回相同的解决方案,mldivide
不显示警告消息。
dA =分解(,“CheckCondition”、假);x = dA \ b
x =3×1南正无穷
使用isIllConditioned
函数检查是否分解
对象是基于一个坏脾气的矩阵。
tf = isIllConditioned (dA)
tf =逻辑1
引用
[1]戴维斯,蒂莫西·a .”算法930:因式分解:面向对象的线性系统MATLAB解决。”ACM交易的数学软件39岁的没有。4(2013年7月):队。https://doi.org/10.1145/2491491.2491498。
扩展功能
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
分布式阵列
分区大数组在内存使用并行计算集群的工具箱相结合™。
使用笔记和限制:
如果
一个
密集,值吗“低密度脂蛋白”
,“鳕鱼”
,“hessenberg”
都不支持金宝app类型
。如果
一个
是稀疏的,那么价值观“胆固醇”
,“鳕鱼”
,“hessenberg”
都不支持金宝app类型
。如果
一个
是稀疏的,类型
是“陆”
,然后CheckCondition
必须是假的,因为rcond
无法确定互惠条件。如果
一个
是稀疏的,rcond(分解(“陆”,“CheckCondition”,假))
,MATLAB®返回[]
。
有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱)。
版本历史
介绍了R2017b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。