← Blog

如何使用 QuTiP 模拟阻尼谐振子并验证光子数衰减

M
MindPlot 研究团队
2026-07-27
分享
quantum-dynamicsQuTiPLindblad-equationopen-quantum-systemsPython

文章目录

科学原理导论

开放量子系统会与环境交换能量或信息,因此一般不能只用封闭系统的薛定谔方程描述。常见的 Markov 近似采用 Lindblad 主方程,让密度算符在 Hamiltonian 和耗散 collapse terms 共同作用下演化。对于零温阻尼谐振子,与湮灭算符成比例的 collapse operator 会持续移除激发;如果初始状态是含五个光子的 Fock 态,并且衰减常数约定一致,平均光子数应遵循 n(t)=n0 exp(-κt)

这个模型规模很小,却同时检验开放系统求解器、算符构造、时间网格、稳态分析、结构化导出和科学绘图。解析曲线是独立于数值轨迹的理论参考。二者一致只能证明这一个定义清楚的 Lindblad 案例在固定软件环境下符合理论,不能证明所有开放量子系统计算都正确,更不能替代实验测量。

本工作流使用 QuTiP 5.0.1、NumPy 1.26.4 和 SciPy 1.11.4,在 Linux x86_64 CPU 上运行,没有使用 GPU 或量子硬件。把数值库版本纳入结论非常重要,因为 QuTiP 包含编译组件,版本或 ABI 不匹配会造成真实安装和运行故障。只有导入探针、原生关键功能和聊天驱动功能全部通过,环境才能获得当前主机的验证标记。

本次 Lindblad 模型

谐振子无限维 Hilbert 空间被截断为 20 维,明显高于初始 Fock 占据数五。湮灭算符 a 降低占据数,数算符为 a†a,Hamiltonian 为 ωa†aω=1。零温损耗用 sqrt(κ)a 表示,其中 κ=0.2。初态为 |5〉,观测量是从时间零到 12 的平均光子数。

有限维截断不能被忽略。该系统只损失激发,不会向高能级增长,因此 20 维对当前案例具有充分余量;受到驱动或有限温度的系统可能占据更高能级,必须通过逐步增大维数进行收敛研究。一个截断值在本案例通过,并不表示它适用于所有参数。

mesolve 对主方程进行积分,并在指定时间点返回期望值。解析曲线直接由输入方程计算,不对数值结果进行拟合,从而避免用待验证数据本身构造“预期值”的循环论证。稳态则由 QuTiP steady-state solver 独立求得;零温、无驱动的耗散谐振子最终应到达真空态,其光子数期望应接近零。

测试进度

验证门槛状态保留证据
软件包传输预检通过13 个分发包,共 110,103,721 字节
受管软件安装通过本地保留 QuTiP 5.0.1 环境
原生动力学执行通过mesolve、解析比较与稳态计算
真实聊天驱动执行通过智能体加载技能并编写受管程序
结果语义验证通过检查 121 行、误差、稳态、PNG 和 SVG
聚焦发布截图通过结果在聊天结果界面中渲染

软件安装成功本身没有科学功能积分。版本探针只确认导入健康,确定性原生路径先建立参考结果,随后独立聊天路径接收科学目标和 JSON 输入,自行编写程序,通过技能受管环境执行并生成要求的产物。测试框架检查真实工具消息,证明技能被加载且程序没有绕过受管运行器。

演示用户请求

使用已安装的 qutip 技能和 damped-oscillator.json 模拟指定的零温开放量子系统。通过受管技能运行器编写并执行任务专用 Python 程序,使用 QuTiP mesolve、声明的 Hamiltonian、Fock 初态、collapse operator 与光子数观测量,同时计算稳态。生成 qutip-results.jsonphoton-decay.csvphoton-decay.pngphoton-decay.svg。把每一个模拟光子数与解析指数比较,报告最大绝对误差,验证稳态光子数并总结物理结果和输出路径。不要安装另一份 QuTiP,也不要伪造数值。

这条提示是科学任务而不是预写程序。它明确算法与交付物,但要求智能体负责读取技能,把 JSON 参数转换成量子算符,编写可执行代码,调用受管运行时,并检查实际文件。这正是端到端技能测试必须验证的行为。

演示数据

完整输入为 damped-oscillator.json。文件规模小、确定且可逐项检查,包含 Hilbert 维数、频率、阻尼常数、初始 Fock 占据、时间范围、时间点数、解析模型、最大允许轨迹误差和稳态容差。

参数数值作用
Hilbert 维数20表示谐振子的有限基
频率 ω1.0Hamiltonian 系数
阻尼常数 κ0.2零温光子损失速率
初始 Fock 态5初始平均光子数
时间范围0 至 12动力学窗口
时间点数121输出网格
解析模型5 exp(-0.2t)独立理论参考
最大绝对误差0.02数值轨迹验收阈值
稳态容差1 × 10⁻8真空占据验收阈值

