如何求解二分系统密度矩阵的部分转置?
2×2二分系统密度矩阵的部分转置实现
原始矩阵生成
首先通过Numpy生成目标4×4密度矩阵:
import numpy as np ρ = np.arange(1, 17, 1).reshape(4, 4) print(ρ)
输出的原始矩阵:
array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]])
实现第一种部分转置结果
针对第二个子系统(B系统)执行部分转置,步骤如下:
- 将4×4矩阵重塑为
2×2×2×2的分块张量,维度对应[A行, B行, A列, B列] - 交换B系统的行轴(第1轴)和列轴(第3轴)
- 重新reshape回4×4矩阵
代码实现:
# 拆分为分块张量 ρ_block = ρ.reshape(2, 2, 2, 2) # 对B系统执行部分转置 ρ_pt_B = ρ_block.swapaxes(1, 3).reshape(4, 4) print(ρ_pt_B)
输出结果:
array([[ 1, 2, 9, 10], [ 5, 6, 13, 14], [ 3, 4, 11, 12], [ 7, 8, 15, 16]])
实现第二种部分转置结果
针对第一个子系统(A系统)执行部分转置,步骤如下:
- 同样将4×4矩阵重塑为
2×2×2×2的分块张量 - 交换A系统的行轴(第0轴)和列轴(第2轴)
- 重新reshape回4×4矩阵
代码实现:
# 拆分为分块张量 ρ_block = ρ.reshape(2, 2, 2, 2) # 对A系统执行部分转置 ρ_pt_A = ρ_block.swapaxes(0, 2).reshape(4, 4) print(ρ_pt_A)
输出结果:
array([[ 1, 5, 3, 7], [ 2, 6, 4, 8], [ 9, 13, 11, 15], [10, 14, 12, 16]])
内容的提问来源于stack exchange,提问作者Lelouch
相关产品推荐
相关产品推荐

