关于对角矩阵极分解交换性及PU型极分解的疑问
关于对角矩阵极分解交换性及PU型极分解的疑问
嗨,我来帮你理清这些关于极分解的疑问~
1. 极分解其实有两种形式:UP和PU都存在
首先纠正一个认知:你说的两种形式都是合法的极分解,只是分右极分解和左极分解:
- 右极分解:任意矩阵A(实/复)都能写成
A = U P,其中U是酉矩阵(实矩阵对应正交矩阵),P是半正定Hermitian矩阵(实矩阵对应半正定对称矩阵)。这里的P是唯一的,等于(A^H A)^(1/2)(A^H是共轭转置,实矩阵就是普通转置);如果A可逆,U也是唯一的,等于A P^{-1}。 - 左极分解:A也能写成
A = P U,这里的P是半正定Hermitian矩阵(等于(A A^H)^(1/2)),U同样是酉矩阵,P唯一,可逆时U也唯一。
所以你一开始记错的PU形式是存在的,只是它是左极分解,而我们常说的标准极分解一般指右极分解(UP)。
2. 什么时候UP和PU相等?
你测试的矩阵里U@P和P@U相等,核心原因是U和P这两个矩阵可交换。针对对角矩阵的情况:
假设A是对角矩阵diag(d1, d2, ..., dn),它的右极分解里:
- P是
diag(|d1|, |d2|, ..., |dn|)(半正定对角矩阵) - U是
diag(d1/|d1|, d2/|d2|, ..., dn/|dn|)(酉/正交对角矩阵)
而对角矩阵之间的乘法天生是可交换的(两个对角矩阵相乘,结果还是对角矩阵,每个对角元是对应位置元素的乘积,顺序不影响结果),所以此时UP = PU。
不过要注意:不是所有矩阵的极分解都满足这个等式,只有当U和P可交换时才成立。比如非对称的可逆矩阵(比如A = [[1, 2], [0, 1]]),它的极分解里U和P就不可交换,此时UP≠PU。
另外你测试的那个三对角矩阵,它其实是实对称矩阵,实对称矩阵的极分解中,U和P都是对称矩阵,而且可以同时对角化,所以它们也能交换,这就是为什么你得到的A1和A2相等的原因。
3. 简单总结
- 极分解有两种形式:右分解
UP和左分解PU,都是合理的,只是对应的P分别由A^H A和A A^H的平方根得到。 - 对角矩阵的极分解中,U和P都是对角矩阵,必然可交换,所以
UP=PU;实对称矩阵(包括对角矩阵)的极分解也满足这个等式。 - 非对称且无法同时对角化的矩阵,极分解的U和P不可交换,此时
UP≠PU。
附上你提供的测试代码:
import numpy as np from scipy.linalg import polar A= np.array([[-2, 1, 0, 0], [1, -2, 1, 0], [0, 1, -2, 1], [0, 0, 1, -2]]) U, P = polar(A) print(U) print(P) A1 = U @ P print(A1) A2 = P @ U print(A2) are_equal = np.allclose(A1, A2) print("Are matrix equal:", are_equal)
备注:内容来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