时间网格包含两个端点,所以 CSV 验证器要求恰好 121 行,第一时间为零,最后时间为 12,同时必须存在时间、模拟值和解析值三类字段。这些结构检查防止摘要 JSON 掩盖不完整轨迹。

安装与执行

依赖事务在安装前下载并保留到每个技能独立的缓存目录。实测 110.1 MB 低于当前主机严格的 500 MB 上限。Python 3.11 环境保留在受管理工具根目录,因此回归和故障修复不需要销毁当时的软件状态。QuTiP 的编译扩展依赖数值库 ABI,固定并共同验证 QuTiP、NumPy 与 SciPy 比只固定一个包更可靠。

python scripts/install.py
python scripts/tool.py probe
python scripts/tool.py run -- damped_oscillator_analysis.py

这些命令公开可审计的运行边界。交互使用者不需要自己写程序,科学智能体会根据聊天请求和输入文件生成代码。命令仍然值得保留,因为它们支持独立复现、环境诊断和开发者审查。

原生参考程序与聊天程序遵循相同科学顺序:创建 destroy(N),构造数算符和 Hamiltonian,建立 Fock 初态,定义 sqrt(κ)a,生成时间网格,调用 mesolve,计算解析曲线与逐点误差,求稳态,并导出机器可读与可视化产物。

结果与产物

聊天驱动运行生成 121 个数值时间点。QuTiP 模拟光子数与 5 exp(-0.2t) 的最大绝对差约为 1.0872 × 10⁻10,远小于 0.02 阈值。独立计算的稳态光子数在报告精度下为 0.0,满足 1 × 10⁻8 容差。

结果观测值验收规则状态
时间行数121恰好 121通过
首时间0.0恰好 0.0通过
末时间12.0恰好 12.0通过
最大轨迹误差1.0872 × 10⁻10≤ 0.02通过
稳态光子数0.0绝对值 ≤ 1 × 10⁻8通过
PNG 尺寸2400 × 2400至少 500 × 300通过
SVG 内容实质性矢量文档<svg> 且超过 1,500 字符通过

聊天界面中聚焦显示的 QuTiP 验证结果

聚焦截图强调科学交付物和验证字段,不显示无关导航、原始事件流、文件列表或难读的大段 JSON。底层 JSON 与 CSV 仍然是权威数值来源。

QuTiP 模拟与解析光子衰减曲线

模拟和解析曲线在可视尺度上重合,但视觉重合不是验收条件;真正的定量检查来自 121 行逐点差的最大值。保留图片有助于读者检查单调衰减、初值、时间范围、标签以及是否存在明显振荡或符号错误。

由保留数据派生的 QuTiP 验证字段汇总

汇总图由结构化产物生成,并在来源清单中记录数据源和摘要。它用于解释结果,不能代替原始表格。把展示与数值证据分开,可以同时支持普通读者和机器审计。

物理解释

结果符合无驱动谐振子向零温 Markov 环境指数损失能量的预期。初始平均占据为五,collapse operator 使布居向较低数态转移,最终接近真空。稳态光子数为零,与零温、无驱动条件下的物理直觉一致。

与解析曲线之间极小的差异反映这个温和模型的数值积分精度,并不是实验不确定性,不能推广到更困难方程。强驱动、时变 Hamiltonian、刚性方程、非 Markov 环境、大 Hilbert 空间或接近简并的 Liouvillian 都可能需要求解器选项研究和更严格的收敛分析。

解析一致性还依赖阻尼约定。有些资料给出振幅衰减常数,有些给出能量或占据数衰减率,因而二者可能相差两倍。显式记录 collapse operator 和解析方程,可以区分约定错误与求解器错误。

可复现性

完整复现需要保存输入 JSON、软件包版本、Python ABI、操作系统与架构、智能体生成程序、精确 CSV、结果 JSON 和验证报告。下载缓存和环境保留在本地。发布图片带有摘要与来源记录,聚焦应用截图则由 Playwright 在真实结果渲染路由中生成。

改变求解器或数值库版本会形成新的验证条件。科学期望曲线不变,但数值容差、默认积分器、稀疏矩阵行为和结果对象模式可能改变。回归应比较科学语义,而不是假定跨版本字节完全一致。

实际研究还应逐步增加 Hilbert 维数并收紧求解器容差,报告观测量的收敛而不是命令是否成功。如果使用随机量子轨迹代替确定性主方程,需要多条轨迹、随机种子和不确定性估计。

数值收敛与验证设计

