矩阵转置的基本性质

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

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

基本知识点

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),来控制你的设备呢?@智能家居 @万物互联