本文主要是介绍33、matlab矩阵分解汇总:LU矩阵分解、Cholesky分解和QR分解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、LU矩阵分解
语法
语法1:[L,U] = lu(A) 将满矩阵或稀疏矩阵 A 分解为一个上三角矩阵 U 和一个经过置换的下三角矩阵 L,使得 A = L*U。
语法2:[L,U,P] = lu(A) 还返回一个置换矩阵 P,并满足 A = P'*L*U。
语法3:[L,U,P] = lu(A,outputForm) 以 outputForm 指定的格式返回 P。
1)矩阵的 LU 分解
代码及运算
A = [8 -7 0-4 0 65 -1 9];
[L,U] = lu(A)
L*UL =1.0000 0 0-0.5000 1.0000 00.6250 -0.9643 1.0000U =8.0000 -7.0000 00 -3.5000 6.00000 0 14.7857ans =8 -7 0-4 0 65 -1 9
代码及运算
[L,U,P] = lu(A)
P'*L*UL =1.0000 0 0-0.5000 1.0000 00.6250 -0.9643 1.0000U =8.0000 -7.0000 00 -3.5000 6.00000 0 14.7857P =1 0 00 1 00 0 1ans =8 -7 0-4 0 65 -1 9
2)用 LU 分解对线性系统求解
A = magic(5);
b = 65*ones(5,1);
x = A\b
[L,U,P] = lu(A)
y = L\(P*b);
x = U\y
dA = decomposition(A,'lu');
x = dA\bx =1.00001.00001.00001.00001.0000L =1.0000 0 0 0 00.7391 1.0000 0 0 00.4783 0.7687 1.0000 0 00.1739 0.2527 0.5164 1.0000 00.4348 0.4839 0.7231 0.9231 1.0000U =23.0000 5.0000 7.0000 14.0000 16.00000 20.3043 -4.1739 -2.3478 3.17390 0 24.8608 -2.8908 -1.09210 0 0 19.6512 18.97930 0 0 0 -22.2222P =0 1 0 0 01 0 0 0 00 0 0 0 10 0 1 0 00 0 0 1 0x =1.00001.00001.00001.00001.0000x =1.00001.00001.00001.00001.0000
2、Cholesky 分解:chol Cholesky 分解
语法
语法1:R = chol(A) 将对称正定矩阵 A 分解成满足 A = R'*R 的上三角 R。
语法2:R = chol(A,triangle) 指定在计算分解时使用 A 的哪个三角因子。
语法3:[R,flag] = chol(___) 还返回输出 flag,指示 A 是否为对称正定矩阵。
1)矩阵的 Cholesky 分解
代码及运算
A = gallery('lehmer',6);
R = chol(A)
norm(R'*R - A)
L = chol(A,'lower')
norm(L*L' - A)R =1.0000 0.5000 0.3333 0.2500 0.2000 0.16670 0.8660 0.5774 0.4330 0.3464 0.28870 0 0.7454 0.5590 0.4472 0.37270 0 0 0.6614 0.5292 0.44100 0 0 0 0.6000 0.50000 0 0 0 0 0.5528ans =2.3587e-16L =1.0000 0 0 0 0 00.5000 0.8660 0 0 0 00.3333 0.5774 0.7454 0 0 00.2500 0.4330 0.5590 0.6614 0 00.2000 0.3464 0.4472 0.5292 0.6000 00.1667 0.2887 0.3727 0.4410 0.5000 0.5528ans =2.3682e-16
2)用对称正定矩阵求解线性系统
代码及运算
A = [1 0 1; 0 2 0; 1 0 3]
R = chol(A)%计算矩阵的 Cholesky 因子
b = sum(A,2);
x = R\(R'\b)A =1 0 10 2 01 0 3R =1.0000 0 1.00000 1.4142 00 0 1.4142x =1.00001.00001.0000
3、QR分解: qr QR 分解
语法
语法1:R = qr(A) 返回 QR 分解 A = Q*R 的上三角 R 因子。
语法2:[Q,R] = qr(A) 对 m×n 矩阵 A 执行 QR 分解,满足 A = Q*R。
语法3:[Q,R,P] = qr(A) 还返回一个置换矩阵 P,满足 A*P = Q*R。
1)Q-Less QR 分解
代码及运算
A = magic(5);%5*5幻方矩阵
R = qr(A)R =-32.4808 -26.6311 -21.3973 -23.7063 -25.86150.4648 19.8943 12.3234 1.9439 4.08560.0808 -0.0496 -24.3985 -11.6316 -3.74150.2021 -0.0460 0.3950 -20.0982 -9.97390.2223 -0.1755 0.4959 -0.8587 -16.0005
2)矩阵的完整 QR 分解
代码及运算
A = magic(5);
[Q,R] = qr(A)
norm(A-Q*R)Q =-0.5234 0.5058 0.6735 -0.1215 -0.0441-0.7081 -0.6966 -0.0177 0.0815 -0.0800-0.1231 0.1367 -0.3558 -0.6307 -0.6646-0.3079 0.1911 -0.4122 -0.4247 0.7200-0.3387 0.4514 -0.4996 0.6328 -0.1774R =-32.4808 -26.6311 -21.3973 -23.7063 -25.86150 19.8943 12.3234 1.9439 4.08560 0 -24.3985 -11.6316 -3.74150 0 0 -20.0982 -9.97390 0 0 0 -16.0005ans =9.6765e-15
这篇关于33、matlab矩阵分解汇总:LU矩阵分解、Cholesky分解和QR分解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!