QuTiP mcsolve维度不兼容TypeError问题求助
问题根源分析
错误提示的维度不兼容并非指矩阵的(4,4)这类数值维度,而是QuTiP中Qobj特有的dims属性——该属性描述希尔伯特空间的张量积分解结构:
- 错误中的
[[2, 2], [2, 2]]是L1这类算子的正确dims(对应两比特系统的张量积结构) [[2, 2, 1], [2, 2, 1]]是L3的错误dims,同时初始态psi0的dims大概率为[[4], [1]],与算子的dims结构不匹配
具体问题点
- 初始态
psi0的dims结构错误:rand_ket(dim)生成的态默认dims为[[dim], [1]](两比特时为[[4], [1]]),但算子是通过张量积构造的,dims为[[2,2],[2,2]],两者结构无法兼容。 - L3的构造逻辑错误:当
nsite=2时,identity_nsite_3 = qeye(2**((nsite/2)-1))计算结果为qeye(1),导致L3 = tensor(identity_nsite_2, sigmap, identity_nsite_3)的dims变为[[2,2,1],[2,2,1]],与L1的[[2,2],[2,2]]结构不一致。
修复方案
1. 修正初始态psi0的dims结构
修改psi0函数,让生成的态dims匹配n比特系统的张量积结构:
from qutip import rand_ket def psi0(n_qubits): """ Creates a random pure state for an n-qubit system. """ # 指定希尔伯特空间的张量积维度结构 dims = [[2]*n_qubits, [1]*n_qubits] # 创建符合dims的随机归一化态 psi_0 = rand_ket(2**n_qubits, dims=dims) return psi_0
也可以手动设置dims:
psi_0 = rand_ket(dim) psi_0.dims = [[2]*n_qubits, [1]*n_qubits]
2. 修正L3的构造(针对nsite=2的场景)
若目标是为第二个比特添加sigmap型Lindblad算子,直接构造为:
# 移除错误的identity_nsite_3定义 # identity_nsite_3 = qeye(2**((nsite/2)-1)) # 构造第二个比特的sigmap Lindblad算子 L3 = Gamma3 * tensor(qeye(2), sigmap)
修复后L3的dims会变为[[2,2],[2,2]],与L1的dims结构一致。
3. 验证所有Qobj的dims一致性
修复后可打印每个Qobj的dims属性确认:
print("H dims:", H.dims) print("L1 dims:", L1.dims) print("L3 dims:", L3.dims) print("psi0 dims:", psi0.dims)
所有算子的dims应为[[2,2],[2,2]],初始态的dims应为[[2,2],[1,1]]。
修复后完整测试示例
from qutip import mcsolve, Qobj, tensor, sigmax, sigmay, qeye, rand_ket, num # 定义两比特哈密顿量(示例) nsite = 2 H = tensor(num(2), qeye(2)) + tensor(qeye(2), num(2)) + 0.5 * tensor(sigmax(), sigmax()) # 修正后的初始态函数 def psi0(n_qubits): dims = [[2]*n_qubits, [1]*n_qubits] return rand_ket(2**n_qubits, dims=dims) psi_0 = psi0(nsite) # 修正后的Lindblad算子构造 Gamma1 = 0.1 Gamma3 = 0.1 sigmap = (sigmax() + 1j * sigmay()) * 0.5 L1 = Gamma1 * tensor(sigmap, qeye(2)) L3 = Gamma3 * tensor(qeye(2), sigmap) # 要测量的算子(示例) op = tensor(num(2), qeye(2)) # 时间点列表(mcsolve需传入时间点列表,而非单个dt) tlist = [0, 0.1, 0.5, 1.0] # 运行mcsolve mc = mcsolve(H, psi_0, tlist, [L1, L3], [op], ntraj=5) print(mc.expect)
内容的提问来源于stack exchange,提问作者Eduardo Soares
相关产品推荐
相关产品推荐