最大绝对误差是本案例最直观的轨迹指标,但它并不能描述所有数值问题。研究者还可以检查相对误差、积分误差随时间的分布、密度矩阵迹是否保持为一、Hermitian 性以及本征值是否满足物理要求。对于光子数接近零的尾部,相对误差会因为分母很小而变得不稳定,所以应同时报告绝对误差和具有明确物理意义的阈值。验收指标必须在查看结果之前确定,避免根据一次运行的表现临时放宽标准。

Hilbert 空间收敛研究应改变维数并观察目标量,而不是只确认更大矩阵可以运行。当前系统从五光子 Fock 态开始且只有损失通道,因此不会向截断边界积累概率。若加入相干驱动、热激发或非线性项,则应监测最高几个数态的布居,并持续增大维数,直到主要观测量在声明精度下稳定。仅凭“维数看起来足够大”无法形成可审计证据。

时间离散也需要根据问题调整。mesolve 内部采用自适应积分,输出网格主要决定保存和比较的位置,但过于稀疏的输出仍可能掩盖快速暂态,使图像误导读者。对于振荡、强驱动或多时间尺度系统,应在关键区间增加采样密度,并检查求解器内部警告和收敛状态。当前 0.1 的输出步长足以展示单调指数衰减,但不应自动复制到其他 Hamiltonian。

稳态计算与长时间动力学提供互补证据。代数稳态求解直接寻找 Liouvillian 的零模,而时间演化显示初态如何接近该解。二者一致时可以增加信心,但在多稳态、亚稳态或谱隙很小的系统中,有限时间轨迹可能长期停留在缓慢模式。报告必须区分数学稳态、模拟终点和实验可达状态,不应把三个概念合并为一句“系统已收敛”。

最后,语义验证器应对科学等价的输出模式保持有限弹性,同时对核心含义保持严格。例如字段可以位于顶层或清晰命名的结果对象中,但必须保留数值、单位或定义、误差阈值和状态。验证器过窄会拒绝正确结果,过宽则可能接受不相关文件。每次修复都应基于实际保留产物和领域判断,并把可复用的规则写回测试与技能说明,而不是只在临时日志中绕过失败。

复核人员还应把软件验证记录与论文中的模型假设逐项对应:环境是否真能视为零温,耗散是否满足 Markov 近似,collapse operator 是否采用正确归一化,观测量是否对应研究问题。数值结果即使精确符合解析式,也只说明程序忠实实现了这个数学模型;如果模型不适合真实体系,更多小数位不会改善科学有效性。因此,计算报告应同时保留“方程实现正确”和“模型适用性需要领域判断”这两类结论,不能用前者替代后者。

这也是可复现计算与可信科学解释之间不可省略的连接环节。

常见失败模式

最常见安装风险是编译数值栈不兼容。QuTiP 与 NumPy、SciPy 版本不协调可能在导入或运行时失败,所以受管安装器把这些版本视为一个经过测试的整体事务。保留 wheels 还可以降低临时网络故障造成的重复成本。

模型层面的错误包括使用 κa 而不是 sqrt(κ)a、混淆 ket 与密度矩阵演化、把振幅衰减与光子数衰减比较、选择过小 Hilbert 空间、或读取错误期望数组。自动验证无法推断所有研究意图,因此明确输入合同和算符描述不可缺少。

展示层面上,一条平滑曲线可能掩盖错误单位、错误终止时间或经过拟合的参考曲线。本工作流保留全部 121 行,并对每个时间点独立计算解析值;结构化摘要、表格轨迹与图像必须一致才能通过。

局限性

这是零温、Markov、无驱动、单模演示,不验证有限温度、多 collapse channels、受驱动力学、非 Markov 记忆、量子轨迹、关联谱、多体系统或实验硬件。解析一致性只验证当前方程与环境,不代表 QuTiP 对所有问题都具有同样误差。

软件包大小和兼容性状态只适用于 Linux x86_64 与 Python 3.11。本次没有验证 macOS、Windows、ARM 或 CUDA。技能中心应显示真实的 CPU 验证标签,而不能把它转换成未经测试的跨平台声明。

审阅时还应区分“理论真空稳态”和“有限实验时间内接近稳态”。这里通过独立代数稳态求解器得到零占据,并不表示时间 12 的瞬时轨迹已经严格等于零。动态终点和数学稳态是两个不同字段,文章不得把它们混写。真实实验还会受到温度、驱动泄漏、探测效率和模型失配影响,因此必须设计对照和误差模型。

参考文献

无需编程即可尝试此工作流

MindPlot 已内置支持这一科学工作流。研究者可以用自然语言描述开放系统模拟并附上参数文件,让智能体自动编写和运行代码、保留数值与可视化产物、完成验证并解释结果。可以访问 mindplot.ai 在线体验,也可以下载桌面版本,获得更注重隐私的本地执行和环境保留能力。