矩阵转置的基本性质

2024-06-15 20:36
文章标签 基本 矩阵 性质 转置

本文主要是介绍矩阵转置的基本性质,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

矩阵转置的基本性质

flyfish

  1. 标量的转置:标量(即单个数字)的转置是其自身。
  2. 向量的转置:列向量的转置是行向量,行向量的转置是列向量。
  3. 矩阵的转置:一个 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 =(17+28+3947+58+69)=(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 =(71+82+9374+85+96)=(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 的结果是相等的。

矩阵转置的其他性质

  1. 双重转置:一个矩阵的双重转置等于它本身: ( A T ) T = A (\mathbf{A}^T)^T = \mathbf{A} (AT)T=A
  2. 和的转置:两个矩阵和的转置等于各自转置的和: ( A + B ) T = A T + B T (\mathbf{A} + \mathbf{B})^T = \mathbf{A}^T + \mathbf{B}^T (A+B)T=AT+BT
  3. 数乘的转置:数乘矩阵的转置等于数乘矩阵的转置: ( c A ) T = c A T 其中  c 是一个标量 (c\mathbf{A})^T = c\mathbf{A}^T \quad \text{其中} \ c \ \text{是一个标量} (cA)T=cAT其中 c 是一个标量
  4. 积的转置:两个矩阵积的转置等于各自转置的乘积,顺序交换: ( A B ) T = B T A T (\mathbf{A} \mathbf{B})^T = \mathbf{B}^T \mathbf{A}^T (AB)T=BTAT
  5. 单位矩阵的转置:单位矩阵的转置仍然是单位矩阵: 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

这篇关于矩阵转置的基本性质的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064514

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

Gradle的基本使用

新建一个项目后,在项目文件夹下创建build.gradle文件,并加入内容:       apply plugin: 'eclipse'。    然后在终端运行gradle eclipse即可构建eclipse IDE的开发环境。    gradle默认值:gradle有些目录是有默认值存在,建议项目的配置,承袭了maven的风格,如:         java的源码目录:src/mai

QML入门之基本元素

元素分为可视元素与非可视元素,可能元素例如Rectangle、Button等。非可视元素如Timer(定时器)、MouseArea(鼠标区域)等。非可视元素一般用于操作可视元素。 基础元素 Item Item(基础元素对象)是所有可视元素的基础对象,它们都继承自Item。可是元素存在以下共有属性。 Group(分组)Properties(属性)Geometry(几何属性)x