本文主要是介绍矩阵转置的基本性质,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
矩阵转置的基本性质
flyfish
- 标量的转置:标量(即单个数字)的转置是其自身。
- 向量的转置:列向量的转置是行向量,行向量的转置是列向量。
- 矩阵的转置:一个 m × n m \times n m×n 矩阵 A \mathbf{A} A 的转置是一个 n × m n \times m n×m 矩阵 A T \mathbf{A}^T AT,其中 A T \mathbf{A}^T AT 的第 i i i 行第 j j j 列的元素等于 A \mathbf{A} A 的第 j j j 行第 i i i 列的元素。
向量和矩阵乘积的转置
对于两个矩阵 A \mathbf{A} A 和 B \mathbf{B} B,其乘积的转置满足以下性质:
( A B ) T = B T A T (\mathbf{A} \mathbf{B})^T = \mathbf{B}^T \mathbf{A}^T (AB)T=BTAT
这意味着矩阵乘积的转置等于将每个矩阵分别转置后交换顺序再进行乘积。这是矩阵转置的一个基本性质。
应用到具体问题
在我们的具体问题中, X \mathbf{X} X 是一个 n × p n \times p n×p 矩阵, β \beta β 是一个 p × 1 p \times 1 p×1 向量。因此, X β \mathbf{X} \beta Xβ 是一个 n × 1 n \times 1 n×1 向量。
我们需要计算 ( X β ) T (\mathbf{X} \beta)^T (Xβ)T:
( X β ) T (\mathbf{X} \beta)^T (Xβ)T
根据矩阵转置的性质,矩阵乘积的转置等于将每个矩阵分别转置后交换顺序再进行乘积:
( X β ) T = β T X T (\mathbf{X} \beta)^T = \beta^T \mathbf{X}^T (Xβ)T=βTXT
这里 X β \mathbf{X} \beta Xβ 是一个 n × 1 n \times 1 n×1 的向量,因此其转置是一个 1 × n 1 \times n 1×n 的向量。而 β \beta β 是一个 p × 1 p \times 1 p×1 的向量,其转置 β T \beta^T βT 是一个 1 × p 1 \times p 1×p 的行向量。类似地, X \mathbf{X} X 是一个 n × p n \times p n×p 的矩阵,其转置 X T \mathbf{X}^T XT 是一个 p × n p \times n p×n 的矩阵。因此, β T X T \beta^T \mathbf{X}^T βTXT 是一个 1 × n 1 \times n 1×n 的行向量。
具体例子
为了更好地理解这个性质,我们可以看一个具体的例子:
假设 X \mathbf{X} X 是一个 2 × 3 2 \times 3 2×3 的矩阵, β \beta β 是一个 3 × 1 3 \times 1 3×1 的向量:
X = ( a 11 a 12 a 13 a 21 a 22 a 23 ) , β = ( b 1 b 2 b 3 ) \mathbf{X} = \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{pmatrix}, \quad \beta = \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} X=(a11a21a12a22a13a23),β= b1b2b3
则 X β \mathbf{X} \beta Xβ 是:
X β = ( a 11 a 12 a 13 a 21 a 22 a 23 ) ( b 1 b 2 b 3 ) = ( a 11 b 1 + a 12 b 2 + a 13 b 3 a 21 b 1 + a 22 b 2 + a 23 b 3 ) \mathbf{X} \beta = \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{pmatrix} \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} = \begin{pmatrix} a_{11}b_1 + a_{12}b_2 + a_{13}b_3 \\ a_{21}b_1 + a_{22}b_2 + a_{23}b_3 \end{pmatrix} Xβ=(a11a21a12a22a13a23) b1b2b3 =(a11b1+a12b2+a13b3a21b1+a22b2+a23b3)
然后 ( X β ) T (\mathbf{X} \beta)^T (Xβ)T 是:
( X β ) T = ( a 11 b 1 + a 12 b 2 + a 13 b 3 a 21 b 1 + a 22 b 2 + a 23 b 3 ) (\mathbf{X} \beta)^T = \begin{pmatrix} a_{11}b_1 + a_{12}b_2 + a_{13}b_3 & a_{21}b_1 + a_{22}b_2 + a_{23}b_3 \end{pmatrix} (Xβ)T=(a11b1+a12b2+a13b3a21b1+a22b2+a23b3)
而 β T X T \beta^T \mathbf{X}^T βTXT 是:
X T = ( a 11 a 21 a 12 a 22 a 13 a 23 ) , β T = ( b 1 b 2 b 3 ) \mathbf{X}^T = \begin{pmatrix} a_{11} & a_{21} \\ a_{12} & a_{22} \\ a_{13} & a_{23} \end{pmatrix}, \quad \beta^T = \begin{pmatrix} b_1 & b_2 & b_3 \end{pmatrix} XT= a11a12a13a21a22a23 ,βT=(b1b2b3)
β T X T = ( b 1 b 2 b 3 ) ( a 11 a 21 a 12 a 22 a 13 a 23 ) = ( b 1 a 11 + b 2 a 12 + b 3 a 13 b 1 a 21 + b 2 a 22 + b 3 a 23 ) \beta^T \mathbf{X}^T = \begin{pmatrix} b_1 & b_2 & b_3 \end{pmatrix} \begin{pmatrix} a_{11} & a_{21} \\ a_{12} & a_{22} \\ a_{13} & a_{23} \end{pmatrix} = \begin{pmatrix} b_1a_{11} + b_2a_{12} + b_3a_{13} & b_1a_{21} + b_2a_{22} + b_3a_{23} \end{pmatrix} βTXT=(b1b2b3) a11a12a13a21a22a23 =(b1a11+b2a12+b3a13b1a21+b2a22+b3a23)
我们可以看到 ( X β ) T (\mathbf{X} \beta)^T (Xβ)T 和 β T X T \beta^T \mathbf{X}^T βTXT 是相等的,这验证了上面的矩阵转置性质。
数值例子
考虑一个 2 × 3 2 \times 3 2×3 的矩阵 X \mathbf{X} X 和一个 3 × 1 3 \times 1 3×1 的向量 β \beta β:
X = ( 1 2 3 4 5 6 ) , β = ( 7 8 9 ) \mathbf{X} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}, \quad \beta = \begin{pmatrix} 7 \\ 8 \\ 9 \end{pmatrix} X=(142536),β= 789
我们将计算 ( X β ) T (\mathbf{X} \beta)^T (Xβ)T 和 β T X T \beta^T \mathbf{X}^T βTXT,并验证它们相等。
首先,计算 X β \mathbf{X} \beta Xβ:
X β = ( 1 2 3 4 5 6 ) ( 7 8 9 ) = ( 1 ⋅ 7 + 2 ⋅ 8 + 3 ⋅ 9 4 ⋅ 7 + 5 ⋅ 8 + 6 ⋅ 9 ) = ( 50 122 ) \mathbf{X} \beta = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} \begin{pmatrix} 7 \\ 8 \\ 9 \end{pmatrix} = \begin{pmatrix} 1 \cdot 7 + 2 \cdot 8 + 3 \cdot 9 \\ 4 \cdot 7 + 5 \cdot 8 + 6 \cdot 9 \end{pmatrix} = \begin{pmatrix} 50 \\ 122 \end{pmatrix} Xβ=(142536) 789 =(1⋅7+2⋅8+3⋅94⋅7+5⋅8+6⋅9)=(50122)
然后,计算 ( X β ) T (\mathbf{X} \beta)^T (Xβ)T:
( X β ) T = ( 50 122 ) (\mathbf{X} \beta)^T = \begin{pmatrix} 50 & 122 \end{pmatrix} (Xβ)T=(50122)
接下来,计算 β T X T \beta^T \mathbf{X}^T βTXT:
X T = ( 1 4 2 5 3 6 ) \mathbf{X}^T = \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix} XT= 123456
β T = ( 7 8 9 ) \beta^T = \begin{pmatrix} 7 & 8 & 9 \end{pmatrix} βT=(789)
β T X T = ( 7 8 9 ) ( 1 4 2 5 3 6 ) = ( 7 ⋅ 1 + 8 ⋅ 2 + 9 ⋅ 3 7 ⋅ 4 + 8 ⋅ 5 + 9 ⋅ 6 ) = ( 50 122 ) \beta^T \mathbf{X}^T = \begin{pmatrix} 7 & 8 & 9 \end{pmatrix} \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix} = \begin{pmatrix} 7 \cdot 1 + 8 \cdot 2 + 9 \cdot 3 & 7 \cdot 4 + 8 \cdot 5 + 9 \cdot 6 \end{pmatrix} = \begin{pmatrix} 50 & 122 \end{pmatrix} βTXT=(789) 123456 =(7⋅1+8⋅2+9⋅37⋅4+8⋅5+9⋅6)=(50122)
我们可以看到, ( X β ) T (\mathbf{X} \beta)^T (Xβ)T 和 β T X T \beta^T \mathbf{X}^T βTXT 是相等的。
用Python验证
import numpy as np# 定义矩阵和向量
X = np.array([[1, 2, 3], [4, 5, 6]])
beta = np.array([[7], [8], [9]])# 计算 X beta
X_beta = np.dot(X, beta)# 计算 (X beta)^T
X_beta_T = X_beta.T# 计算 X^T
X_T = X.T# 计算 beta^T X^T
beta_T_X_T = np.dot(beta.T, X_T)# 打印结果
print("X beta:\n", X_beta)
print("(X beta)^T:\n", X_beta_T)
print("beta^T X^T:\n", beta_T_X_T)# 验证 (X beta)^T 和 beta^T X^T 是否相等
print("Are (X beta)^T and beta^T X^T equal? ", np.array_equal(X_beta_T, beta_T_X_T))
运行上述代码,输出如下:
X beta:[[ 50][122]]
(X beta)^T:[[ 50 122]]
beta^T X^T:[[ 50 122]]
Are (X beta)^T and beta^T X^T equal? True
可以看到, ( X β ) T (\mathbf{X} \beta)^T (Xβ)T 和 β T X T \beta^T \mathbf{X}^T βTXT 的结果是相等的。
矩阵转置的其他性质
- 双重转置:一个矩阵的双重转置等于它本身: ( A T ) T = A (\mathbf{A}^T)^T = \mathbf{A} (AT)T=A
- 和的转置:两个矩阵和的转置等于各自转置的和: ( A + B ) T = A T + B T (\mathbf{A} + \mathbf{B})^T = \mathbf{A}^T + \mathbf{B}^T (A+B)T=AT+BT
- 数乘的转置:数乘矩阵的转置等于数乘矩阵的转置: ( c A ) T = c A T 其中 c 是一个标量 (c\mathbf{A})^T = c\mathbf{A}^T \quad \text{其中} \ c \ \text{是一个标量} (cA)T=cAT其中 c 是一个标量
- 积的转置:两个矩阵积的转置等于各自转置的乘积,顺序交换: ( A B ) T = B T A T (\mathbf{A} \mathbf{B})^T = \mathbf{B}^T \mathbf{A}^T (AB)T=BTAT
- 单位矩阵的转置:单位矩阵的转置仍然是单位矩阵: I T = I \mathbf{I}^T = \mathbf{I} IT=I
import numpy as np# 1. 双重转置:((A^T)^T = A)
A = np.array([[1, 2, 3], [4, 5, 6]])
A_T = A.T
A_T_T = A_T.T
print("A:\n", A)
print("(A^T)^T:\n", A_T_T)
print("Are A and (A^T)^T equal? ", np.array_equal(A, A_T_T))# 2. 和的转置:((A + B)^T = A^T + B^T)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
A_plus_B = A + B
A_plus_B_T = A_plus_B.T
A_T = A.T
B_T = B.T
A_T_plus_B_T = A_T + B_T
print("\nA + B:\n", A_plus_B)
print("(A + B)^T:\n", A_plus_B_T)
print("A^T + B^T:\n", A_T_plus_B_T)
print("Are (A + B)^T and A^T + B^T equal? ", np.array_equal(A_plus_B_T, A_T_plus_B_T))# 3. 数乘的转置:(cA)^T = c(A^T)
c = 2
A = np.array([[1, 2], [3, 4]])
cA = c * A
cA_T = cA.T
A_T = A.T
c_A_T = c * A_T
print("\ncA:\n", cA)
print("(cA)^T:\n", cA_T)
print("c(A^T):\n", c_A_T)
print("Are (cA)^T and c(A^T) equal? ", np.array_equal(cA_T, c_A_T))# 4. 积的转置:((AB)^T = B^T A^T)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
AB = np.dot(A, B)
AB_T = AB.T
A_T = A.T
B_T = B.T
B_T_A_T = np.dot(B_T, A_T)
print("\nAB:\n", AB)
print("(AB)^T:\n", AB_T)
print("B^T A^T:\n", B_T_A_T)
print("Are (AB)^T and B^T A^T equal? ", np.array_equal(AB_T, B_T_A_T))# 5. 单位矩阵的转置:I^T = I
I = np.eye(3)
I_T = I.T
print("\nI:\n", I)
print("I^T:\n", I_T)
print("Are I^T and I equal? ", np.array_equal(I_T, I))
A:[[1 2 3][4 5 6]]
(A^T)^T:[[1 2 3][4 5 6]]
Are A and (A^T)^T equal? TrueA + B:[[ 6 8][10 12]]
(A + B)^T:[[ 6 10][ 8 12]]
A^T + B^T:[[ 6 10][ 8 12]]
Are (A + B)^T and A^T + B^T equal? TruecA:[[2 4][6 8]]
(cA)^T:[[2 6][4 8]]
c(A^T):[[2 6][4 8]]
Are (cA)^T and c(A^T) equal? TrueAB:[[19 22][43 50]]
(AB)^T:[[19 43][22 50]]
B^T A^T:[[19 43][22 50]]
Are (AB)^T and B^T A^T equal? TrueI:[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]
I^T:[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]
Are I^T and I equal? True
这篇关于矩阵转置的基本性质的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!