变更日志

QuTiP 5.1.0 (2024-12-12)

功能

  • 它为HEOM的费米子求解器添加了奇偶校验支持(#2261,由Gerardo Jose Suarez提供)

  • 创建 SMESolver.run_from_experiment,允许从已知噪声或测量中运行随机演化。(#2318)

  • 添加类型提示。(#2327, #2473)

  • 轨迹求解器中的加权轨迹(改进了nm_mcsolve的采样)(#2369, 由Paul Menczel提供)

  • 更新了qutip.core.metrics.dnorm,使其在寻找两个酉矩阵的差异时具有高效的加速。我们使用了D. Aharonov, A. Kitaev, 和 N. Nisan, (1998) 第18页的结果。(#2416, 由owenagnel贡献)

  • 允许为mcsolve和nm_mcsolve设置混合初始条件。(#2437, 由Paul Menczel提供)

  • 在qutip.core.metrics中添加对jitgrad的支持(#2461,由Rochisha Agarwal贡献)

  • 允许合并来自随机求解器的结果。(#2474)

  • 支持对jaxjaxdia数据类型的测量统计(#2493,由Rochisha Agarwal提供)

  • 使用 numpy_backend 启用带有 jax.grad 的 mcsolve (#2499, 由 Rochisha Agarwal 提供)

  • 向稳态添加传播器方法 (#2508)

  • 介绍了qutip.core.environment模块,该模块包含描述玻色子和费米子热环境的类。(#2534, 由Gerardo Jose Suarez提供)

  • 为Qobj维度实现了一个einsum函数(评估操作数上的爱因斯坦求和约定。)(#2545,由Franco Mayo贡献)

  • 波函数计算已通过Cython实现加速。它优化了distribution.py中HarmonicOscillatorWaveFunction类的更新方法。(#2553,由Matheus Gomes Cordeiro贡献)

  • 通过添加sparse选项来加速kraus_to_super。(#2569,由Sola85提供)

错误修复

  • 修复了Bloch.add_states参数color的维度问题 清理了Bloch.add_state中的代码 在Bloch类的指南中添加了Bloch.add_arc和Bloch.add_line (#2445, 由PositroniumJS贡献)

  • 修复 HTMLProgressBar 显示问题 (#2475)

  • 使expm、cosm、sinm与jax一起工作。(#2484,由Rochisha Agarwal提供)

  • 修复随机求解器步骤方法 (#2491)

  • clip 给出了弃用警告,这可能在将来成为一个问题。因此,切换到 where (#2507, 由 Rochisha Agarwal 提供)

  • 修复 brmesolve 检测常量与时间依赖系统的问题。(#2530)

  • propagator 现在接受像 mesolve 一样的列表格式 c_ops。(#2532)

  • 修复与matplotlib>=3.9在matrix_histogram中的兼容性问题 (#2544, 由Andreas Maeder贡献)

  • 解决TwoModeQuadratureCorrelation类的不兼容问题(#2548,由quantum-menace提交)

  • 修复了具有多个退化特征值的稀疏特征求解器问题。(#2586)

  • 修复获取不均匀超算子的张量排列问题。(#2561)

文档

  • 改进指南设置页面。(#2403)

  • 整理API文档中类型别名的格式 (#2436, 由Paul Menczel贡献)

  • 更新文档 - 更新贡献者 - 提高apidoc的可读性 (#2523)

  • 修复 simdiag 文档字符串中的错误 (#2585, 由 Sola85 提交)

其他

  • 添加auto_real_casting选项。(#2329)

  • 为 sqrtm 添加调度程序 (#2453, 由 Rochisha Agarwal 提供)

  • 使e_opsargsoptions仅作为关键字。 求解器与e_ops不一致,通常跟随c_ops,但有时 在它之前。将其设置为仅关键字消除了记忆每个求解器 签名的需要。(#2489)

  • 介绍了一个新的NumpyBackend `类,该类允许动态选择在`qutip`中使用的numpy_backend。 该类便于根据settings.core中指定的配置在不同numpy实现(主要是numpyjax.numpy)之间切换。(#2490, 由Rochisha Agarwal提供)

  • 改进mkl查找功能。(#2497)

  • 确定性轨迹不计入ntraj。(#2502)

  • 允许在一个Python会话中多次执行测试(#2538,由张迈云提供)

  • 通过使用静态numpy版本检查来提高qutip.Qobj的性能(#2557,由Pieter Eendebak贡献)

  • 修复 towncrier 检查 (#2542)

QuTiP 5.0.4 (2024-08-30)

微版本发布以增加对numpy 2.1的支持

错误修复

  • 修复了dicke_trace_function中的舍入错误,该错误导致了负特征值。(#2466, 由 Andrey Nikitin 提交)

QuTiP 5.0.3 (2024-06-20)

微版本发布以增加对numpy 2的支持。

错误修复

  • 修复了过程矩阵渲染中的错误。(#2400, 由Anush Venkatakrishnan提交)

  • 修复稳态排列被反转的问题。(#2443)

  • vernN方法添加并行化支持,使用mcsolve。(由Utkarsh提交的#2454)

文档

  • 添加了qutip.core.gates到apidoc/functions.rst,并在guide-states.rst中添加了一个Gates部分。(#2441, 由alan-nala)

其他

  • 添加对numpy 2的支持 (#2421, #2457)

  • 添加对 scipy 1.14 的支持 (#2469)

QuTiP 5.0.2 (2024-05-16)

错误修复

  • 使用CSR作为expand_operator的默认值(#2380,由BoxiLi提供)

  • 修复了partial_transpose函数的导入问题。 确保negativity函数能够处理ket和密度算子作为输入。(#2371, 由vikas-chaudhary-2802贡献)

  • 确保mcsolve结果的end_condition在没有达到目标容差时不会显示已达到目标容差 (#2382, 由magzpavz)

  • 修复了稳态Floquet求解器中的两个错误,并调整了测试以对此问题敏感。(#2393, 由Neill Lambert贡献)

文档

  • 修正文档中的错误(#2401,由PositroniumJS提供)

  • 修复 #2156:更正文档中的代码示例 (#2409, 由 PositroniumJS 提供)

杂项

  • 在操作符创建函数中更好的元数据管理 (#2388)

  • 隐式设置最低Python版本为3.9 (#2413)

  • Qobj.__eq__ 使用核心设置的 rtol。(#2425)

  • 仅当初始状态已经归一化时,才对求解器状态进行归一化。(#2427)

QuTiP 5.0.1 (2024-04-03)

补丁更新修复了v5.0.0版本中的一些小问题

  • 在迁移到readthedocs时修复文档中的损坏链接

  • 修复readthedocs搜索功能

  • 将setuptools添加到运行时编译要求中

  • 修复开放系统的mcsolve文档

  • 修复进度条中的OverFlowError

QuTiP 5.0.0 (2024-03-26)

QuTiP 5 是对 QuTiP 许多核心组件(QobjQobjEvo、求解器)的重新设计,以使它们更加一致和灵活。

Qobj 现在可以以稀疏或密集表示形式存储,并且可以根据需要合理地混合这两种形式。QobjEvo 现在在 QuTiP 中一致使用,并且其实现已经得到了大幅度的清理。一个新的 Coefficient 类用于表示 QobjEvo 内部的时间依赖因子。

求解器已被重写,以便与新的数据层良好配合,并且引入了解决ODE的Integrators概念。未来,新的数据层可能会提供专门针对其底层数据表示的Integrators

QuTiP 的用户界面 API 大部分仍然保持熟悉,但必须进行许多小的破坏性更改。如果我们能够使从 QuTiP 4 迁移到 QuTiP 5 的代码变得更容易,请告诉我们。

以下是详细的更改列表。

贡献者

QuTiP 5 是过去三年中许多人共同努力的成果。

特别是:

  • Jake Lishman 领导了新数据层和系数的实现。

  • Eric Giguère 领导了新 QobjEvo 接口和求解器的实现。

  • Boxi Li 领导了 QuTiP 的 QIP 支持的更新和 qutip_qip 的创建。

QuTiP 管理团队的其他成员也积极参与了 QuTiP 5 的审查、测试和设计工作:

  • 亚历山大·皮奇福德

  • 阿西尔·加利西亚

  • 内森·沙马

  • 沙赫纳瓦兹·艾哈迈德

  • 尼尔·兰伯特

  • 西蒙·克罗斯

  • 保罗·门切尔

两位Google Summer of Code贡献者更新了教程和基准测试到QuTiP 5:

  • Christian Staufenbiel 更新了许多教程 ()。

  • Xavier Sproken 更新了基准测试 ()。

在RIKEN实习期间,Patrick Hopf创建了一种新的量子控制方法并改进了现有方法的接口:

  • Patrick Hopf 创建了新的量子控制包 ()。

四个实验性的数据层后端要么作为Google Summer of Code的一部分编写,要么作为单独的项目编写。虽然这些仍然是alpha质量,但它们极大地帮助测试了数据层API:

  • qutip-tensorflow: 由 Asier Galicia 提供的 TensorFlow 后端 ()

  • qutip-cupy: 由Felipe Bivort Haiek提供的CuPy GPU后端 ()`

  • qutip-tensornetwork: 由Asier Galicia开发的TensorNetwork后端 ()

  • qutip-jax: 由 Eric Giguère 提供的 JAX 后端 ()

最后,Yuji Tamakoshi 更新了可视化功能,并作为 Google Summer of Code 项目的一部分添加了动画功能。

我们还有许多其他贡献者,他们的具体贡献如下所述:

  • Pieter Eendebak(更新了所需的SciPy至1.5+,#1982 )。

  • Pieter Eendebak(通过设置日志记录器名称减少了导入时间,#1981

  • Pieter Eendebak (允许使用 scipy 1.12 与 qutip,#2354 )

  • Xavier Sproken(在源代码分发中包含了C头文件,#1971

  • Christian Staufenbiel(为Floquet求解器添加了对多个崩溃操作符的支持,#1962

  • Christian Staufenbiel(修复了Floquet主方程求解器中使用的基础,#1952

  • Christian Staufenbiel(允许bloch_redfield_tensor函数接受字符串和可调用对象作为a_ops#1951

  • Christian Staufenbiel (添加关于超算子、泡利基和通道收缩的指南,#1984 )

  • Henrique Silvéro(允许qutip_qip作为qutip.qip导入,#1920

  • Florian Hopfmueller (添加了process_fidelityaverage_gate_fidelity的极大改进实现,#1712 , #1748 , #1788 )

  • Felipe Bivort Haiek(修正了否定密集实现文档字符串中的不准确性,#1608

  • Rajath Shetty(增加了通过qutip.Bloch指定单个点、矢量和状态显示颜色的支持,#1335

  • Rochisha Agarwal (将dtype添加到qobj的打印输出中,#2352 )

  • Kosuke Mizuno (添加了 plot_wigner() 和 plot_wigner_fock_distribution() 的参数以指定 wigner() 的参数,#2057 )

  • Matt Ord(仅在keep_runs_results为False时预计算密度矩阵,#2303

  • 丹尼尔·莫雷诺·加兰(添加了自定义点颜色的可能性,如V4中所示,并修复了‘l’样式的点图行为,#2303

  • Sola85 (修复了simdiag不返回正交特征向量的问题,#2269 )

  • 爱德华·托马斯(修复了Jupyter单元输出中Qobj状态的LaTeX显示,#2272

  • Bogdan Reznychenko(重写kraus_to_choi使其更快,#2284

  • gabbence95 (修复expect文档中的拼写错误,#2331 )

  • lklivingstone (为 QobjEvo 添加了 __repr__,#2111 )

  • Yuji Tamakoshi (通过使其更简洁来改进 print(qutip.settings),#2113 )

  • khnikhil (添加了费米子湮灭和产生算符, #2166 )

  • 丹尼尔·韦斯(改进了mcsolve的采样算法,#2218

  • SJUW (将 matrix_histogram_complex() 的缺失颜色条填充从 0 增加到 0.05, #2181 )

  • 瓦兰·巴普蒂斯特·马图拉纳亚加姆(将qutip-notebooks更改为qutip-tutorials,并修复了PR模板中重定向到变更日志部分的链接中的拼写错误,#2107

  • Gerardo Jose Suarez(在文档中添加了关于sec_cutoff的信息,#2136

  • Cristian Emiliano Godinez Ramirez(向MESolver、SMESolver、SSESolver、NonMarkovianMCSolver的API文档添加了继承成员,#2167

  • 安德烈·拉胡博夫斯基(修正了Bloch-Redfield主方程文档中的语法,#2174

  • Rushiraj Gadhvi (qutip.ipynbtools.version_table() 现在可以在没有安装Cython的情况下调用,#2110 )

  • Harsh Khilawala(将HTMLProgressBar从qutip/ipynbtools.py移动到qutip/ui/progressbar.py,#2112

  • Avatar Srinidhi P V (在创建 QobjEvo 时添加了新参数 bc_type 以接受边界条件,#2114 )

  • 安德烈·拉库博夫斯基(修复了projection()文档字符串中的类型,#2363

Qobj 变更

以前,Qobj 数据存储在类似 SciPy 的稀疏矩阵中。现在表示形式更加灵活。QuTiP 中包含了密集和稀疏格式的实现,并且可以自定义实现。因此,QuTiP 在密集状态和操作符上的性能显著提高。

一些亮点:

  • 数据仍然可以通过.data属性访问,但现在它是底层数据类型的实例,而不是类似SciPy的稀疏矩阵。无论数据类型如何,qutip.core.data中可用的操作都可以在.data上使用。

  • Qobj 与不同数据类型的对象可以在算术和其他操作中混合使用。系统会自动确定一个合理的输出类型。

  • 新的.to(...)方法可用于将Qobj从一种数据类型转换为另一种数据类型。例如,.to("dense")将转换为密集表示,而.to("csr")将转换为稀疏类型。

  • 许多Qobj方法和创建Qobj的方法现在接受一个dtype参数,该参数允许指定返回的Qobj的数据类型。

  • 新的 & 运算符可用于获取张量积。

  • 新的@运算符可用于获取矩阵/运算符乘积。 bar @ ket返回一个标量。

  • 新的.contract()方法将折叠Qobj维度的1D子空间。

  • 新的 .logm() 方法返回一个算子的矩阵对数。

  • 方法 .set_data, .get_data, .extract_state, .eliminate_states, .evaluate.check_isunitary 已被移除。

  • 属性 dtype 返回所使用的数据的表示。

  • 新的 data_as 允许以常见的 Python 格式获取数据: numpy 数组、scipy 稀疏矩阵、JAX 数组等。

QobjEvo 变更

用于存储时间依赖量子对象的QobjEvo类型已经显著扩展、标准化和扩展。时间依赖系数现在使用一个新的Coefficient类型表示,如果需要,可以独立创建和操作。

一些亮点:

  • .compile() 方法已被移除。如果可能,指定为字符串的系数会自动编译,并且编译结果会在不同的 Python 运行和实例之间缓存。

  • 现在支持在单个Qobj中混合系数类型。

  • 为了方便起见,QobjEvo 添加了许多新属性。例如包括 .dims, .shape, .superrep.isconstant

  • 许多旧属性如 .cte, .use_cython, .type, .const, 和 .coeff_file 已被移除。

  • 一个新的Spline系数支持不同阶的样条插值。旧的Cubic_Spline系数已被移除。

  • 新的 .arguments(...) 方法允许更新底层系数函数的附加参数。

  • _step_func_coeff 参数已被 order 参数取代。_step_func_coeff=False 等同于 order=3_step_func_coeff=True 等同于 order=0order 的较高值会给出更高阶的样条插值。

  • 样条类型可以使用 bc_type 来控制边界条件。

  • QobjEvo 可以通过将 Qobj 与系数相乘来创建: oper * qutip.coefficient(f, args=args) 等同于 qutip.QobjEvo([[oper, f]], args=args)

  • 系数函数可以用Python风格定义:def f(t, A, w)。 字典args的第二个参数不再需要。 使用确切f(t, args)签名的函数将使用旧方法以确保向后兼容性。

求解器更改

QuTiP 中的求解器已经进行了大量的重做和标准化。 在底层,求解器现在使用可交换的 ODE Integrators。 包含了许多 Integrators(见下面的列表),并且可以实现自定义的实现。求解器现在一致地接受在哈密顿量或李雅普诺夫量处的 QobjEvo 实例,或者任何可以传递给 QobjEvo 构造函数的对象。

以下是亮点的详细分解。

所有求解器:

  • 求解器选项现在以普通的Python字典形式提供。 qutip.Options 已被弃用,并返回一个字典以保持向后兼容性。

  • 可以通过提供method选项来选择特定的ODE积分器。

  • 每个求解器都提供了一个类接口。创建类的实例允许为同一系统多次运行求解器,而无需重复构建要积分的ODE的右侧。

  • 大多数操作符都接受QobjEvo实例,例如, H, c_ops, e_ops, a_ops

  • 进度条现在使用progress_bar选项进行选择。 提供了一个使用tqdm Python库的新进度条。

  • 动态参数,其中操作符的值取决于演化界面的当前状态已重新设计。现在求解器的一个属性将被用作参数: args={"state": MESolver.StateFeedback(default=rho0)}

集成者:

  • SciPy 的 zvode 积分器可通过 BDF 和 Adams 方法使用,分别为 bdfadams

  • SciPy 的 dop853 积分器(由 Dormand 和 Prince 提出的八阶 Runge-Kutta 方法)可作为 dop853 使用。

  • SciPy 的 lsoda 积分器可以作为 lsoda 使用。

  • QuTiP 自己实现的 Verner 的“最有效”的 7 阶和 9 阶 Runge-Kutta 方法可用作 vern7vern9。有关这些方法的描述,请参见 http://people.math.sfu.ca/~jverner/

  • QuTiP 自己的求解器实现,直接对角化要积分的系统,可用作 diag。它仅适用于时间无关的系统,并且设置速度较慢,但一旦对角化完成,它生成解决方案的速度非常快。

  • QuTiP 自己实现的近似 Krylov 子空间积分器可用作 krylov。此积分器仅可与 sesolve 一起使用。

结果类:

  • 一个新的.e_data属性提供了期望值作为字典。 与.expect不同,这些值以Python列表的形式提供,而不是 numpy数组,这更好地支持非数字类型。

  • .stats 属性的内容发生了显著变化,现在在各个求解器之间更加一致。

蒙特卡洛求解器 (mcsolve):

  • 系统,H,现在可能是一个超算子。

  • seed 参数现在支持提供 numpy 的 SeedSequenceGenerator 类型。

  • 新的 timeouttarget_tol 参数允许求解器在达到超时或目标容差时提前退出。

  • ntraj 选项不再支持轨迹数量的列表。 相反,只需多次运行求解器,并在设置求解器需要大量时间时使用类 MCSolver

  • map_func 参数已被 map 选项替换。

  • 已添加基于loky的并行映射。

  • 已添加基于mpi的并行映射。

  • mcsolve返回的结果现在支持计算光电流和在N个轨迹上计算稳态。

  • 旧的 parfor 并行执行函数已从 qutip.parallel 中移除。请使用 parallel_map, loky_mapmpi_pmap 代替。

  • 添加了改进的采样选项,当崩溃概率较小时,收敛速度更快。

非马尔可夫蒙特卡罗求解器 (nm_mcsolve):

  • 支持负衰减率的新蒙特卡洛求解器。

  • 基于影响鞅方法,Donvil 等人,Nat Commun 13, 4140 (2022)。

  • 对常规蒙特卡洛求解器的大多数改进也适用于此处。

  • 影响鞅的值可以通过结果的.trace属性获得。

随机方程求解器 (ssesolve, smesolve)

  • 函数调用发生了很大变化:许多关键字参数现在变为可选。

  • m_ops 和 dW_factors 现在仅从新类接口的默认值更改。

  • 使用与mcsolve相同的并行映射:增加了对loky和mpi映射的支持。

  • 添加了结束条件 timeouttarget_tol

  • seed 参数现在支持提供 numpy 的 SeedSequence

  • Wiener 函数现在可以作为反馈使用。

布洛赫-雷德菲尔德主方程求解器 (brmesolve):

  • a_opsspectra 支持的实现已经进行了大量重新设计,以重用新的 Coefficient 和 QobjEvo 类中的技术。

  • use_secular 参数已被移除。请改用 sec_cutoff=-1

  • 所需的容差现在从qutip.settings中读取。

Krylov子空间求解器 (krylovsolve):

  • Krylov 求解器现在使用 SESolverkrylov ODE 积分器实现。函数 krylovsolve 为了方便而保留,并且现在支持更多的选项。

  • sparse 参数已被移除。请为哈密顿量提供一个稀疏的 Qobj

Floquet 求解器 (fsesolve 和 fmmesolve):

  • Floquet 求解器已被重写,以使用一个新的 FloquetBasis 类,该类管理从实验室基准到 Floquet 基准的转换及其反向转换。

  • 旧版Floquet求解器使用的许多内部方法已被移除。Floquet张量仍然可以通过函数floquet_tensor重新获取。

  • Floquet Markov 主方程求解器已经进行了许多更改并添加了新选项。可以使用 w_th 指定环境温度,结果状态存储在实验室基中,并可选地使用 store_floquet_state 存储在 Floquet 基中。

  • 提供给fmmesolve的光谱函数现在必须向量化 (即接受并返回频率和密度的numpy数组)并且 必须接受负频率(即通常包括一个w > 0因子 以便返回的密度在负频率时为零)。

  • 要保留的边带数量,kmax 仅在使用 FMESolver 时才能提供。

  • Tsteps 参数已从 fsesolvefmmesolve 中移除。可以使用 FloquetBasisprecompute 选项来代替。

状态求解器的演变 (essovle):

  • 函数 essolve 已被移除。请使用 diag 集成方法与 sesolvemesolve 代替。

稳态求解器(steadystate模块):

  • method 参数和 solver 参数已经被分开。之前它们混合在 method 参数中。

  • 之前的选项现在作为参数传递给稳态求解器,并且大部分传递给底层的SciPy函数。

  • 日志记录和统计信息已被移除。

相关函数(相关模块):

  • 新增了一个correlation_3op函数。它支持MESolverBRMESolver

  • correlationcorrelation_4opcorrelation_ss 函数已被移除。

  • 支持使用 mcsolve 计算相关性的功能已被移除。

传播器(propagator 模块):

  • 已为传播器添加了一个类接口,qutip.Propagator

  • 现在支持使用QobjEvo传播时间依赖系统。

  • unitary_modeparallel 选项已被移除。

相关光谱(光谱模块):

  • 函数 spectrum_ssspectrum_pi 已被移除,现在它们是内部函数。

  • use_pinv 参数已从 spectrum 中移除,其功能已合并到 solver 参数中。请使用 solver="pi" 代替。

层次运动方程求解器 (HEOM)

  • 更新了求解器以使用新的QuTiP积分器和数据层。

  • 已将所有的HEOM教程更新至QuTiP 5。

  • 增加了对结合玻色子和费米子浴的支持。

  • 将HEOM求解器的右侧构建速度提高了4倍。

  • 与QuTiP 4一样,HEOM支持任意谱密度、玻色子和费米子浴、相关函数的Páde和Matsubara展开、计算Matsubara终止符以及检查ADOs(辅助密度算子)。

QuTiP 核心

核心QuTiP功能还有许多其他小的变化:

  • qft(...) 返回量子傅里叶变换算子的函数已从 qutip.qip.algorithm 移动到 qutip

  • Bloch-Redfield 求解器张量 brtensor 已被移至 qutip.core。有关详细信息,请参阅上面关于 Bloch-Redfield 求解器的部分。

  • 用于将状态转换为超算子状态以及从超算子状态转换回来的函数 mat2vecvec2mat 已更名为 stack_columnsunstack_columns

  • 函数 liouvillian_ref 已被移除。请改用 liouvillian

  • 超算子转换 super_to_choi, choi_to_super, choi_to_kraus, choi_to_chichi_to_choi 已被移除。 改用 to_choi, to_super, to_krausto_chi

  • 所有的随机对象创建函数现在都接受一个numpy Generator作为种子。

  • 所有随机对象创建函数的 dims 参数已被移除。如果需要显式维度,请将维度作为第一个参数提供。

  • 函数 rand_unitary_haar 已被移除。请使用 rand_unitary(distribution="haar") 代替。

  • 函数 rand_dm_hsrand_dm_ginibre 已被移除。 请使用 rand_dm(distribution="hs")rand_dm(distribution="ginibre") 代替。

  • 函数 rand_ket_haar 已被移除。请使用 rand_ket(distribution="haar") 代替。

  • 测量函数中的target参数已被移除,该参数用于扩展测量操作符。请使用expand_operator来扩展操作符。

  • qutip.Bloch 现在支持在 add_pointadd_statesadd_vectors 中为每个点、状态或向量应用颜色。

  • 维度使用类而不是分层列表。

  • 允许测量函数支持退化运算符。

  • 添加 qeye_likeqzero_like

  • 添加了费米子湮灭和产生算符。

QuTiP 设置

以前qutip.settings是一个普通的模块。现在qutip.settings是一个设置类的实例。所有核心操作的可运行时修改的设置都在qutip.settings.core中。其他设置在运行时不可修改。

  • 移除了 loadresetsave 函数。

  • 移除了 .debug, .fortran, .openmp_thresh.

  • 新的 .compile 存储了编译系数的编译选项。

  • 新的 .core["rtol"] 核心选项提供了 QuTiP 使用的默认相对容差。

  • 绝对容差设置 .atol 已移至 .core["atol"]

可视化

  • plot_wignerplot_wigner_fock_distribution添加了参数,以指定wigner的参数。

  • 移除了 Bloch3D。相同的功能由 Bloch 提供。

  • 添加了figaxcmap关键字参数到所有可视化函数中。

  • 大多数可视化函数现在都遵循colorblind_safe设置。

  • 新增了从Qobj列表或直接从保存状态的求解器结果创建动画的新功能。

包重组

  • qutip.qip 已经被移动到它自己的包中,即 qutip-qip。一旦安装,qutip-qip 可以作为 qutip.qipqutip_qip 使用。一些广泛使用的门已经被保留在 qutip.gates 中。

  • qutip.control 已移至 qutip-qtrl,一旦安装,qutip-qtrl 可以作为 qutip.controlqutip_qtrl 使用。请注意,quitp_qtrl 主要是为了向后兼容而提供的。最优控制的改进将在新的 qutip_qoc 包中进行。

  • qutip.lattice 已经移到了它自己的包中,qutip-lattice。可以从 获取。

  • qutip.sparse 已被移除。它包含了旧的稀疏矩阵表示,并被 qutip.data 中的新实现所取代。

  • qutip.piqs 函数不再从 qutip 命名空间中可用。它们现在可以从 qutip.piqs 访问。

其他

  • 已添加对64位整数稀疏矩阵索引的支持,允许稀疏矩阵最多有2**63行和列。此支持需要在编译时通过调用setup.py并传递--with-idxint-64来启用。

功能移除

  • 对OpenMP的支持已被移除。如果有足够的需求和良好的组织计划,OpenMP支持可能会在未来的QuTiP版本中回归。

  • qutip.parfor 函数已被移除。请改用 qutip.parallel_map

  • qutip.graph 已被移除,并由 SciPy 的图函数替代。

  • qutip.topology 已被移除。它只包含一个函数 berry_curvature

  • ~/.qutip/qutiprc 配置文件不再受支持。它包含了OpenMP支持的设置。

  • 弃用 three_level_atom

  • 弃用 orbital

QuTiP 5.0.0b1 的变更:

功能

  • 将dtype添加到qobj的打印输出中(由Rochisha Agarwal提交的#2352)

杂项

  • 允许使用 scipy 1.12 与 qutip。(由 Pieter Eendebak 提交的 #2354)

QuTiP 5.0.0b1 (2024-03-04)

功能

  • 创建一个维度类 (#1996)

  • 添加了plot_wigner()和plot_wigner_fock_distribution()的参数,以指定wigner()的参数。(#2057, 由Kosuke Mizuno贡献)

  • 恢复对求解器的反馈 (#2210)

  • 添加了mpi_pmap,它使用mpi4py模块通过MPI接口并行运行计算。(#2296,由Paul贡献)

  • 仅在keep_runs_results为False时预计算密度矩阵(#2303,由Matt Ord提供)

错误修复

  • 添加自定义点颜色的功能,类似于V4版本,并修复‘l’风格的点图行为(#1974,由Daniel Moreno Galán贡献)

  • 禁用了nm_mcsolve中损坏的“改进采样”功能。(#2234, 由Paul提交)

  • 修复了通过options._feedback存储对求解器的引用的结果对象。(#2262, 由Paul提交)

  • 修复了simdiag不返回正交特征向量的问题。(#2269, 由Sola85提交)

  • 修复Jupyter单元格输出中Qobj状态的LaTeX显示(#2272,由Edward Thomas贡献)

  • 改进了parallel_maploky_pmap在超时、错误或键盘中断情况下的行为(#2280,由Paul贡献)

  • 在测试中忽略来自cython 0.29.X的弃用警告。(#2288)

  • 修复了HEOM方法中steady_state()求解器的两个问题。(#2333)

杂项

  • 提高保真度文档字符串 (#2257)

  • 改进指南/动态中的文档 (#2271)

  • 改进状态和操作符参数的文档。(#2289)

  • 重写 kraus_to_choi 使其更快 (#2284, 由 Bogdan Reznychenko 完成)

  • 移除Bloch3D:与Bloch重复(#2306)

  • 允许在没有matplotlib和ipython的情况下运行测试。(#2311)

  • 在固定dt SODE求解器中添加过小步长警告 (#2313)

  • dtype添加到QobjQobjEvo (#2325)

  • 修复expect文档中的拼写错误(#2331,由gabbence95提交)

  • 允许测量函数支持退化运算符。(#2342)

QuTiP 5.0.0a2 (2023-09-06)

功能

  • 为bloch_redfield_tensor添加对不同光谱类型的支持 (#1951)

  • 通过显式设置记录器名称来改善qutip的导入时间。(#1981, 由Pieter Eendebak贡献)

  • 更改expand_operator中参数的顺序 (#1991)

  • 添加 svnsolve 到 dispatched (#2002)

  • 添加了nm_mcsolve以支持可能具有负速率的主方程的蒙特卡洛模拟。这里实现的方法在arXiv:2209.08958 [quant-ph]中有描述。(#2070 由 pmenczel 贡献)

  • 添加对结合玻色子和费米子HEOM浴的支持 (#2089)

  • 为 QobjEvo 添加了 __repr__ (#2111 由 lklivingstone 贡献)

  • 通过使其更简洁来改进 print(qutip.settings) (#2113 by tamakoshi2001)

  • 创建trace_oper_ket操作 (#2126)

  • 通过将最后一步转换为Cython,将HEOM求解器的RHS构建速度提高了4倍。(#2128)

  • 重写随机求解器以使用v5求解器接口。(#2131)

  • 添加 Qobj.get 以提取原始格式的底层数据。(#2141)

  • 添加 qeye_like 和 qzero_like (#2153)

  • 增加在Data上调度容量的功能 (#2157)

  • 添加了费米子湮灭和产生算子。(#2166 由 khnikhil 贡献)

  • 更改了参数并在visualization.py中的函数应用了colorblind_safe(由Yuji Tamakoshi提交的#2170)

  • 更改了参数并在visualization.py中的plot_wigner_sphere和matrix_histogram应用了colorblind_safe(由Yuji Tamakoshi提交的#2193)

  • 添加了Dia数据层,该层将操作符表示为多对角矩阵。(#2196)

  • 增加了对动画图表的支持。(#2203 由 Yuji Tamakoshi 提供)

  • 改进了mcsolve的采样算法(由Daniel Weiss提交的#2218)

  • 增加了对地图函数提前终止的支持。(#2222)

错误修复

  • 添加缺失的状态转换到floquet_markov_mesolve(#1952 由 christian512 提交)

  • 为动量和位置运算符添加了默认的_isherm值(True)。(#2032 由 Asier Galicia 提供)

  • 将 qutip-notebooks 更改为 qutip-tutorials,并修复了 PR 模板中重定向到变更日志部分的链接中的拼写错误。(#2107 由 Valan Baptist Mathuranayagam 提供)

  • 将 matrix_histogram_complex() 的缺失颜色条填充从 0 增加到 0.05。(由 SJUW 提交的 #2181)

  • 在内存不足时引发错误。(#2224)

  • 修复了在fmmesolve中回退到fsesolve调用的问题 (#2225)

移除

  • 移除 qutip.control 并替换为 qutip_qtrl。(#2116)

  • 删除了 countstat.py 中的 _solve 并使用了 _data.solve。(由 Yuji Tamakoshi 提交的 #2120)

  • 弃用 three_level_atom (#2221)

  • 弃用轨道 (#2223)

文档

  • 添加关于超算子、泡利基和通道收缩的指南。(#1984 由 christian512 提供)

  • 在文档中添加了关于sec_cutoff的信息(#2136 由 Gerardo Jose Suarez 提供)

  • 向MESolver、SMESolver、SSESolver、NonMarkovianMCSolver的API文档添加了继承成员(由Cristian Emiliano Godinez Ramirez提交的#2167)

  • 修正了Bloch-Redfield主方程文档中的语法错误(#2174 由Andrey Rakhubovsky提交)

杂项

  • 将scipy版本要求更新至1.5+(由Pieter Eendebak提交的#1982)

  • 在 qutip/measurements.py 和 qutip/core/semidefinite.py 中添加了 __all__ (#2103 由 Rushiraj Gadhvi 贡献)

  • 恢复 towncrier 检查 (#2105)

  • 现在可以在没有安装Cython的情况下调用qutip.ipynbtools.version_table()(由Rushiraj Gadhvi提交的#2110)

  • 将HTMLProgressBar从qutip/ipynbtools.py移动到qutip/ui/progressbar.py(由Harsh Khilawala提交的#2112)

  • 在创建QobjEvo时添加了新参数bc_type以接受边界条件(#2114 由Avatar Srinidhi P V贡献)

  • 移除Windows构建警告抑制。(#2119)

  • 通过仅对位置参数进行调度来优化调度器。(#2135)

  • 清理半定式 (#2138)

  • 迁移 transfertensor.py 到 solver (#2142)

  • 为进度条添加测试 (#2150)

  • 启用 Cython 3 (#2151)

  • 为visualization.py添加了测试(#2192 由Yuji Tamakoshi贡献)

  • 对sphereplot的参数进行了排序,使其顺序与plot_spin_distribution的顺序相似(由Yuji Tamakoshi在#2219中完成)

QuTiP 5.0.0a1 (2023-02-07)

QuTiP 5 是对 QuTiP 许多核心组件(QobjQobjEvo、求解器)的重新设计,以使它们更加一致和灵活。

Qobj 现在可以以稀疏或密集表示形式存储,并且可以根据需要合理地混合这两种形式。QobjEvo 现在在 QuTiP 中一致使用,并且其实现已经得到了大幅度的清理。一个新的 Coefficient 类用于表示 QobjEvo 内部的时间依赖因子。

求解器已被重写,以便与新的数据层良好配合,并且引入了解决ODE的Integrators概念。未来,新的数据层可能会提供专门针对其底层数据表示的Integrators

QuTiP 的用户界面 API 大部分仍然保持熟悉,但必须进行许多小的破坏性更改。如果我们能够使从 QuTiP 4 迁移到 QuTiP 5 的代码变得更容易,请告诉我们。

任何广泛的更改列表如下。

贡献者

QuTiP 5 是过去三年中许多人共同努力的成果。

特别是:

  • Jake Lishman 领导了新数据层和系数的实现。

  • Eric Giguère 领导了新 QobjEvo 接口和求解器的实现。

  • Boxi Li 领导了 QuTiP 的 QIP 支持的更新和 qutip_qip 的创建。

QuTiP 管理团队的其他成员也积极参与了 QuTiP 5 的审查、测试和设计工作:

  • 亚历山大·皮奇福德

  • 阿西尔·加利西亚

  • 内森·沙马

  • 沙赫纳瓦兹·艾哈迈德

  • 尼尔·兰伯特

  • 西蒙·克罗斯

两位Google Summer of Code贡献者更新了教程和基准测试到QuTiP 5:

  • Christian Staufenbiel 更新了许多教程 ()。

  • Xavier Sproken 更新了基准测试 ()。

四个实验性的数据层后端要么是作为Google Summer of Code的一部分编写的,要么是作为单独的项目编写的。虽然这些仍然是alpha质量,但它们对测试数据层API有很大帮助:

  • qutip-tensorflow: 由 Asier Galicia 提供的 TensorFlow 后端 ()

  • qutip-cupy: 由Felipe Bivort Haiek提供的CuPy GPU后端 ()`

  • qutip-tensornetwork: 由Asier Galicia开发的TensorNetwork后端 ()

  • qutip-jax: 由 Eric Giguère 提供的 JAX 后端 ()

我们还有许多其他贡献者,他们的具体贡献如下所述:

  • Pieter Eendebak(更新了所需的SciPy至1.4+,#1982 )。

  • Pieter Eendebak(通过设置日志记录器名称减少了导入时间,#1981

  • Xavier Sproken(在源代码分发中包含了C头文件,#1971

  • Christian Staufenbiel(为Floquet求解器添加了对多个崩溃操作符的支持,#1962

  • Christian Staufenbiel(修复了Floquet主方程求解器中使用的基础,#1952

  • Christian Staufenbiel(允许bloch_redfield_tensor函数接受字符串和可调用对象作为a_ops#1951

  • Henrique Silvéro(允许qutip_qip作为qutip.qip导入,#1920

  • Florian Hopfmueller (添加了process_fidelityaverage_gate_fidelity的极大改进实现,#1712 , #1748 , #1788 )

  • Felipe Bivort Haiek(修正了否定密集实现文档字符串中的不准确性,#1608

  • Rajath Shetty(增加了通过qutip.Bloch指定单个点、矢量和状态显示颜色的支持,#1335

Qobj 变更

以前,Qobj 数据存储在类似 SciPy 的稀疏矩阵中。现在表示形式更加灵活。QuTiP 中包含了密集和稀疏格式的实现,并且可以自定义实现。因此,QuTiP 在密集状态和操作符上的性能显著提高。

一些亮点:

  • 数据仍然可以通过.data属性访问,但现在它是底层数据类型的实例,而不是类似SciPy的稀疏矩阵。无论数据类型如何,qutip.core.data中可用的操作都可以在.data上使用。

  • Qobj 与不同数据类型的对象可以在算术和其他操作中混合使用。系统会自动确定一个合理的输出类型。

  • 新的.to(...)方法可用于将Qobj从一种数据类型转换为另一种数据类型。例如,.to("dense")将转换为密集表示,而.to("csr")将转换为稀疏类型。

  • 许多Qobj方法和创建Qobj的方法现在接受一个dtype参数,该参数允许指定返回的Qobj的数据类型。

  • 新的 & 运算符可用于获取张量积。

  • 新的@运算符可用于获取矩阵/运算符乘积。 bar @ ket返回一个标量。

  • 新的.contract()方法将折叠Qobj维度的1D子空间。

  • 新的 .logm() 方法返回一个算子的矩阵对数。

  • 方法 .set_data, .get_data, .extract_state, .eliminate_states, .evaluate.check_isunitary 已被移除。

QobjEvo 变更

用于存储时间依赖量子对象的QobjEvo类型已经显著扩展、标准化和扩展。时间依赖系数现在使用一个新的Coefficient类型表示,如果需要,可以独立创建和操作。

一些亮点:

  • .compile() 方法已被移除。如果可能,指定为字符串的系数会自动编译,并且编译结果会在不同的 Python 运行和实例之间缓存。

  • 现在支持在单个Qobj中混合系数类型。

  • 为了方便起见,QobjEvo 添加了许多新属性。例如包括 .dims, .shape, .superrep.isconstant

  • 许多旧属性如 .cte, .use_cython, .type, .const, 和 .coeff_file 已被移除。

  • 一个新的Spline系数支持不同阶的样条插值。旧的Cubic_Spline系数已被移除。

  • 新的 .arguments(...) 方法允许更新底层系数函数的附加参数。

  • _step_func_coeff 参数已被 order 参数取代。_step_func_coeff=False 等同于 order=3_step_func_coeff=True 等同于 order=0order 的较高值会给出更高阶的样条插值。

求解器更改

QuTiP 中的求解器已经进行了大量的重做和标准化。 在底层,求解器现在使用可交换的 ODE Integrators。 包含了许多 Integrators(见下面的列表),并且可以实现自定义的实现。求解器现在一致地接受在哈密顿量或李雅普诺夫量处的 QobjEvo 实例,或者任何可以传递给 QobjEvo 构造函数的对象。

以下是亮点的详细分解。

所有求解器:

  • 求解器选项现在以普通的Python字典形式提供。 qutip.Options 已被弃用,并返回一个字典以保持向后兼容性。

  • 可以通过提供method选项来选择特定的ODE积分器。

  • 每个求解器都提供了一个类接口。创建类的实例允许为同一系统多次运行求解器,而无需重复构建要积分的ODE的右侧。

  • 大多数操作符都接受QobjEvo实例,例如, H, c_ops, e_ops, a_ops

  • 进度条现在使用progress_bar选项进行选择。 提供了一个使用tqdm Python库的新进度条。

  • 动态参数,即操作符的值取决于演化的当前状态,已被移除。如果以后有需求,可能会重新实现它们。

集成者:

  • SciPy 的 zvode 积分器可通过 BDF 和 Adams 方法使用,分别为 bdfadams

  • SciPy 的 dop853 积分器(由 Dormand 和 Prince 提出的八阶 Runge-Kutta 方法)可作为 dop853 使用。

  • SciPy 的 lsoda 积分器可以作为 lsoda 使用。

  • QuTiP 自己实现的 Verner 的“最有效”的 7 阶和 9 阶 Runge-Kutta 方法可用作 vern7vern9。有关这些方法的描述,请参见 http://people.math.sfu.ca/~jverner/

  • QuTiP 自己的求解器实现,直接对角化要积分的系统,可用作 diag。它仅适用于时间无关的系统,并且设置速度较慢,但一旦对角化完成,它生成解决方案的速度非常快。

  • QuTiP 自己实现的近似 Krylov 子空间积分器可用作 krylov。此积分器仅可与 sesolve 一起使用。

结果类:

  • 一个新的.e_data属性提供了期望值作为字典。 与.expect不同,这些值以Python列表的形式提供,而不是 numpy数组,这更好地支持非数字类型。

  • .stats 属性的内容发生了显著变化,现在在各个求解器之间更加一致。

蒙特卡洛求解器 (mcsolve):

  • 系统,H,现在可能是一个超算子。

  • seed 参数现在支持提供 numpy 的 SeedSequenceGenerator 类型。

  • 新的 timeouttarget_tol 参数允许求解器在达到超时或目标容差时提前退出。

  • ntraj 选项不再支持轨迹数量的列表。 相反,只需多次运行求解器,并在设置求解器需要大量时间时使用类 MCSolver

  • map_func 参数已被 map 选项取代。除了现有的 serialparallel 值外,还可以提供 loky 值以使用 loky 包来并行化轨迹。

  • mcsolve返回的结果现在支持计算光电流和在N个轨迹上计算稳态。

  • 旧的 parfor 并行执行函数已从 qutip.parallel 中移除。请改用 parallel_maploky_map

布洛赫-雷德菲尔德主方程求解器 (brmesolve):

  • a_opsspectra 支持的实现已经进行了大量重做,以重用来自新的 Coefficient 和 QobjEvo 类的技术。

  • use_secular 参数已被移除。请改用 sec_cutoff=-1

  • 所需的容差现在从qutip.settings中读取。

Krylov子空间求解器 (krylovsolve):

  • Krylov 求解器现在使用 SESolverkrylov ODE 积分器实现。函数 krylovsolve 为了方便而保留,并且现在支持更多的选项。

  • sparse 参数已被移除。请为哈密顿量提供一个稀疏的 Qobj

Floquet 求解器 (fsesolve 和 fmmesolve):

  • Floquet 求解器已被重写,以使用一个新的 FloquetBasis 类,该类管理从实验室基准到 Floquet 基准的转换及其反向转换。

  • 旧版Floquet求解器使用的许多内部方法已被移除。Floquet张量仍然可以通过函数floquet_tensor重新获取。

  • Floquet Markov 主方程求解器已经进行了许多更改并添加了新选项。可以使用 w_th 指定环境温度,结果状态存储在实验室基中,并可选地使用 store_floquet_state 存储在 Floquet 基中。

  • 提供给fmmesolve的光谱函数现在必须向量化 (即接受并返回频率和密度的numpy数组)并且 必须接受负频率(即通常包括一个w > 0因子 以便返回的密度在负频率时为零)。

  • 要保留的边带数量,kmax 仅在使用 FMESolver 时才能提供。

  • Tsteps 参数已从 fsesolvefmmesolve 中移除。可以使用 FloquetBasisprecompute 选项来代替。

状态求解器的演变 (essovle):

  • 函数 essolve 已被移除。请使用 diag 集成方法与 sesolvemesolve 代替。

稳态求解器(steadystate模块):

  • method 参数和 solver 参数已经被分开。之前它们混合在 method 参数中。

  • 之前的选项现在作为参数传递给稳态求解器,并且大部分传递给底层的SciPy函数。

  • 日志记录和统计信息已被移除。

相关函数(相关模块):

  • 新增了一个correlation_3op函数。它支持MESolverBRMESolver

  • correlationcorrelation_4opcorrelation_ss 函数已被移除。

  • 支持使用 mcsolve 计算相关性的功能已被移除。

传播器(propagator 模块):

  • 已为传播器添加了一个类接口,qutip.Propagator

  • 现在支持使用QobjEvo传播时间依赖系统。

  • unitary_modeparallel 选项已被移除。

相关光谱(光谱模块):

  • 函数 spectrum_ssspectrum_pi 已被移除,现在它们是内部函数。

  • use_pinv 参数已从 spectrum 中移除,其功能已合并到 solver 参数中。请使用 solver="pi" 代替。

QuTiP 核心

核心QuTiP功能还有许多其他小的变化:

  • qft(...) 返回量子傅里叶变换算子的函数已从 qutip.qip.algorithm 移动到 qutip

  • Bloch-Redfield 求解器张量 brtensor 已被移至 qutip.core。有关详细信息,请参阅上面关于 Bloch-Redfield 求解器的部分。

  • 用于将状态转换为超算子状态以及从超算子状态转换回来的函数 mat2vecvec2mat 已更名为 stack_columnsunstack_columns

  • 函数 liouvillian_ref 已被移除。请改用 liouvillian

  • 超算子转换 super_to_choi, choi_to_super, choi_to_kraus, choi_to_chichi_to_choi 已被移除。 改用 to_choi, to_super, to_krausto_chi

  • 所有的随机对象创建函数现在都接受一个numpy Generator作为种子。

  • 所有随机对象创建函数的 dims 参数已被移除。如果需要显式维度,请将维度作为第一个参数提供。

  • 函数 rand_unitary_haar 已被移除。请使用 rand_unitary(distribution="haar") 代替。

  • 函数 rand_dm_hsrand_dm_ginibre 已被移除。 请使用 rand_dm(distribution="hs")rand_dm(distribution="ginibre") 代替。

  • 函数 rand_ket_haar 已被移除。请使用 rand_ket(distribution="haar") 代替。

  • 测量函数中的target参数已被移除,该参数用于扩展测量操作符。请使用expand_operator来扩展操作符。

  • qutip.Bloch 现在支持在 add_pointadd_statesadd_vectors 中为每个点、状态或向量应用颜色。

QuTiP 设置

以前qutip.settings是一个普通的模块。现在qutip.settings是一个设置类的实例。所有核心操作的可运行时修改的设置都在qutip.settings.core中。其他设置在运行时不可修改。

  • 移除了 loadresetsave 函数。

  • 移除了 .debug, .fortran, .openmp_thresh.

  • 新的 .compile 存储了编译系数的编译选项。

  • 新的 .core["rtol"] 核心选项提供了 QuTiP 使用的默认相对容差。

  • 绝对容差设置 .atol 已移至 .core["atol"]

包重组

  • qutip.qip 已经被移动到它自己的包中,即 qutip-qip。一旦安装,qutip-qip 可以作为 qutip.qipqutip_qip 使用。一些广泛使用的门已经被保留在 qutip.gates 中。

  • qutip.lattice 已经移到了它自己的包中,qutip-lattice。可以从 获取。

  • qutip.sparse 已被移除。它包含了旧的稀疏矩阵表示,并被 qutip.data 中的新实现所取代。

  • qutip.piqs 函数不再从 qutip 命名空间中可用。它们现在可以从 qutip.piqs 访问。

杂项

  • 已添加对64位整数稀疏矩阵索引的支持,允许稀疏矩阵最多有2**63行和列。此支持需要在编译时通过调用setup.py并传递--with-idxint-64来启用。

功能移除

  • 对OpenMP的支持已被移除。如果有足够的需求和良好的组织计划,OpenMP支持可能会在未来的QuTiP版本中回归。

  • qutip.parfor 函数已被移除。请改用 qutip.parallel_map

  • qutip.graph 已被移除,并由 SciPy 的图函数替代。

  • qutip.topology 已被移除。它只包含一个函数 berry_curvature

  • ~/.qutip/qutiprc 配置文件不再受支持。它包含了OpenMP支持的设置。

QuTiP 4.7.5 (2024-01-29)

QuTiP 4.7 的补丁发布。它增加了对 SciPy 1.12 的支持。

错误修复

  • 在parallel.py中移除对scipy.的使用,与scipy==1.12不兼容(#2305由Evan McKinney提交)

QuTiP 4.7.4 (2024-01-15)

错误修复

  • 适应从matplotlib 3.8的弃用(#2243,由Bogdan Reznychenko报告)

  • 修复使用后删除的临时文件的名称。(#2251,由Qile Su报告)

  • 在Qobj创建时避免整数溢出。(#2252, 由KianHwee-Lim报告)

  • 忽略来自pyximport的DeprecationWarning (#2287)

  • 为 Python 3.12 添加部分支持和测试。(#2294)

杂项

  • 重新设计 choi_to_kraus,使其依赖于一个特征态求解器,如果 Choi 矩阵是 Hermitian 的,可以选择 eigh,因为它在数值上更稳定。(#2276,由 Bogdan Reznychenko 提供)

  • 重新设计 kraus_to_choi,使其更快 (#2283, 由 Bogdan Reznychenko 和 Rafael Haenel 完成)

QuTiP 4.7.3 (2023-08-22)

错误修复

  • 非操作 qobj + 标量会引发错误。(由 vikramkashyap 报告的 #2208)

  • 修复了extract_states未保持厄米性的问题。 修复了rand_herm未将私有属性_isherm设置为True的问题。(#2214 由 AGaliciaMartinez 提交)

  • 将平均状态解析为密度矩阵(由BenjaminDAnjou报告的#2216)

杂项

  • 从需求中排除cython 3.0.0 (#2204)

  • 在没有cython模式下运行,cython版本需大于等于3.0.0 (#2207)

QuTiP 4.7.2 (2023-06-28)

这是QuTiP 4.7.X的一个错误修复版本。它增加了对numpy 1.25和scipy 1.11的支持。

错误修复

  • 修复了在异质smesolver中设置sso.m_ops以及将sc_ops传递给光电流求解器的问题。(#2081由Bogdan Reznychenko和Simon Cross贡献)

  • 更新对SciPy的eigvalsh和eigsh的调用,使用subset_by_index=传递要返回的特征值范围。(由Simon Cross贡献,编号#2081)

  • 修复了某些矩阵被错误地识别为厄米矩阵的错误。(#2082 由 AGaliciaMartinez 提交)

其他

  • 修复了stochastic.py中的拼写错误 (#2049, 由 eltociear 提交)

  • ptrace 总是返回密度矩阵 (#2185, 由 udevd 报告的问题)

  • mesolve 可以支持混合可调用对象和 Qobj 用于 e_ops(由 balopat 提出的 #2184 问题)

QuTiP 4.7.1 (2022-12-11)

这是QuTiP 4.7.X的一个错误修复版本。除了下面列出的次要修复外,该版本还增加了对Python 3.11的构建支持以及对packaging 22.0的支持。

功能

  • 通过显式设置记录器名称来改善qutip的导入时间。(#1980)

错误修复

  • 将 floquet_master_equation_rates(…) 改为使用自适应的时间步长,该步长由边带数量 kmax 缩放。(#1961)

  • 将fidelity(A, B)更改为使用纯态的简化保真度公式,该公式在数值上更高效和准确。(#1964)

  • 当ode积分不成功时,更改brmesolve以引发异常。(#1965)

  • 从dev.major回移植修复IPython助手Bloch._repr_svg_。之前print_figure函数返回的是字节,但自从ipython/ipython#5452(2014年)以来,它返回的是Unicode字符串。此修复更新了QuTiP的助手以匹配。(#1970)

  • 修复仅当崩溃算子随时间变化时的相关性。(#1979)

  • 修复hinton可视化方法以绘制矩阵而不是其转置。(#2011)

  • 修复hinton可视化方法,以考虑所有矩阵系数来设置方块的比例,而不仅仅是考虑对角线系数。(#2012)

  • 修复setup.py中包版本的解析以支持packaging 22.0。(#2037)

  • 将.qu后缀添加回使用qsave保存并使用qload加载的对象。该后缀在QuTiP 4.7.0中意外被移除。(#2038)

  • 为处理器添加默认的max_step。(#2040)

文档

  • 添加towncrier用于管理变更日志。(#1927)

  • 将用于构建文档的numpy版本更新到1.22.0。(#1940)

  • 澄清从 bloch_redfield_tensor() 返回的对象。(#1950)

  • 更新Floquet Markov求解器文档。(#1958)

  • 更新路线图和想法,以显示截至2022年8月已完成的工作。(#1967)

杂项

  • 在sesolve参数中返回TypeError而不是Exception以处理类型错误。(#1924)

  • 将towncrier草案构建的变更日志添加到CI测试中。(#1946)

  • 将 Python 3.11 添加到构建中。(#2041)

  • 通过使用 packaging.version.Version 简化版本解析。(#2043)

  • 更新构建以使用cibuildwheel 2.11,并在Python 3.8和3.9上使用manylinux2014进行构建,因为numpy和SciPy不再支持这些Python版本的manylinux2010。(#2047)

QuTiP 4.7.0 (2022-04-13)

此版本新增了两个新的求解器——基于Krylov子空间近似的qutip.krylovsolve和重新实现BoFiN HEOM求解器的qutip.nonmarkov.heom

布洛赫球渲染增加了在球体上绘制弧线和线条的支持,并可以设置渲染点和向量的透明度,Hinton图增加了指定着色样式的支持,矩阵直方图获得了更好的默认颜色和更灵活的样式选项。

其他显著的改进包括Floquet求解器的更好扩展性,支持在保存和加载文件时传递Path对象,支持将可调用函数作为e_ops传递给mesolvesesolve,以及更快的状态数枚举和Husimi Q函数。

导入的bug修复包括一些影响使用matplotlib 3.5进行绘图的错误,并修复了对qutrits(以及其他非qubit)量子电路的支持。

许多其他小的改进、错误修复、文档增强以及幕后开发更改都包含在下面的列表中。

QuTiP 4.7.X 将是 QuTiP 4 的最后一个系列版本。4.7.X 系列将继续发布补丁版本,但主要的开发工作将转移到 QuTiP 5。

许多、许多提交问题、提交或审查拉取请求以及改进此版本文档的贡献者列在他们的贡献旁边。感谢你们所有人。

改进

  • 主要 添加了基于Krylov子空间近似的krylovsolve作为新的求解器。(#1739 由Emiliano Fortes贡献)

  • 主要 将BoFiN HEOM (https://github.com/tehruhn/bofin/) 导入到QuTiP中,并用一个兼容性包装器替换了HEOM求解器,该包装器围绕BoFiN的玻色子求解器。(#1601, #1726, 和 #1724 由Simon Cross, Tarun Raheja 和 Neill Lambert贡献)

  • 主要 增加了在布洛赫球上绘制线条和弧线的支持。(#1690 由 Gaurav Saxena, Asier Galicia 和 Simon Cross 提供)

  • 在Bloch和Bloch3d类中的add_point、add_vector和add_states方法中添加了透明度参数。(#1837 by Xavier Spronken)

  • 支持在 qutip.fileio 中使用 Path 对象。(#1813 由 Adrià Labay 提供)

  • 改进了稳态求解器中的权重设置,使默认权重与文档描述的行为相匹配,并且密集求解器以与稀疏求解器相同的方式应用权重。(#1275#1802 由 LPS 的 NS2 小组和 Simon Cross 提供)

  • hinton绘图函数添加了一个color_style选项。(#1595 by Cassandra Granade)

  • 改进了floquet_master_equation_ratesfloquet_master_equation_tensor的缩放比例,并修复了floquet_master_equation_tensorfloquet_markov_mesolve中的转置和基变换错误。(#1248 由Camille Le Calonnec、Jake Lishman和Eric Giguère提供)

  • qutip.utilities 中移除了 linspace_withview_methods。对于前者,使用 numpy.linspace 会更好,而对于后者,可以使用 Python 内置的 help 函数或其他工具。(#1680 by Eric Giguère)

  • 增加了支持将可调用函数作为e_ops传递给mesolvesesolve的功能。(#1655 by Marek Narożniak)

  • 添加了函数 steadystate_floquet,它返回周期性驱动系统的“有效”稳态。(#1660 由 Alberto Mercurio 提供)

  • 通过在不必要时不存储最终状态,提高了mcsolve的内存效率。(#1669 由 Eric Giguère 提供)

  • 改进了matrix_histogram的默认颜色和样式,并提供了额外的样式选项。(#1573#1628 由 Mahdi Aslani 提供)

  • 加速了 state_number_enumerate, state_number_index, state_index_number,并添加了一些错误检查。enr_state_dictionaries 现在返回一个 idx2state 的列表。(#1604 by Johannes Feist)

  • 新增了Husimi Q算法,提高了密度矩阵的计算速度,并在使用新的qutip.QFunc类而不是qutip.qfunc函数计算多种不同状态的Q函数时,提供了接近数量级的改进。(#934#1583 由 Daniel Weigand 和 Jake Lishman 提供)

  • 更新了关于新治理模型的许可证持有者信息,并从源文件中删除了多余的许可信息。(#1579 by Jake Lishman)

  • 移除了LaTeX的qcircuit包的供应商副本,该包是GPL许可的。我们现在依赖用户安装的包。它默认与TexLive一起安装。(#1580 by Jake Lishman)

  • rand_ket 和 rand_ket_haar 的签名已更改,以允许在指定 dims 时自动确定 N(随机 ket 的大小)。(#1509 由 Purva Thakre 提供)

错误修复

  • 修复在绘制非反转状态电路时使用的电路索引。(#1847 由 Christian Staufenbiel 提供)

  • 更改了qutip.orbital的实现,使用scipy.special.spy_harm来消除角度解释中的错误。(#1844 by Christian Staufenbiel)

  • 修复了QobjEvo.tidyup,使其在移除稀疏矩阵中的小元素时使用settings.auto_tidyup_atol。(#1832 by Eric Giguère)

  • 确保每次调用时,tidyup的默认容差从设置中读取。(#1830 由 Eric Giguère 提供)

  • 修复了由qutip.fast_csr_matrix引起的scipy.sparse弃用警告。(#1827 by Simon Cross)

  • 修复了在使用 matplotlib 3.5 及以上版本时 Bloch 球面上矢量的渲染问题。(#1818 by Simon Cross)

  • 修复了Lattice1d实例及其单元晶格的显示问题。之前在某些简单情况下调用它们会引发异常。(#1819, #1697#1702 由 Simon Cross 和 Saumya Biswas 提交)

  • 修复了当给定标题时,hintonmatrix_histogram 图的标题显示问题。之前提供的标题未显示。(#1707 由 Vladimir Vargas-Calderón 提交)

  • 移除了QubitCircuit构造函数中对初始状态维度的错误检查。这使得例如构建qutrit电路成为可能。(#1807 by Boxi Li)

  • 修复了在coherentcoherent_dm中对methodoffset参数的检查。(#1469#1741 由 Joseph Fox-Rabinovitz 和 Simon Cross 提交)

  • 移除了保存在sesolve求解器结果中的哈密顿量。(#1689 by Eric Giguère)

  • 修复了在pos_def=Truedensity>0.5时,rand_herm函数中错误填充对角线的问题。(#1562 by Eric Giguère)

文档改进

  • 在文档中添加了贡献者图片。(#1828 由 Leonard Assis 提供)

  • 修复了量子信息理论的参考文献链接。(#1840 by Anto Luketina)

  • 修复了动力学指南中的小语法错误。(#1822 by Victor Omole)

  • 修复了许多小的文档拼写错误。(#1569 by Ashish Panigrahi)

  • 将Pulser添加到使用QuTiP的库列表中。(#1570 由 Ashish Panigrahi 提供)

  • 修正了状态和操作指南中的拼写错误。(#1567 by Laurent Ajdnik)

  • 将http链接转换为https。(#1555 由 Jake Lishamn 提供)

开发者变更

  • 在windows-latest上添加GitHub操作测试运行。(#1853#1855 由Simon Cross提供)

  • 将用于构建文档的pillow版本从9.0.0升级到9.0.1。(#1835 由dependabot提供)

  • qutip.superop_reps测试迁移到pytest。(#1825 由Felipe Bivort Haiek贡献)

  • qutip.steadystates测试迁移到pytest。(#1679 由Eric Giguère完成)

  • 将README.md中的CI徽章更改为GitHub Actions徽章。(#1581 由Jake Lishman贡献)

  • 更新了CodeClimate配置,将我们的Python源文件视为Python 3。(#1577 由Jake Lishman提供)

  • qutip._mkl中减少了圈复杂度。(#1576 由 Jake Lishman 提供)

  • 修复了qutip.controlqutip.mcsolvequtip.random_objectsqutip.stochastic中的PEP8警告。(#1575 by Jake Lishman)

  • 将用于构建文档的urllib3版本从1.26.4升级到1.26.5。(#1563 由dependabot提供)

  • 已将测试移至GitHub Actions。(#1551 由 Jake Lishman 提供)

  • GitHub 贡献指南被重新添加并更新,以指向文档中更完整的指南。(#1549 由 Jake Lishman 提供)

  • 发布文档在最初的4.6.1版本之后进行了重新编写,以匹配实际的发布流程。(#1544 由 Jake Lishman 提供)

QuTiP 4.6.3 (2022-02-9)

此小版本增加了对numpy 1.22和Python 3.10的支持,并移除了一些在Apple M1上运行QuTiP的障碍。

enr_destroystate_number_enumeratehadamard_transform 函数的性能得到了显著提升(在某些常见情况下速度提高了70倍或200倍),并且 qutip.qipProcessor 中添加了对漂移哈密顿量的支持。

qutip.hardware_info 模块在添加对 Apple M1 的支持时被移除。我们希望这个很少使用的模块的移除不会对许多用户产生不利影响——它与 QuTiP 的核心功能基本无关,并且它的存在一直是导入 qutip 在新平台或更改平台时的持续障碍。

为了防止将无效的形状和维度组合传递给Cython代码时出现分段错误,添加了对Qobj维度的新检查。

此外,还有许多小的错误修复、文档改进以及我们构建和测试流程的改进。

改进

  • 在许多简单情况下,enr_destroy 函数的速度提高了约200倍。(#1593 由 Johannes Feist 提供)

  • state_number_enumerate 函数的速度显著提升。(#1594 由 Johannes Feist 贡献)

  • Processor的run_analytically方法添加了缺失的漂移哈密顿量。(#1603 Boxi Li)

  • hadamard_transform 的速度得到了显著提升,例如,对于 N=10 的情况,速度提升了约 70 倍。(#1688 由 Asier Galicia 提供)

  • 增加了对计算类似标量的Qobj的幂的支持。(#1692 由 Asier Galicia 提供)

  • 移除了hardware_info模块。该模块在QuTiP内部并未使用,并且在新操作系统发布时经常出现问题,特别是在Apple M1上阻止了QuTiP的导入。(#1754, #1758 由Eric Giguère贡献)

错误修复

  • 修复了对带有崩溃算符的密度矩阵传播子计算的支持。QuTiP 4.6.2 引入了对 mesolve 输入维度的额外检查(修复了 mesolve 在初始状态错误时的段错误 #1459),但传播子函数对 mesolve 的调用通过提供维度设置错误的初始状态违反了这些检查。propagator 现在在调用 mesolve 时设置了正确的初始状态维度。(#1588 由 Simon Cross 提交)

  • 修复了对没有崩溃算符的超算符计算传播器的支持。此功能未在测试套件中进行测试,似乎在2019年期间的某个时候出现了问题。现已添加测试并修复了代码中断问题。(#1588 by Simon Cross)

  • 修复了在pure设置为true时忽略传递给rand_dm的随机数种子的问题。(#1600 Pontus Wikståhl)

  • 修复了qutip.control.optimize_pulse对使用Qobj oper_dtype进行稀疏特征向量分解的支持(Qobj oper_dtype是大型系统的默认设置)。(#1621 by Simon Cross)

  • 移除了对scipy.sparse.csr_matrix和通用ndarray类矩阵的qutip.control.optimize_pulse支持。这些支持原本是无效的。(#1621 by Simon Cross)

  • 修复了Husimi spin_q_function和spin_wigner函数计算中的错误,并为其添加了测试。(#1632 由Mark Johnson提供)

  • 修复了Linux上OpenMP编译标志的设置。之前编译时,OpenMP函数在没有并行化的情况下被编译。(#1693 by Eric Giguère)

  • 修复了跟踪布洛赫球图和轴的状态,以防止在渲染过程中出现异常。(#1619 by Simon Cross)

  • 修复了与numpy 1.22.0版本中numpy配置的兼容性问题。(#1752 由Matthew Treinish贡献)

  • 为传递给求解器的e_ops添加了维度检查,以防止在传递错误维度的e_ops时挂起调用进程。(#1778 by Eric Giguère)

  • 在Qobj构造函数中添加了一个检查,确保data.shape的各个成员不能大于相应dims所能包含的值,以防止由于dims和shapes之间的不一致性导致的分段错误。(#1783, #1785, #1784 by Lajos Palanki & Eric Giguère)

文档改进

  • 为QubitCircuit类的num_cbits参数添加了文档。(#1652 by Jon Crall)

  • 修复了Floquet指南中调用fsesolve时的参数问题。(#1675 by Simon Cross)

  • 修复了蒙特卡罗求解器指南中关于随机数使用的描述。(#1677 由 Ian Thorvaldson 提供)

  • 修复了文档中公式编号的渲染问题(现在它们如预期出现在公式的右侧,而不是公式上方)。(#1678 by Simon Cross)

  • 更新了文档中的安装要求,以匹配setup.py中指定的内容。(#1715 by Asier Galicia)

  • 修复了chi_to_choi文档中的一个拼写错误。之前文档中混淆了chi和choi。(#1731 by Pontus Wikståhl)

  • 改进了随机方程求解器的文档。添加了带有示例的笔记本链接、API文档和外部参考资料。(#1743 by Leonardo Assis)

  • 修复了设置指南中qutip.settings的一个拼写错误。(#1786 by Mahdi Aslani)

  • 对QuTiP基础指南的文本进行了许多小的改进。(#1768 由 Anna Naden 提供)

  • 对README进行了小幅度的措辞改进。(#1790 by Rita Abani)

开发者变更

  • 改进了状态和操作符函数的测试覆盖率。(#1578 by Eric Giguère)

  • 修复了 test_interpolate mcsolve 的使用 (#1645 由 Eric Giguère 提供)

  • 确保在测试期间显式关闭图形绘图,以便在Xvfb下无头运行时测试套件能够通过。(#1648 by Simon Cross)

  • 将用于构建文档的pillow版本从8.2.0升级到9.0.0。(#1654, #1760 由dependabot提供)

  • 将用于构建文档的babel版本从2.9.0升级到2.9.1。(#1695 由dependabot提供)

  • 将用于构建文档的numpy版本从1.19.5提升到1.21.0。(#1767 由dependabot提供)

  • 将用于构建文档的ipython版本从7.22.0提升至7.31.1。(#1780 由dependabot提供)

  • 将 qutip.bib 重命名为 CITATION.bib 以启用 GitHub 的引用支持。(#1662 by Ashish Panigrahi)

  • 为simdiags添加了测试。(#1681 由 Eric Giguère 提供)

  • 增加了在CI测试矩阵中指定numpy版本的支持。(#1696 by Simon Cross)

  • 修复了如果未安装cvxpy时跳过dnorm指标测试的问题。之前所有指标测试都被意外跳过了。(#1704 by Florian Hopfmueller)

  • 在GitHub问题报告模板中添加了错误报告、功能请求和其他选项。(#1728 由 Aryaman Kolhe 提供)

  • 更新了构建过程,以支持在Python 3.10上构建,通过移除对numpy < 1.20的构建要求,并将其替换为对oldest-supported-numpy的要求。(#1747 by Simon Cross)

  • 更新了用于构建轮子的cibuildwheel版本至2.3.0。(#1747, #1751 由Simon Cross贡献)

  • 将项目URL添加到setup.cfg中,以链接到源代码仓库、问题跟踪器和文档。(#1779 由 Simon Cross 提供)

  • 在CI测试矩阵中添加了numpy 1.22和Python 3.10的构建。(#1777 by Simon Cross)

  • 在CI测试中忽略来自SciPy 1.8.0 scipy.sparse.X导入的弃用警告。(#1797 by Simon Cross)

  • 为Python 3.10添加轮子构建到cibuildwheel任务中。(#1796 由Simon Cross提供)

QuTiP 4.6.2 (2021-06-02)

此小版本增加了一个计算量子相对熵的函数,修复了在mesolve中处理时间依赖哈密顿量的一个极端情况,并在绘制或动画化Bloch球时重新支持更广泛的matplotlib版本。

它还在README中添加了一个部分,列出了在引用QuTiP时应参考的论文。

改进

  • 在README中添加了一个“引用QuTiP”部分,包含指向QuTiP论文的链接。(#1554)

  • 添加了entropy_relative,它返回两个密度矩阵之间的量子相对熵。(#1553)

错误修复

  • 修复了在使用 Matplotlib >= 3.3.0 时的 Bloch 球体失真问题。(#1496)

  • 移除了在math.factorial中使用类似整数的浮点数,因为自Python 3.9起已弃用。(#1550)

  • 简化了在布洛赫球动画教程中使用的ffmpeg调用,以适应最新版本的ffmpeg。(#1557)

  • 移除了布洛赫球FuncAnimation示例中的位块传输。(#1558)

  • 添加了一个版本检查条件,以根据matplotlib版本处理特定功能。(#1556)

  • 修复了mesolve处理具有自定义tlist和c_ops的时间依赖哈密顿量的问题。(#1561)

开发者变更

  • 从VERSION文件中读取文档版本和发布信息。

QuTiP 4.6.1 (2021-05-04)

这个小版本修复了QIP门定义中的错误,修复了在没有安装git时从源代码tarball构建的问题,并解决了SciPy版本<= 1.4中的MKL错误。

它还添加了[full] pip安装目标,以便pip install qutip[full]安装qutip及其所有可选和开发者依赖项。

改进

  • 添加 [full] pip 安装目标(由 Jake Lishman 提供)

错误修复

  • 解决SciPy <= 1.4中指针MKL eigh的错误(由Felipe Bivort Haiek提供)

  • 修复berkeley、swapalpha和cz门操作(由Boxi Li完成)

  • 公开CPHASE控制门(由Boxi Li提供)

  • 修复在没有安装git时从sdist构建的问题(由Jake Lishman完成)

开发者变更

  • 将 qutip-doc 文档移动到 qutip 仓库中(由 Jake Lishman 完成)

  • 修复文档构建中的警告(由Jake Lishman完成)

  • 修复pytest运行中的警告并使pytest将警告视为错误(由Jake Lishman完成)

  • 添加Simon Cross为作者(由Simon Cross

QuTiP 4.6.0 (2021-04-11)

此版本带来了量子比特电路的改进,包括脉冲调度器、测量统计、读取/写入OpenQASM以及电路模拟中的优化。

这是第一个在pip上提供完整二进制轮发布的版本;现在您几乎可以在任何机器上执行pip install qutip来获取正确版本的包,而无需设置任何编译器。 QuTiP 4.5.3中首次添加的对Numpy 1.20的支持也存在于这个版本中,并且那里提到的相同构建考虑也适用于这里。 如果使用现在支持的PEP 517机制进行构建(例如python -mbuild /path/to/qutip),所有构建依赖项都将得到正确满足。

改进

  • 主要 添加保存、加载和重置功能到 qutip.settings 以便于重新配置。(由 Eric Giguère 提供)

  • 主要qutip.qip.scheduler 中添加一个量子门调度器,以帮助并行化量子门的操作。这支持两种调度模式:尽可能晚和尽可能早。(由 Boxi Li 提供)

  • 主要 改进了量子比特电路模拟器,包括支持OpenQASM和性能优化。(由Sidhant Saraogi贡献)

  • MAJOR 添加用于量子测量及其统计的工具。(由 Simon CrossSidhant Saraogi 提供)

  • 添加对Numpy 1.20的支持。QuTiP应编译为Numpy版本>= 1.16.6< 1.20(注意:不包括1.20本身),但这样的安装与任何现代版本的Numpy兼容。从pip进行的源代码安装理解此约束。

  • 改进电路绘图失败时的错误信息。(由Boxi Li提供)

  • 添加对解析M1 Mac硬件信息的支持。(由Xiaoliang Wu提供)

  • 添加更多的单量子比特门和控制门。(由Mateo LagunaMartín Sande Costa完成)

  • 支持在电路中分解XYZ门。(由Boxi Li提供)

  • 重构 QubitCircuit.resolve_gate() (由 Martín Sande Costa 完成)

错误修复

  • 修复了在超算符上从Qobj.eigenstates返回的dims。(由Jake Lishman完成)

  • Qobj上调用Numpy ufuncs现在会正确地引发TypeError,而不是返回一个无意义的ndarray。(由Jake Lishman贡献)

  • 在创建过大的张量积时将段错误转换为Python异常。(由Jake Lishman完成)

  • 正确设置mesolve输出中的num_collapse。(由Jake Lishman提供)

  • 修复当所有子空间都被保留时,或子空间按顺序传递时的ptrace。(由Jake Lishman完成)

  • 修复了Bloch3d.add_points()中的排序错误。(由pschindler完成)

  • 修复文档字符串中的无效字符串字面量以及一些未关闭的文件。(由Élie Gouzien完成)

  • 修复了对于值在0的容差范围内的矩阵的Hermicity测试。(由 Jake Lishman 提供)

  • 修复了小矩阵的迹范数被错误地报告为0的问题。(由Jake Lishman贡献)

  • 修复在使用CVXPy 1.1与稀疏矩阵时dnorm的问题。(由Felipe Bivort Haiek贡献)

  • 修复了在传递错误的初始Qobj作为状态时,mesolve中的段错误。(由Jake Lishman完成)

  • 修复在使用Scipy 1.6.1时PIQS中的稀疏矩阵构建问题。(由Drew Parsons贡献)

  • 修复 zspmv_openmp.cpp 在 pip sdist 中缺失的问题。(由 Christoph Gohlke 提供)

  • 修复相关函数丢弃虚部的问题。(由Asier Galicia Martinez贡献)

  • 修复了用于SWAP门的QubitCircuit.add_circuit()。(由Canoming完成)

  • 修复损坏的LaTeX图像转换。(由Jake Lishman完成)

  • 修复FREDKIN门的门分辨率。(由Bo Yang完成)

  • 修复文档字符串中的格式错误。(由Jake Lishman完成)

弃用

  • eseries, essolveode2es 都已弃用,预计在 QuTiP 5.0 中移除。这些是遗留的函数和类,已经长时间未维护,现在使用 QobjEvomesolve 可以更好地实现它们的功能。

开发者变更

  • 重大更新 对设置和打包代码进行了全面检修,使其符合PEP 517标准,并将构建转移到GitHub Actions的矩阵上,以便在pip上为所有主要平台和支持的Python版本发布二进制轮子。(由Jake Lishman完成)

  • Qobj 中的默认参数现在是 None 而不是可变类型。(由 Jake Lishman 提供)

  • 修复了用于参数化某些测试的消耗性迭代器,防止测试套件在同一会话中重新运行。(由Jake Lishman提供)

  • 移除未使用的导入,简化一些浮点数并移除不必要的列表转换。(由 jakobjakobson13 提供)

  • 改进Travis作业矩阵以指定测试容器。(由Jake Lishman提供)

  • 修复Travis上的覆盖率报告。(由Jake Lishman完成)

  • 添加了一个pyproject.toml文件。(由Simon HumpohlEric Giguère完成)

  • 向文档添加doctests。(由Sidhant Saraogi提供)

  • 修复文档构建中的所有警告。(由Jake Lishman完成)

QuTiP 4.5.3 (2021-02-19)

此补丁版本增加了对Numpy 1.20的支持,这是由于处理类似数组对象的方式发生了变化所必需的。相对于版本4.5.2,没有其他更改。

从源代码构建的用户应确保他们构建的Numpy版本大于等于1.16.6且小于1.20(不包括1.20本身),但对于那些通过conda安装的用户,安装后将支持任何大于等于1.16.6的当前Numpy版本。

改进

  • 添加对Numpy 1.20的支持。QuTiP应编译为Numpy版本>= 1.16.6< 1.20(注意:不包括1.20本身),但这样的安装与任何现代版本的Numpy兼容。从pip进行的源代码安装理解此约束。

QuTiP 4.5.2 (2020-07-14)

这主要是一个热修复版本,用于添加对Scipy 1.5的支持,因为QuTiP也使用的私有稀疏矩阵函数发生了变化。

改进

  • 添加对Scipy 1.5的支持。(由Jake Lishman提供)

  • 提高了zcsr_inner的速度,这影响了Qobj.overlap。(由Jake Lishman完成)

  • 当安装要求未满足时,提供更好的错误信息。(由Eric Giguère提供)

错误修复

  • 修复 zcsr_proj 作用于具有未排序索引的矩阵的问题。(由 Jake Lishman 完成)

  • 修复Milstein的异差错误。(由Eric Giguère完成)

  • 修复qutip.lattice模块中的数据类型错误。(由Boxi Li完成)

  • 修复在Mac上使用OpenBLAS时eigh的问题。(由Eric Giguère完成)

开发者变更

  • 将更多的代码库转换为PEP 8。

  • 修复了几个不安全的可变默认值和不安全的is比较的实例。

QuTiP 4.5.1 (2020-05-15)

改进

  • husimiwigner 现在接受半整数自旋(由 maij 提供)

  • 为字符串系数编译失败提供更好的错误信息。(问题由nohchangsuk提出)

错误修复

  • 为临时文件提供更安全的命名。(由Eric Giguère提供)

  • 修复 clebsch 函数以处理半整数(由 Thomas Walker 完成)

  • 修复 randint 的 dtype 为 uint32 以兼容 Windows。(问题由 Boxi Li 提出)

  • 修正了随机外差的m_ops(由eliegenois完成)

  • Mac池使用spawn。(问题由goerz提出)

  • 修复了QobjEvo._shift中的拼写错误。(由Eric Giguère完成)

  • 修复Travis CI上的警告。(由Ivan Carvalho提供)

弃用

  • qutip.graph 函数将在 QuTiP 5.0 中被弃用,转而使用 scipy.sparse.csgraph

开发者变更

  • 将Boxi Li添加到作者列表中。(由Alex Pitchford提供)

  • 跳过一些在Mac上导致段错误的测试。(由Nathan ShammahEric Giguère完成)

  • 在Mac和Linux上使用Python 3.8进行测试。(由Simon CrossEric Giguère提供)

QuTiP 4.5.0 (2020-01-31)

改进

  • 主要功能: 添加了qip.noise模块,该模块提供了量子电路的脉冲级描述,允许模拟各种类型的噪声和设备(由Boxi Li贡献)。

  • 主要功能: 添加了qip.lattice模块,用于研究一维晶格动力学(由Saumya Biswas贡献)。

  • 已将测试从Nose迁移到PyTest(由Tarun Raheja完成)。

  • 优化了PyTest的测试并移除了重复的测试运行器(由Jake Lishman完成)。

  • 已弃用将qip函数导入到qutip命名空间(由Boxi Li完成)。

  • 增加了定义与量子电路相关的非平方超算子的可能性(由Arne GrimsmoJosh Combes贡献)。

  • 隐式张量积适用于 qeyeqzerobasis(由 Jake Lishman 提供)。

  • QObjEvo 不再需要 Cython 来处理字符串系数(由 Eric Giguère 提供)。

  • testing.run()中添加了标记测试以加快测试速度,并在CI中加快了OpenMP基准测试(由Eric Giguère完成)。

  • 为Dicke密度矩阵添加了熵和纯度,重构为更通用的dicke_trace(由Nathan Shammah完成)。

  • 在Bloch.save函数中添加了指定分辨率的选项(由Tarun Raheja提供)。

  • 添加了与wignercontinuous_variables中hbar值相关的信息(由Nicolas Quesada提供)。

  • 更新了scipy 1.4的要求(由Eric Giguère提供)。

  • 将之前的首席开发人员添加到 qutip.about() 消息中(由 Nathan Shammah 完成)。

  • Qobj进行了改进,引入了inv方法,并使部分迹ptrace更快,同时保留了稀疏和密集方法(由Eric Giguère贡献)。

  • 允许通用的可调用对象定义时间依赖的哈密顿量(由Eric Giguère提供)。

  • 添加了功能,使得QobjEvo不再需要Cython来处理字符串系数(由Eric Giguère贡献)。

  • 更新了Github上的作者列表并添加了my binder链接(由Nathan Shammah提供)。

错误修复

  • 修复了PolyDataMapper的构造,用于Bloch3d(由Sam Griffiths完成)。

  • 修复了essolve中空矩阵的错误检查(由Nathan Shammah完成)。

  • 修复了并行传播器的名称冲突(由Nathan Shammah完成)。

  • 修复了propagator中的维度不一致问题(由Nathan Shammah完成)

  • 通过基于长整数分数重写clebsch函数修复了bug(由Eric Giguère完成)。

  • 修复了QobjEvo的args依赖于状态的错误,并添加了使用它们的求解器测试(由Eric Giguère完成)。

  • 修复了在sesolve计算平均状态时,对时间段状态求和时的错误(由Alex Pitchford完成)。

  • 通过移除MKL和Scipy的单独参数,修复了steadystate求解器中的错误(由Tarun Raheja完成)。

  • 通过设置plot_points中的edgecolor = None修复了Bloch.add_ponts(由Nathan Shammah完成)。

  • 修复了essolve求解器中空矩阵的错误检查,这也影响了ode2es(由Peter Kirton完成)。

  • 移除了 .pyx 和 .pxd 文件中不必要的 shebangs(由 Samesh Lakhotia 完成)。

  • 修复了sesolve和在codegen中导入os的问题(由Alex Pitchford完成)。

  • 更新了plot_fock_distribution,移除了图中的偏移值0.4(由Rajiv-B完成)。

QuTiP 4.4.1 (2019-08-29)

改进

  • QobjEvo 不再需要从 0 开始(由 Eric Giguère 提供)。

  • 添加一个量子对象纯度函数(由Nathan ShammahShahnawaz Ahmed提供)。

  • 为数组时间系数添加阶梯函数插值(由Boxi Li完成)。

  • 将expand_oper推广到任意维度,并为给定目标量子比特的循环排列提供新方法(由Boxi Li提供)。

错误修复

  • 修复了pickling问题,但这使得solver在Windows上无法并行运行(感谢lrunze的报告)

  • 当mesolve回退到sesolve时移除警告(由Michael Goerz完成)。

  • 修复了随机ket中的维度检查和令人困惑的文档(由Yariv Yanay完成)。

  • 修复了在使用 Qobj.permute 后 Qobj isherm 无法正常工作的问题(感谢 llorz1207 的报告)。

  • 相关函数调用现在能够正确处理多个时间依赖函数(感谢taw181的报告)。

  • 移除了mesolve/sesolve中的可变默认值(由Michael Goerz完成)。

  • 修复了simdiag错误(感谢Croydon-Brixton的报告)。

  • 更好地支持常量 QobjEvo(由 Boxi Li 提供)。

  • 修复了控制模块中潜在的循环导入问题(由Alexander Pitchford完成)。

QuTiP 4.4.0 (2019-07-03)

改进

  • 主要特性: 向随机求解器添加了方法和技术(由Eric Giguère提供),这使得可以使用更广泛的求解器集并且效率更高。

  • 主要功能: 蒙特卡洛求解器的优化(由Eric Giguère完成)。在许多情况下,计算速度更快。将可用信息压缩为时间依赖信息。

  • 添加了QObjEvo类和方法(由Eric Giguère提供),这些类和方法在动态求解器背后使用,使代码更高效和整洁。更多内置函数可用于字符串系数。

  • 系数可以从具有可变时间步长的插值数组中生成,并且可以更容易地获取状态信息。时间相关的崩溃算子可以包含多个项。

  • 新增了wigner_transform和plot_wigner_sphere函数。(由Nithin Ramu贡献)。

  • ptrace 更快,适用于更大的系统,从 15 Qbits 到 30 Qbits。

  • QIP模块:增加了用户自定义门的可能性,增加了在已构建电路的任何点移除或添加门的可能性,添加了molmer_sorensen门,并修复了一些错误(由Boxi Li完成)。

  • 在qutip.metrics中添加了量子Hellinger距离(由Wojciech Rzadkowski贡献)。

  • 实现了选择随机种子的可能性(由Marek Marekyggdrasil贡献)。

  • 在Github上添加了行为准则。

错误修复

  • 修复了导致QuTiP与SciPy 1.3不兼容的错误。

QuTiP 4.3.0 (2018-07-14)

改进

  • 主要特性: 添加了置换不变量子求解器(PIQS)模块(由Nathan ShammahShahnawaz Ahmed开发),该模块允许模拟包括集体和局部Lindblad耗散在内的大规模TLS集合。应用范围从超辐射到自旋压缩。

  • 主要功能:添加了一个光子散射模块(由Ben Bartlett开发),该模块可用于研究与某些输出波导配置耦合的任意驱动系统中的散射。

  • 现在允许将Cubic_Spline函数作为时间依赖参数用于mesolve中的崩溃操作符。

  • 添加了一个更快的bloch_redfield_tensor版本,使用了时间依赖版本的组件。对于世俗张量,速度提高了约3倍以上,对于非世俗张量,速度提高了约10倍以上。

  • 计算 Q.overlap() [内积] 现在快了约30倍。

  • 向Qobj类添加了投影仪方法。

  • 添加了快速投影方法,Q.proj()

  • 计算矩阵元素,Q.matrix_element 现在快了约10倍。

  • 使用expect计算ket向量的期望值现在快了约10倍。

  • Q.tr() 现在对于小的希尔伯特空间维度更快。

  • 单一运算符演化已添加到sesolve

  • 如果已安装,请使用OPENMP进行整理。

错误修复

  • 修复了阻止simdiag在Python 3中工作的错误。

  • 修复了半定cvxpy变量和参数。

  • 修复了迭代LU求解中的atol关键字问题。

  • 修复了ssesolve中的单一操作演化右侧矩阵。

  • 修复了插值函数以在范围外返回零。

  • 修复了dnorm复杂转换的错误。

  • 修复了control.io路径检查问题。

  • 修复了ENR Fock维度。

  • 修复了传播器‘batch’模式中的硬编码选项

  • 修复了非厄米算子的迹范数中的错误。

  • 修复了与未将args传递给coherence_function_g2相关的错误

  • 修复了MKL错误检查字典键错误

QuTiP 4.2.0 (2017-07-28)

改进

  • 主要功能: 时间依赖的Bloch-Redfield求解器的初步实现。

  • Qobj 整理现在快了一个数量级。

  • 时间相关的代码生成现在可以更快地生成输出NumPy数组。

  • 改进了相干态中分析系数的计算(Sebastian Kramer)。

  • 输入数组到相关FFT方法现在已检查有效性。

  • 基于函数的时间相关mesolve和sesolve例程现在更快。

  • Codegen 现在确保除法是在 C 中完成的,而不是在 Python 中。

  • 现在可以为量子优化中的每个时间段设置不同的控制。 这允许在脉冲优化中使用时变控制。

错误修复

  • rcsolve 导入旧的 Odeoptions 类而不是 Options。

  • 自旋Q和Wigner函数中的非整数问题。

  • Qobj 在确定 isherm 之前应该进行整理。

  • 修复了在Windows上加载固定时间依赖的RHS函数的问题。

  • 修复了使用Cython 0.26编译时的几个问题。

  • Liouvillian 超算符默认情况下很难设置 isherm=True。

  • 修复了在输入包含Python函数作为时间依赖性的列表时,求解器安全检查的问题。

  • 修复了Wigner_cmap中的非整数问题。

  • MKL 求解器错误处理未正常工作。

QuTiP 4.1.0 (2017-03-10)

改进

核心库

  • 主要功能: QuTiP 现在可以在使用 Visual Studio 2015 的 Windows 上运行 Python 3.5+。

  • 主要特性: 为了与MS Windows兼容,Cython和其他低级代码已切换到C++。

  • 主要功能: 现在可以使用插值三次样条作为时间依赖系数。

  • 主要特性: 稀疏矩阵 - 向量乘法现在使用OPENMP并行化。

  • 自动调整OPENMP线程阈值。

  • 部分跟踪功能现在快了100倍以上。

  • Hermitian 验证现在快了 100 倍以上。

  • 内部 Qobj 对象的创建速度现在提高了 60 倍。

  • 从COO到CSR稀疏格式的就地转换(例如,内存效率提升。)

  • 更快的反向Cuthill-Mckee算法和稀疏一范数及无穷范数。

错误修复

  • 临时Cython文件的清理现在更加健壮,并且在Windows下也能正常工作。

QuTiP 4.0.2 (2017-01-05)

错误修复

  • td 文件不再被相关性测试遗漏

  • 各种快速稀疏修复

QuTiP 4.0.0 (2016-12-22)

改进

核心库

  • 主要特性: 快速稀疏:新增了csr_matrix的子类,重写了常用方法以避免某些导致执行成本增加的检查。所有Qobj.data现在都是fast_csr_matrix

  • HEOM性能增强

  • spmv 现在更快了

  • mcsolve codegen 进一步优化

控制模块

  • 时间依赖漂移(通过pwc动力学生成器列表)

  • 为control.dynamics提供的内存优化选项

错误修复

  • 首次导入时重新编译pyx文件的功能已移除

  • control.pulseoptim 函数中的 tau 数组现在可以正常工作了

QuTiP 3.2.0

(从未正式发布)

新功能

核心库

  • 主要特性: 非马尔可夫求解器:层次结构(由Neill Lambert添加)、记忆级联和转移张量方法。

  • 主要功能:在Anaconda和Intel Python发行版下,使用Intel Pardiso库的默认稳态求解器现在速度提高了100倍。

  • 默认的Wigner函数现在使用Clenshaw求和算法来评估适用于任意数量激发的多项式级数(之前的限制约为50个量子),并且比以前快约3倍。(由Denis Vasilyev添加

  • 现在可以为随机厄米特算子和密度算子定义给定的特征谱。

  • Qobj 的 expm 方法现在使用等效的 SciPy 例程,如果矩阵是对角矩阵,则执行更快的 exp 操作。

  • 现在可以使用qzero函数构建零运算符。

控制模块

  • 主要功能: 添加了CRAB算法 这是GRAPE算法的替代方案,它允许使用分析控制函数,这意味着可以更容易地将实验约束添加到优化中。 有关完整信息,请参阅教程笔记本。

改进

核心库

  • 现在可以为完全时间依赖的哈密顿量和坍缩算子计算双时间相关函数。(由Kevin Fischer添加

  • 稳态求解器的逆幂法代码已被简化。

  • Bloch-Redfield张量创建现在快了一个数量级。(由Johannes Feist添加

  • Q.transform 现在可以直接处理来自 sp_eigs(或 eig)的数组。

  • Q.groundstate 现在会检查简并性。

  • 向 Qobj 类添加了 sinmcosm 方法。

  • 添加了chargetunneling操作符。

  • 现在,时间依赖的Cython代码更易于阅读和调试。

控制模块

  • 内部状态/量子算子数据类型现在可以是Qobj或ndarray 以前只有ndarray是可能的。这现在开启了在保真度计算中使用Qobj方法的可能性 返回这些算子的属性和函数现在前面加了下划线,以表示数据类型可能会根据配置选项而变化。 在大多数情况下,这些函数仅用于内部处理,应该是“私有的”。 已经添加了可能对库外部有用的属性的访问器。这些访问器总是返回Qobj。如果内部算子数据类型不是Qobj,那么在转换过程中可能会有显著的开销,因此在脉冲优化期间应避免这种情况。 如果开发了使用Qobj属性和方法(例如部分迹)的自定义子类,那么将内部数据类型设置为Qobj很可能会更高效。 内部算子数据将根据动力学生成器的大小和稀疏性自动选择。可以通过设置dynamics.oper_dtype = 来强制选择 请注意,这可以通过在任何pulseoptim函数中传递dyn_params={'oper_dtype':}来完成。

    同时,一些其他属性和方法也被重命名。这里提供了完整的列表。

    • 所有模块 - 函数: set_log_level -> 属性: log_level

    • 动态函数

      • _init_lists 现在 _init_evo

      • get_num_ctrls 现在是属性: num_ctrls

      • get_owd_evo_target 现在是属性: onto_evo_target

      • combine_dyn_gen 现在改为 _combine_dyn_gen(不再返回值)

      • get_dyn_gen 现在 _get_phased_dyn_gen

      • get_ctrl_den_gen 现在 _get_phased_ctrl_dyn_gen

      • ensure_decomp_curr 现在 _ensure_decomp_curr

      • spectral_decomp 现在 _spectral_decomp

    • 动态属性

      • evo_init2t 现在 _fwd_evo (fwd_evo 作为 Qobj)

      • evo_t2end 现在 _onwd_evo (onwd_evo 作为 Qobj)

      • evo_t2targ 现在 _onto_evo (onto_evo 作为 Qobj)

    • fidcomp 属性

      • uses_evo_t2end 现在 uses_onwd_evo

      • uses_evo_t2targ 现在 uses_onto_evo

      • set_phase_option 函数现在正确设置了 phase_option 属性

    • propcomp 属性

      • grad_exact(现在为只读)

    • propcomp 函数

      • compute_propagator 现在 _compute_propagator

      • compute_diff_prop 现在 _compute_diff_prop

      • compute_prop_grad 现在 _compute_prop_grad

    • tslotcomp 函数

      • get_timeslot_for_fidelity_calc 现在 _get_timeslot_for_fidelity_calc

杂项

  • QuTiP Travis CI 测试现在使用 Anaconda 发行版。

  • about 框和 ipynb version_table 现在显示额外的系统信息。

  • 更新了Cython清理以移除sysconfig中的弃用警告。

  • 更新了ipynb_parallel以在V4版本的notebooks中查找ipyparallel模块。

错误修复

  • 修复了countstat和伪逆函数

  • 修复了32位系统上的Qobj除法测试。

  • 在时间相关的Cython代码中移除了对Python的额外调用。

  • 修复了重复保存布洛赫球的问题。

  • 修复了T_0三重态未正确归一化的问题。(由Eric Hontz修复

  • 简化的编译器标志(支持ARM系统)。

  • 修复了qload中的解码错误。

  • 修复了使用complex.h数学和np.kind_t变量时的问题。

  • 修正了mcf90求解器中ntraj=1的输出状态不匹配问题。

  • Qobj 数据现在默认复制以避免乘法中的错误。(由 Richard Brierley 修复

  • 修复了在__init__中覆盖hardware_info的bug。(由Johannes Feist修复

  • 恢复了显式设置 Q.isherm、Q.type 和 Q.superrep 的能力。

  • 修复了来自NumPy 的整数折旧警告。

  • Qobj * (密集向量) 将导致递归循环。

  • 修复了 args=None -> args={} 在相关函数中以兼容 mesolve。

  • 修复了mcsolve中的折旧警告。

  • 修复了rand_ket中仅负实部的问题。

  • 修复了超级操作符表示中的一个复杂的列表-转换-映射-列表反模式。(由Stefan Krastanov修复

  • 修复了sigmam自旋算子的isherm错误。

  • 修复了在mesolvesesolve中使用final_state_output时的维度问题。

QuTiP 3.1.0 (2015-01-01)

新功能

  • 主要功能: 新增量子控制模块 (qutip.control)。

  • 命名空间变更: QuTiP 不再从 NumPy 和 matplotlib 导出符号,因此现在在需要时必须显式导入这些模块。

  • 用于统计计数的新模块。

  • 随机求解器现在可以并行运行轨迹。

  • 新的超算符和张量操作函数 (super_tensor, composite, tensor_contract)。

  • 用于调试的新日志模块 (qutip.logging)。

  • 新用户可用的并行化API(parallel_map)。

  • 新的增强型(可选)基于文本的进度条 (qutip.ui.EnhancedTextProgressBar)

  • 基于Python的更快蒙特卡洛求解器(mcsolve)。

  • 支持在传播器函数中使用进度条。

  • 现在,时间相关的Cython代码调用复杂的cmath函数。

  • 现在可以重复使用随机数种子来连续调用mcsolve。

  • Bloch-Redfield主方程求解器现在支持可选的Lindblad类型坍缩算子。

  • 改进了mesolve中ODE积分错误的处理。

  • 改进的相关函数模块(例如,改进了对时间依赖问题的支持)。

  • 改进了mcsolve的并行化(现在可以轻松中断,支持IPython.parallel等)

  • 许多性能改进,以及大量的内部代码重构。

错误修复

  • 现在自动删除了时间依赖字符串格式的Cython构建文件。

  • 修复了逆幂法稳态求解器中不正确解的时间。

  • mcsolve 现在支持 Options(store_states=True)

  • 修复了hadamard门函数中的错误。

  • 修复了与NumPy 1.9.0的兼容性问题。

  • mcsolve中的进度条现在可以被抑制。

  • 修复了gate_expand_3toN中的错误。

  • 修复了时间依赖问题(列表字符串格式)中系数到运算符的多个项的bug。

QuTiP 3.0.1 (2014-08-05)

错误修复

  • 修复了create()中的错误,该错误返回了一个带有CSC数据而不是CSR的Qobj。

  • 修复了mcsolve中的几个错误:崩溃时间和崩溃操作符记录的错误存储。当仅使用1个CPU时,不同轨迹的期望值平均计算错误。

  • 修复在解析时间依赖的哈密顿量/崩溃算子参数时出现的错误,该错误发生在args参数不是字典的情况下。

  • 修复内部 _version2int 函数中的错误,该错误在解析 Cython 包的版本号时导致失败。

QuTiP 3.0.0 (2014-07-17)

新功能

  • 新模块 qutip.stochastic 包含随机主方程和随机薛定谔方程求解器。

  • 扩展的稳态求解器。函数 steady 已被弃用,推荐使用 steadystate。稳态求解器默认不再使用 umfpack。新的预处理方法用于重新排序和平衡线性方程组,这些方法用于直接求解稳态。

  • 新模块 qutip.qip 包含用于量子信息处理的实用工具, 包括预定义的量子门以及将任意1、2和3量子比特门扩展到N量子比特寄存器的函数, 电路表示,量子算法库,以及一些常见QIP架构的基本物理模型。

  • 新模块 qutip.distributions 提供了统一的API用于处理分布函数。

  • 用于定义时间依赖的哈密顿量和崩溃算符的新格式,使用预先计算的numpy数组来指定每个时间步的Qobj系数的值。

  • 用于处理不同超算子表示的新函数,包括Kraus和Chi表示。

  • 用于使用Qubism和Schimdt图可视化量子态的新函数: plot_qubismplot_schmidt

  • 动力学求解器现在支持以字典形式接受参数 e_ops(期望值运算符)。

  • 来自qutip.visualization模块的公共绘图函数现在以plot_为前缀(例如,plot_fock_distribution)。plot_wignerplot_wigner_fock_distribution现在除了支持等高线视图外,还支持3D视图。

  • 新的API和用于处理自旋算符和状态的新函数, 例如spin_Jx, spin_Jy, spin_Jzspin_state, spin_coherent

  • 现在,expect 函数除了之前支持的状态列表外,还支持操作符列表。

  • 使用ket函数简化量子比特状态的创建。

  • 模块 qutip.cyQ 已更名为 qutip.cy,并且稀疏矩阵-向量函数 spmvspmv1d 已合并为一个函数 spmv。新增了直接操作底层稀疏 CSR 数据的函数(例如 spmv_csr)。性能有所提升。新增和改进的 Cython 函数用于计算状态向量、矩阵和向量形式的密度矩阵的期望值。

  • concurrence 函数现在支持纯态和混合态。增加了计算双量子比特门纠缠能力的功能。

  • 添加了用于生成(广义)Lindblad耗散超算符的函数。

  • 用于生成贝尔态、单态和三重态的新函数。

  • QuTiP 不再包含演示 GUI。示例现在可以在 QuTiP 网站上找到。qutip.gui 模块已更名为 qutip.ui,并且不再包含图形用户界面元素。新增了基于文本和 HTML 的进度条类。

  • 支持在Fock态基中不从零开始的谐振子算子/态(例如,在范围[M,N+1]内)。支持从Qobj实例中消除和提取态(例如,从两量子比特系统中移除一个态以获得三能级系统)。

  • 支持依赖于瞬时状态的时间相关哈密顿量和李维利安回调函数,例如可以用于求解带有平均场项的主方程。

改进

  • 对Qobj进行了重构和优化实现,现在由于避免了内部矩阵数据的过度复制,内存占用显著降低。

  • OdeData, Odeoptions, Odeconfig 现在分别称为 Result, Options, 和 Config,并且在模块 qutip.solver 中可用。

  • squeez 函数已更名为 squeeze

  • 在使用propagator函数计算传播器时,更好地支持稀疏矩阵。

  • 改进的布洛赫球。

  • 重构并改进了模块 qutip.sparse,现在它仅直接操作稀疏矩阵(而不是 Qobj 实例)。

  • 改进并简化了tensor函数的实现。

  • 性能改进,主要代码清理(包括命名空间更改),以及众多错误修复。

  • 基准测试脚本已改进并重新结构化。

  • QuTiP 现在正在使用持续集成测试(TravisCI)。

QuTiP 2.2.0 (2013-03-01)

新功能

  • 新增对Windows的支持

  • 用于使用Mayavi绘制3D Bloch球体的新Bloch3d类。

  • 布洛赫球向量现在看起来像箭头。

  • 部分转置函数。

  • 连续变量函数用于计算相关性和协方差矩阵,Wigner协方差矩阵以及Fock基中多模场的对数负性。

  • 主方程求解器(mesolve)现在接受预构建的Liouvillian项,这使得求解不在标准Lindblad形式上的主方程成为可能。

  • 可选的Fortran蒙特卡罗求解器(mcsolve_f90)由Arne Grimsmo提供。

  • 一个用于在IPython笔记本中使用QuTiP的工具模块。

  • 稳态求解器的性能提升。

  • 用于突出显示负值的新Wigner颜色映射。

  • 为可视化模块添加更多图形样式。

错误修复

  • 基于函数的时间依赖哈密顿量现在保持正确的相位。

  • 如果ntraj=1,mcsolve不再打印到命令行。

QuTiP 2.1.0 (2012-10-05)

新功能

  • 基于拉盖尔多项式生成维格纳函数的新方法。

  • coherent(), coherent_dm(), 和 thermal_dm() 现在可以使用解析值来表示。

  • 单元测试现在使用nose,可以在安装后运行。

  • 添加了iswap和sqrt-iswap门。

  • 用于量子过程断层扫描的函数。

  • 窗口图标现在已设置为Ubuntu应用程序启动器。

  • 传播函数现在可以将时间列表作为参数,并返回相应的传播器列表。

错误修复

  • mesolver 现在正确地使用了用户在 Odeoptions() 中定义的 rhs_filename。

  • rhs_generate() 现在能够正确处理用户定义的文件名。

  • 由propagator_steadystate返回的密度矩阵现在是厄米矩阵。

  • 如果所有虚部为零,eseries_value 返回实数列表。

  • mcsolver 现在能够正确计算强阻尼率的结果。

  • Odeoptions 现在正确打印 mc_avg。

  • 当gui=False时,不要在mcsolve中检查PyObj。

  • Eseries 现在能够正确处理纯复数利率。

  • thermal_dm() 函数现在使用截断运算符方法。

  • 基于Cython的时间依赖性现在与Python 3兼容。

  • 在Mac系统上移除了对NSAutoPool的调用。

  • 进度条现在显示使用的CPU数量的正确信息。

  • 如果操作符是厄米特矩阵,Qobj.diag() 返回实数。

  • Linux系统上的进度条文本不再被截断。

QuTiP 2.0.0 (2012-06-01)

QuTiP 的第二版在原始代码库的性能上有了许多改进,并且增加了几个支持广泛功能的新例程。此版本的一些亮点包括:

新功能

  • QuTiP 现在包含用于 Floquet 和 Bloch-Redfield 主方程的求解器。

  • Lindblad主方程和蒙特卡罗求解器允许使用时间相关的坍缩算子。

  • 可以使用Cython(如果已安装)自动将时间依赖问题编译为c代码。

  • Python 函数可用于创建任意时间依赖的哈密顿量和崩溃操作符。

  • 求解器现在返回包含所有模拟结果和参数的Odedata对象,简化了模拟结果的保存。

重要

这与QuTiP 1.x版本不兼容。

  • mesolve 和 mcsolve 可以在仅需要更改初始状态或时间相关参数时重用哈密顿量数据。

  • QuTiP 包含用于创建随机量子态和算符的函数。

  • 量子对象的生成和操作现在更加高效。

  • 量子对象具有基础变换和矩阵元素计算作为内置方法。

  • 量子对象特征求解器可以使用稀疏求解器。

  • 部分追踪(ptrace)函数的速度提高了20倍。

  • 布洛赫球现在可以与Matplotlib动画函数一起使用,并作为子图嵌入到图形中。

  • QuTiP 内置了用于保存量子对象和数据数组的函数。

  • 稳态求解器已针对稀疏矩阵进一步优化,可以处理更大的系统哈密顿量。

  • 稳态求解器可以使用迭代双共轭梯度法代替直接求解器。

  • 有三个新的熵函数用于并发性、互信息和条件熵。

  • 相关函数已被合并到一个单一的函数中。

  • 操作符范数现在可以设置为迹范数、Frobenius范数、1范数或最大范数。

  • 现在可以修改全局QuTiP设置了。

  • QuTiP 包含一组用于验证安装的单元测试。

  • 演示窗口现在允许您从每个示例中复制和粘贴代码。

QuTiP 1.1.4 (2012-05-28)

错误修复

  • 修复了Brendan Abolins指出的错误。

  • Qobj.tr() 返回的是零维 ndarray 而不是 float 或 complex。

  • 更新了适用于scipy版本0.10+的阶乘导入

QuTiP 1.1.3 (2011-11-21)

新功能

  • 允许自定义布洛赫球的命名。

错误修复

  • 修复了AboutBox中的文本对齐问题。

  • 添加了针对SciPy V>0.10的修复,其中factorial被移动到scipy.misc模块。

  • 向张量函数输出添加了整理功能。

  • 从setup.py中移除了openmp标志,因为新的Mac Xcode编译器无法识别它们。

  • 如果所有虚部为零,Qobj 对角方法现在返回实数数组。

  • 示例 GUI 现在链接到新的文档。

  • 修复了来自metrics模块的零维数组输出。

QuTiP 1.1.2 (2011-10-27)

错误修复

  • 修复了蒙特卡罗状态未正确输出的问题。

QuTiP 1.1.1 (2011-10-25)

此版本包括大幅改进的时间无关MCSOLVE和ODESOLVE性能

新功能

  • 添加了线性熵函数。

  • CPU的数量现在可以更改。

错误修复

  • 指标不再使用密集矩阵。

  • 修复了与matplotlib 1.1相关的Bloch球面网格问题。

  • Qobj 跟踪操作仅使用稀疏矩阵。

  • 修复了GUI窗口无法前置的问题。

QuTiP 1.1.0 (2011-10-04)

此版本现在需要安装GCC编译器

新功能

  • tidyup 函数用于从 Qobj 中移除小元素。

  • 添加了并发功能。

  • 添加了simdiag用于操作符的同时对角化。

  • 向Qobj类添加了返回本征态和本征值的本征态方法。

  • 添加了fileio用于保存和加载数据集和/或Qobj。

  • 添加了用于可视化密度矩阵的hinton函数。

错误修复

  • 将示例切换到PySide 1.0.6+中使用的新Signals方法。

  • 将ProgressBar切换到新的Signals方法。

  • 修复了expm函数中的内存问题。

  • 修复了isherm中的内存错误。

  • 默认情况下,将所有Qobj数据设为复数。

  • 在Odeoptions中降低了ODE的容差水平。

  • 修复了在ptrace中使用密集矩阵而不是稀疏矩阵的错误。

  • 修复了关于框中不会显示PyQt4版本的问题。

  • 修复了Wigner中xvec被使用了两次(代替yvec)的问题。

QuTiP 1.0.0 (2011-07-29)

  • 初始版本。