算速度加快,节省磁盘空间,节省内存。MATLAB求解线性方程的过程基于三种分解法则:
(1)Cholesky分解,针对对称正定矩阵;
(2)LU分解,高斯消元法, 针对一般矩阵;
(3)QR分解,正交化, 针对一般长方形矩阵(行数≠列数) 这三种分解运算分别由chol, lu和 qr三个函数来分解. 1. Cholesky分解(Cholesky Decomposition)
仅适用于对称和上三角矩阵,如果A为对称正定矩阵,则Cholesky分解可将矩阵A分解为上三角矩阵和其转置的乘积, 即:A=R’*R, R为上三角阵。
方程A*X=b变成R’*R*X=b, 所以有 X=R\\(R’\\b) 例1:cholesky分解。 a=pascal(6) b=chol(a) a =
1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 b =
1 1 1 1 1 1 0 1 2 3 4 5 0 0 1 3 6 10 0 0 0 1 4 10 0 0 0 0 1 5
0 0 0 0 0 1 CHOL Cholesky factorization.
CHOL(X) uses only the diagonal and upper triangle of X. The lower
triangular is assumed to be the (complex conjugate) transpose of the upper.
If X is positive definite, then R = CHOL(X) produces an upper triangular R so that R'*R = X. If X is not positive definite, an error message is printed.
[R,p] = CHOL(X), with two output arguments, never produces an
error message. If X is positive definite, then p is 0 and R is the same as above. But if X is not positive definite, then p is a positive integer. When X is full, R is an upper triangular matrix of order q = p-1
so that R'*R = X(1:q,1:q). When X is sparse, R is an upper triangular matrix of size q-by-n so that the L-shaped region of the first q rows and first q columns of R'*R agree with those of X.
例2:对下列矩阵进行cholesky分解,并求解方程组的解。 16x1+4x2+8x3=28 4x1+5x2-4x3=5 8x1-4x2+22x3=26
A=[16 4 8;4 5 -4;8 -4 22]; b=[28 5 26]';
R=chol(A) %Cholesky分解
X=R\\(R'\\b) %根据R矩阵求解方程组的解 R =
4 1 2 0 2 -3 0 0 3 X = 1 1 1
2. LU分解(LU factorization).
用lu函数完成LU分解,将矩阵分解为上、下两个三角阵,其调用格式为:
[l,u]=lu(a) l代表下三角阵,u代表上三角阵。 例1: LU分解。
a=[47 24 22; 11 44 0;30 38 41] [l,u]=lu(a) a =
47 24 22 11 44 0 30 38 41 l =
1.0000 0 0 0.2340 1.0000 0 0.6383 0.5909 1.0000 u =
47.0000 24.0000 22.0000 0 38.3830 -5.1489 0 0 30.0000 LU LU factorization.
[L,U] = LU(X) stores an upper triangular matrix in U and a
\triangular and permutation matrices) in L, so that X = L*U. X can be rectangular.
[L,U,P] = LU(X) returns unit lower triangular matrix L, upper triangular matrix U, and permutation matrix P so that P*X = L*U. 3. QR分解(Orthogonal-triangular decomposition).
函数调用格式:[q,r]=qr(a), q代表正规正交矩阵,r代表三角形矩阵。原始阵a不必一定是方阵。如果矩阵a是m×n阶的,则矩阵q是m×m阶的,矩阵r是m×n阶的。 例1:QR分解.
A=[22 46 20 20; 30 36 46 44;39 8 45 2];
[q,r]=qr(A) q =
-0.4082 -0.7209 -0.5601 -0.5566 -0.2898 0.7786 -0.7236 0.6296 -0.2829 r =
-53.8981 -44.6027 -66.3289 -34.1014 0 -38.5564 0.5823 -25.9097 0 0 11.8800 22.4896 QR Orthogonal-triangular decomposition.
[Q,R] = QR(A) produces an upper triangular matrix R of the same dimension as A and a unitary matrix Q so that A = Q*R. [Q,R,E] = QR(A) produces a permutation matrix E, an upper
triangular R and a unitary Q so that A*E = Q*R. The column permutation E is chosen so that abs(diag(R)) is decreasing. [Q,R] = QR(A,0) produces the \
m-by-n with m > n, then only the first n columns of Q are computed.
4. 特征值与特征矢量(Eigenvalues and eigenvectors).
MATLAB中使用函数eig计算特征值和 特征矢量,有两种调用方法: *e=eig(a), 其中e是包含特征值的矢量; *[v,d]=eig(a), 其中v是一个与a相同的n×n阶矩阵,它的每一列是矩阵a的一个特征值所对应的特征矢量,d为对角阵,其对角元素即为矩阵a的特征值。
例1:计算特征值和特征矢量。
a=[34 25 15; 18 35 9; 41 21 9] e=eig(a) [v,d]=eig(a) a =
34 25 15
18 35 9 41 21 9 e =
68.5066 15.5122 -6.0187 v =
-0.6227 -0.4409 -0.3105 -0.4969 0.6786 -0.0717 -0.6044 -0.5875 0.9479 d =
68.5066 0 0 0 15.5122 0 0 0 -6.0187 EIG Eigenvalues and eigenvectors.
E = EIG(X) is a vector containing the eigenvalues of a square matrix X. [V,D] = EIG(X) produces a diagonal matrix D of eigenvalues and a full matrix V whose columns are the corresponding eigenvectors so that X*V = V*D.
[V,D] = EIG(X,'nobalance') performs the computation with balancing disabled, which sometimes gives more accurate results for certain problems with unusual scaling. If X is symmetric, EIG(X,'nobalance') is ignored since X is already balanced.
5. 奇异值分解.( Singular value decomposition).
如存在两个矢量u,v及一常数c,使得矩阵A满足:Av=cu, A’u=cv
称c为奇异值,称u,v为奇异矢量。
将奇异值写成对角方阵∑,而相对应的奇异矢量作为列矢量则可写成两个正交矩阵U,V, 使得: AV=U∑, A‘U=V∑ 因为U,V正交,所以可得奇异值表达式:
A=U∑V’。