logo资料库

MATLAB矩阵分解-MATLAB矩阵分解.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
MATLAB矩阵分解
MATLAB 矩阵分解 矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个 矩阵的乘积。常见的矩阵分解有 LU 分解(三角分解)、QR 分解(正 交变换)、Cholesky 分解,以及 Schur 分解、Hessenberg 分解、奇 异分解等。 (1) LU 分解(三角分解) 矩阵的 LU 分解就是将一个矩阵表示为一个交换下三角矩阵和一个上 三角矩阵的乘积形式。线性代数中已经证明,只要方阵 A 是非奇异(即 行列式不等于 0)的,LU 分解总是可以进行的。 MATLAB 提供的 lu 函数用于对矩阵进行 LU 分解,其调用格式为: [L,U]=lu(X):产生一个上三角阵 U 和一个变换形式的下三角阵 L(行 交换),使之满足 X=LU。注意,这里的矩阵 X 必须是方阵。 [L,U,P]=lu(X):产生一个上三角阵 U 和一个下三角阵 L 以及一个置 换矩阵 P,使之满足 PX=LU。当然矩阵 X 同样必须是方阵。 (设 P 是一个 m×n 的 (0,1) 矩阵,如 m≤n 且 P*P′=E,则称 P 为一个 m×n 的置换矩阵。) 实现 LU 分解后,线性方程组 Ax=b 的解 x=U(Lb)或 x=U(LPb),这样可 以大大提高运算速度。 例 7-2 用 LU 分解求解例 7-1 中的线性方程组。
命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; [L,U]=lu(A); x=U(Lb) 或采用 LU 分解的第 2 种格式,命令如下: [L,U ,P]=lu(A); x=U(LP*b) (2) QR 分解(正交变换) 对矩阵 X 进行 QR 分解,就是把 X 分解为一个正交矩阵 Q 和一个上三 角矩阵 R 的乘积形式。QR 分解只能对方阵进行。MATLAB 的函数 qr 可用于对矩阵进行 QR 分解,其调用格式为: [Q,R]=qr(X):产生一个一个正交矩阵 Q 和一个上三角矩阵 R,使之 满足 X=QR。 [Q,R,E]=qr(X):产生一个一个正交矩阵 Q、一个上三角矩阵 R 以及 一个置换矩阵 E,使之满足 XE=QR。 实现 QR 分解后,线性方程组 Ax=b 的解 x=R(Qb)或 x=E(R(Qb))。 例 7-3 用 QR 分解求解例 7-1 中的线性方程组。 命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; [Q,R]=qr(A); x=R(Qb) 或采用 QR 分解的第 2 种格式,命令如下: [Q,R,E]=qr(A); x=E*(R(Qb)) (3) Cholesky 分解 如果矩阵 X 是对称正定的,则 Cholesky 分解将矩阵 X 分解成一个下 三角矩阵和上三角矩阵的乘积。设上三角矩阵为 R,则下三角矩阵为 其转置,即 X=R'R。MATLAB 函数 chol(X)用于对矩阵 X 进行 Cholesky 分解,其调用格式为: R=chol(X):产生一个上三角阵 R,使 R'R=X。若 X 为非对称正定,则 输出一个出错信息。 [R,p]=chol(X):这个命令格式将不输出出错信息。当 X 为对称正定 的,则 p=0,R 与上述格式得到的结果相同;否则 p 为一个正整数。 如果 X 为满秩矩阵,则 R 为一个阶数为 q=p-1 的上三角阵,且满足 R'R=X(1:q,1:q)。
实现 Cholesky 分解后,线性方程组 Ax=b 变成 R‘Rx=b,所以 x=R(R’b)。 例 7-4 用 Cholesky 分解求解例 7-1 中的线性方程组。 命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; R=chol(A) ??? Error using ==> chol Matrix must be positive definite 命令执行时,出现错误信息,说明 A 为非正定矩阵。 (4) 任意方阵的 Schur 分解 任意一个 n 阶方阵 X 可以分解为 X=URU',其中 U 为酉矩阵,R 为上三 角 schur 矩阵且其主对角线上的元素为 X 的特征值。 酉矩阵的相关性质: 设有A,B矩阵 (1)若 A 是酉矩阵,则 A 的逆矩阵也是酉矩阵 (2)若 A,B 是酉矩阵,则 AB 也是酉矩阵 (3)若 A 是酉矩阵,则|detA|=1
(4)A 是酉矩阵的充分必要条件是,它的 n 个列向量是两两正交的单 位向量 [U,R]=schur(X) (5) 任意方阵的 Hessenberg 分解 任意一个 n 阶方阵 X 可以分解为 X=PHP', 其中 P 为酉矩阵, H 的第一 子对角线下的元素均为 0,即 H 为 Hessenberg 矩阵。 [P,H]=hess(X) (6) 任意方阵的特征值分解 EVD 任意一个 n 阶方阵 X 可以分解为 XV=VD,其中 D 为 X 的特征值对角阵, V 为 X 的特征向量矩阵。 [V,D]=eig(X) [V,D]=eig(X,Y)计算广义特征值矩阵 D 和广义特征值向量矩阵 V,使 得 XV=YVD。 (7)任意矩阵的奇异值分解 SVD 任意一个 m*n 维的矩阵 X 可以分解为 X=USV',U,V 均为酉矩阵,S 为 m*n 维的对角矩阵,其对角线元素为 X 的从大到小排序的非负奇异 值。U,V 为正交阵,S 为对角阵,svd(A)恰好返回 S 的对角元素,而 且就是 A 的奇异值(定义为:矩阵 A’*A 的特征值的算数平方根)
[U,S,V]=svd(X) (8) 任意矩阵的几何均值分解 GMD 任意矩阵 m*n 维的矩阵 X 可以分解为 X=QRP', Q,P 均为酉矩阵,R 为 k*k 维的实正线上三角矩阵,其主对角线元素均等于 X 的所有 K 个正奇异值的几何均值,k=rank(X)。 (PS: 一个 n × n 的实对称矩阵 M 是正定的当且仅当对于所有的非 零实系数向量 z,都有 zTMz > 0。其中 zT 表示 z 的转置。 对于复数的情况,定义则为:一个 n × n 的埃尔米特矩阵 M 是正定 的当且仅当对于每个非零的复向量 z,都有 z*Mz > 0。其中 z* 表示 z 的共轭转置。由于 M 是埃尔米特矩阵,经计算可知,对于任意的 复向量 z,z*Mz 必然是实数,从而可以与 0 比较大小。因此这个定义 是自洽的。正定方阵 M 的所有的特征值 λi 都是正的。)
分享到:
收藏