Published May 22, 2026
| Version v5.3.0
Software
Open
qutip/qutip: QuTiP 5.3.0
Authors/Creators
- Robert Johansson
- Paul Nation1
- Eric Giguère2
- Simon Cross3
- Jake Lishman4
- Anubhav Vardhan5
- Paul
- Alexander Pitchford6
- Cassandra Granade7
- Gerardo Jose Suarez
- Asier Galicia
- Boxi Li8
- Yuji TAMAKOSHI9
- MathiB123
- Veronika Kurth
- Emi
- christian512
- Nathan Shammah10
- Maximilian MM
- Arne Løhre Grimsmo
- Markus Baden
- Piotr Migdał11
- Shahnawaz Ahmed12
- Neill Lambert
- Denis Vasilyev13
- Kevin Fischer
- Purva Thakre14
- Mudit Maheshwari
- Rochisha Agarwal
- 1. IBM
- 2. Calcul Québec, Université de Sherbrooke
- 3. Zurich Instruments
- 4. @IBM
- 5. IIT Kanpur / RIKEN
- 6. Aberystwyth University
- 7. Dual Space Solutions, LLC
- 8. Forschungszentrum Jülich
- 9. University of Tokyo
- 10. Unitary Fund
- 11. ex: Quantum Flytrap CTO & cofounder
- 12. @embedl Chalmers, Riken @qutip @pyquantum @qgrad
- 13. IQOQI
- 14. Southern Illinois University
Description
Features
Solvers improvements
- Introduces a matrix-form solver that leverages matrix-matrix products for better memory efficiency. It can be used by passing
options={"matrix_form": True}tomesolveorMESolver. (#2811, by Ashley Milsted) - Allow the matrix-form
mesolve(options={"matrix_form": True}) to evolve non-Hermitian initial states such as transition matrices|i><j|. (#2898, by Ashley Milsted) - Enables Krylov subspace method for density matrices in closed and open (Lindblad-like) systems. Adds Arnoldi and fully-reorthogonalized Lanczos to algorithms for Krylov basis construction. (#2725, by Maximilian MM)
- Uses the
mean_abs_nonzerofunction from qutip/core/data/mean.pyx module in the direct method of the steady state solver. The function is overloaded for different data layer types (Dense, CSR, and Dia) and hence enables replacing if-else conditional with one function call. (#2824, Veronika Kurth) - Adds
plot_expect()toResultandMultiTrajResult, andplot_photocurrent()toMcResult, for visualising solver output directly from result objects. (#2837, by Chinmay-Tangal)
Matrix operations
- Adds
local_matmul: applying a smaller operator on a state on an extended Hilbert space. (#2743) - Support for direct sums: create direct sum objects using
qt.direct_sum, extract blocks withqt.direct_component, and overwrite blocks withqt.set_direct_component. Added newqt.dimensions.SumSpaceto describe dimensions of direct sum objects. (#2785) - Adds operator overloading for functions
mean_nonzeroandmean_abs_nonzero(mean of absolute values) for complex matrices (qutip.data.Dia, qutip.data.CSR, qutip.data.Dense). (#2817, by Veronika Kurth)
Superoperators improvements
- Adds the commutator and anticommutator for superoperators. (#2861, by Mudit Maheshwari)
- Adds support for constructing superoperators to/from Pauli using to_superpauli() and from_superpauli() (#2835, by Mudit Maheshwari)
Other improvements
- Adds
propagator_piecewisefunction andpiecewise_tparameter topropagatorfor efficient computation of propagators for piecewise constant Hamiltonians and Liouvillians. This optimization uses direct matrix exponentiation on each constant interval instead of numerical ODE integration, providing significant speedup for systems with discontinuous time-dependence. (#2774, by Rafael Haenel) - Adds adjoint (dag) in-place matmul for QobjEvo and optimize matmul ops on Apple Silicon. (#2802, Ashley Milsted)
- Adds
max_t_plus_tauand map parameters tocorrelation_3op,correlation_3op_2t, andcorrelation_2op_2tfor improved performance. Solves #2315 (#2831, by Chinmay-Tangal). - Adds the offset parameter to the wigner function and other visualization functions. (#2839, by Mudit Maheshwari)
- Adds
Qobj.full_tensor()to return a dense ndarray reshaped according to the quantum object's tensor dimensions. (#2841, by K Soveet Kumar Prusty) - Adds
**kwargsto arguments of:add_state,add_vector,add_pointsto pass to underlying matplotlib function (#2847, by Mudit Maheshwari) - Adds ubuntu-24-arm64, windows-11-arm64 to wheels build target (#2855, by Mayank Goel)
Bug Fixes
- Fixes color ordering for single points in Bloch sphere. Previously, when plotting a single point on a Bloch sphere via
Bloch.add_points(colors=...)or by modifyingBloch.point_color, the color list could become mismatched with the point order after internal sorting. This fix ensures colors are reordered correctly, eliminating miscoloring. Fixes #2681 (#2754, by QiLin Xue) - Fixes missing binding of docstrings of
tensor_swapandexpand_operatorinto APIdoc (#2775, by Clemens Possel) - Enables performing computations on sparse matrices of high dimensionalities in the "direct" method of the steady-state solver without running into out-of-memory allocation problems. Fixes issue #2747. (#2803, by Veronika Kurth)
- Fixes scipy.linalg.LinAlgWarning: Matrix is singular when calculating the fidelity of pure state denisty matrix. (#2822, by Tim Liao)
- Fixes UnboundLocalError in
plot_spin_distributionand improved function by changing cmap implementation and adding kwargs. (#2834, by Mudit Maheshwarih) - Fixes bug in
Propagatorused for negative times. (#2858) - Fixes overflow error occuring in krylovsolve when calculating large krylov dimensions (#2885, by Maximilian MM)
Documentation
- Clarifies the x and y axis order for the arrays returned by the phase-space functions wigner,
spin_wigner,qfuncandspin_q_function. Fixes #1532. (#2830, by harsshg31085) - Adds user-guide documentation for solver progress bar options, including available values and
progress_kwargsusage. (#2846, by DeconBear) - Adds the sphinx-copybutton extension. This shows a copy button towards the right corner for codeblocks in the documentation. (#2851, by Mayank Goel)
- Aligns the Read the Docs build with the shared pip-based documentation requirements and remove the stale RTD-specific environment file. (#2866, by Asish Kumar)
- Migrates Jake Lishman development documentation (#2867)
Deprecations
- Removes support for Python 3.10 (#2875)
- Updates
Qobj.__matmul__to throw deprecation warning for Qobj @ numpy.array operation (#2829, by Mudit Maheshwari) - Renames
steadystate_floquettosteadystate_fourier. The old name is deprecated and will be removed in a future release. (#2823, by Chinmay-Tangal) - Removes support for position entry of options, e_ops and args. (#2870)
- Removes passing solver options as kwargs instead of in options dict. (#2870)
- Removes deprecated Environment approximation methods. (#2870)
- Adds deprecation warning for dict coefficient format. (#2889)
Miscellaneous
- Adds type annotations to
core.qobj._require_equal_typeto ensure proper typing forQobj.__add__andQobj.__sub__. (#2848, by JacobHast) - Adds fallback for missing mpmath module for OhmicEnvironment (#2859)
- Adds GitHub Sponsors button. (#2869)
- Updates manylinux-x86_64-image from manylinux2014 to manylinux_2_28. Update build-frontend to build from pip. This allows to use custom build frontends like uv in the future. Update wheel number from 20 to 24 while deploying. (#2883, by Mayank Goel)
- Adds AI Tool Usage Policy (#2891, by Mayank Goel)
- Remove outdated code (#2899, by Mayank Goel)
Files
qutip/qutip-v5.3.0.zip
Files
(3.5 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:2c6466395a9d04b680af1acd2271eb72
|
3.5 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/qutip/qutip/tree/v5.3.0 (URL)
Software
- Repository URL
- https://github.com/qutip/qutip