主要内容

胆固醇

柯列斯基分解

描述

例子

R=胆固醇(一个对称正定矩阵因式分解一个变成一个上三角形R满足A = r '* r.如果一个是不对称的吗胆固醇的对角线和上三角形,将矩阵视为对称的一个

例子

R=胆固醇(一个三角形指定哪个三角形因子一个用于计算因式分解。例如,如果三角形“低”,然后胆固醇只使用对角线和下三角形的部分一个得到一个下三角矩阵R满足A = r * r '.的默认值三角形“上”

例子

R国旗= chol(___也返回输出国旗指示是否一个对称正定.您可以使用以前语法中的任何输入参数组合。当您指定国旗输出,胆固醇如果输入矩阵不是对称正定的,则不产生错误。

  • 如果Flag = 0输入矩阵为对称正定,因式分解成功。

  • 如果国旗不为零,那么输入矩阵是对称正定和国旗是一个整数,指示分解失败的枢轴位置的索引。

例子

R国旗P= chol(年代另外返回一个排列矩阵P,这是一个稀疏矩阵的预序年代获得的amd.如果Flag = 0,然后年代对称是正定的和吗R上三角矩阵令人满意吗R'*R = p '* s * p

例子

R国旗P= chol(___outputForm指定是否返回排列信息P作为矩阵或向量,使用以前语法中的任何输入参数组合。此选项仅适用于稀疏矩阵输入。例如,如果outputForm“向量”而且Flag = 0,然后S(p,p) = R'*R.的默认值outputForm“矩阵”这样R'*R = p '* s * p

例子

全部折叠

使用胆固醇对对称系数矩阵进行因式分解,然后利用Cholesky因子求解线性系统。

创建一个对角线上为正的对称矩阵。

A = [1 0 1;0 2 0;10 0 3]
一个=3×31 0 1 0 2 0 1 0 3

计算矩阵的Cholesky因子。

R = chol(A)
R =3×31.0000 0 1.0000 0 1.4142 000 1.4142

为方程的右边创建一个向量 斧头 b

b = sum(A,2);

一个 R T R 通过Cholesky分解,线性方程变成 R T R x b .解出x使用反斜杠操作符。

x = R\(R'\b)
x =3×11.0000 1.0000 1.0000

计算一个矩阵的上、下Cholesky因式分解,并验证结果。

方法创建一个6 × 6对称正定检验矩阵画廊函数。

画廊(“黄土”6);

的上三角形计算Cholesky因子一个

R = chol(A)
R =6×61.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0 0.8660 0.5774 0.4330 0.3464 0.2887 00 0.7454 0.5590 0.4472 0.3727 000 0.6614 0.5292 0.4410 0000 0 0.6000 0.5000 0000 0000 0 0.5528

验证上三角因子满足R'*R - a = 0,在舍入误差范围内。

范数(R'*R - A)
Ans = 3.5928e-16

现在,指定“低”选项计算Cholesky因子使用的下三角形一个

L = chol(A,“低”
L =6×61.0000 0000 00 0.5000 0.8660 0000 0 0.3333 0.5774 0.7454 0000 0.2500 0.4330 0.5590 0.6614 00 0.2000 0.3464 0.4472 0.5292 0.6000 0 0.1667 0.2887 0.3727 0.4410 0.5000 0.5528

验证下三角因子满足L*L' - a = 0,在舍入误差范围内。

范数(L*L' - A)
Ans = 3.6338e-16

使用胆固醇当输入矩阵不是对称正定时,有两个输出来抑制误差。

创建一个5乘5的二项式系数矩阵。这个矩阵是对称正定的,所以从最后一个元素减去1,以确保它不再是正定的。

A = pascal(5);A(end) = A(end) - 1
一个=5×51 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 15 15 35 69

计算Cholesky因子一个.指定两个输出以避免产生错误一个不是对称正定的。

[R,flag] = chol(A)
R =4×41 1 1 1 1 2 3 0 0 1 3 0 0 0 0 1
Flag = 5

国旗为非零,它给出了因式分解失败的主索引。胆固醇能够计算Q = flag-1 = 4在遇到矩阵中发生变化的部分之前,行和列是正确的。

验证‘* R返回符合的四行和四列(1:问,1:问)

Q = flag-1;‘* R
ans =4×41 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20
(1:问,1:问)
ans =4×41 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20

计算一个稀疏矩阵的Cholesky因子,并使用排列输出来创建一个非零较少的Cholesky因子。

的基础上创建一个稀疏正定矩阵west0479矩阵。

负载west0479A = west0479;S = a '* a;

用两种不同的方法计算矩阵的Cholesky因子。首先指定两个输出,然后指定三个输出以启用行和列重新排序。

[R,flag] = chol(S);[RP,flagP,P] = chol(S);

对于每个计算,检查一下Flag = 0以确认计算成功。

如果~flag && ~flag disp(“分解成功。”其他的disp (“分解失败了。”结束
分解成功。

比较中非零的个数胆固醇(S)和重新排序的矩阵胆固醇(P“* * P).的三种输出语法是最佳实践胆固醇因为重新排列行和列可以大大减少Cholesky因子中非零的数量。

次要情节(1,2,1)间谍(R)标题('非零在chol(S)')次要情节(1,2,2)间谍(RP)标题('非零在chol(P " *S*P)'

图中包含2个轴对象。标题为nonzero in chol(S)的坐标轴对象1包含一个类型为line的对象。标题为nonzero in chol(P'*S*P)的Axes对象2包含一个类型为line的对象。

使用“向量”选择胆固醇以向量而不是矩阵的形式返回排列信息。

创建一个稀疏的有限元矩阵。

S =画廊(“wathen”10、10);间谍(S)

图中包含一个轴对象。axis对象包含一个line类型的对象。

计算矩阵的Cholesky因子,并指定“向量”选项返回一个排列向量p

[R,flag,p] = chol(S,“向量”);

验证Flag = 0,表示计算成功。

如果~国旗disp (“分解成功。”其他的disp (“分解失败了。”结束
分解成功。

验证S(p,p) = R'*R,在舍入误差范围内。

范数(S(p,p) - R'*R,“摇来摇去”
Ans = 2.1039e-13

输入参数

全部折叠

输入矩阵。论点一个可以使用全或稀疏存储,但必须是方形和对称正定。

胆固醇假设一个对于实矩阵是对称的,对于复矩阵是厄米对称的。胆固醇的上三角形或下三角形一个的值来执行其计算三角形

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

稀疏输入矩阵。年代必须是正方对称的。

胆固醇假设年代对于实矩阵是对称的,对于复矩阵是厄米对称的。胆固醇的上三角形或下三角形年代的值来执行其计算三角形

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

输入矩阵的三角因子,表示为“上”“低”.使用此选项指定胆固醇应使用输入矩阵的上三角形或下三角形来计算因式分解。胆固醇假设输入矩阵对于实矩阵是对称的,对于复矩阵是厄米的。胆固醇只使用上三角形或下三角形来执行计算。

使用“低”Option相当于调用胆固醇“上”选项和输入矩阵的转置,然后转置输出矩阵R

例子:R = chol(A,'lower')

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

  • 如果Flag = 0,然后年代对称是正定的和吗P'* s *P = r '* r(如果P是矩阵)还是S(p,p) = R'*R(如果p是一个向量)。

  • 如果国旗不是零吗年代不是对称正定的。R上三角矩阵的大小——- - - - - -n,在那里Q = flag-1.第一个的l型区域行和第一行‘* R同意…的观点P ' S * P(如果P是矩阵)还是S (p, p)(如果p是一个向量)。

  • 如果“低”选项,那么R下三角矩阵是否可以替换‘* R* R '在前面的恒等式中。

的Cholesky因子P ' S * P(如果P是矩阵)还是S (p, p)(如果p是一个向量)往往比的Cholesky因子更稀疏年代

例子:[R,flag,p] = chol(S,'vector')

输出参数

全部折叠

Cholesky因子,以矩阵形式返回。

  • 如果R是上三角形吗A = r '* r.如果您指定P然后是稀疏矩阵的输出P'* s *P = r '* rS(p,p) = R'*R的值outputForm

  • 如果R下三角形,那么A = r * r '.如果您指定P然后是稀疏矩阵的输出P'* s *P = r * r 'S(p,p) = R*R'的值outputForm..

  • 每当国旗不是零,R只包含部分结果。国旗指示分解失败的枢轴位置,和R包含部分完成的分解。

对称正定标志,作为标量返回。

  • 如果Flag = 0,则输入矩阵是对称正定的。R上三角矩阵是这样的吗R'*R = a

  • 如果一个那么不是对称正定的吗国旗是一个正整数,表示分解失败的枢轴位置,MATLAB®不生成错误。R上三角矩阵的大小Q = flag-1这样R'*R = A(1:q,1:q)

  • 如果一个那么是稀疏的R上三角矩阵的大小——- - - - - -n这样,l型区域的第一行和第一行‘* R同意…的观点一个年代

  • 如果“低”选项,那么R下三角矩阵是否可以替换‘* R* R '在前面的恒等式中。

的值作为矩阵或向量返回的稀疏矩阵的排列outputForm.看到outputForm获取此输出所满足的标识的描述。

该排列矩阵是基于近似最小度排序计算amd.然而,这种预排序可能与直接由amd胆固醇稍微改变排序以提高性能。

更多关于

全部折叠

对称正定矩阵

一个对称正定矩阵是一个具有正特征值的对称矩阵。

对于任何实可逆矩阵一个,可以用乘积构造一个对称正定矩阵B = a '* a.Cholesky因式分解颠倒了这个公式,说任何对称正定矩阵B能被考虑到产品中吗‘* R

一个对称正半定矩阵以类似的方式定义,除了特征值必须全部为正或零。

在数值计算中,正定矩阵和半正定矩阵之间的界限是模糊的。特征值完全等于零是很少见的,但它们可以在数值上为零(在机器精度的顺序上)。出于这个原因,胆固醇也许可以分解一个正半定矩阵,但是对于另一个具有非常相似特征值的矩阵可能会失败。

提示

扩展功能

R2006a之前介绍