КуТиП
![]() | |
Стабильная версия | 4.7.0
/ 8 февраля 2022 г |
---|---|
Предварительный выпуск | 5.0.0.dev
|
Написано в | Питон |
Платформа | Кросс-платформенный |
Тип | Библиотека |
Лицензия | BSD 3-пункт |
Веб-сайт | настигнуть |
QuTiP , сокращение от Quantum Toolbox в Python , представляет собой с открытым исходным кодом библиотеку программного обеспечения для вычислительной физики для моделирования квантовых систем , особенно открытых квантовых систем . [ 1 ] [ 2 ] QuTiP позволяет моделировать гамильтонианы с произвольной зависимостью от времени, что позволяет моделировать ситуации, представляющие интерес в квантовой оптике , захвате ионов , сверхпроводящих цепях и квантовых наномеханических резонаторах . Библиотека включает в себя обширные возможности визуализации контента при моделировании.
API QuTiP предоставляет интерфейс Python и использует Cython для обеспечения компиляции и расширений во время выполнения через C и C++ . QuTiP создан для хорошей работы с популярными пакетами Python NumPy , SciPy , Matplotlib и IPython .
История
[ редактировать ]Идея проекта QuTip пришла в голову в 2010 году аспиранту Полу Нэйшну, который в своих исследованиях использовал набор инструментов квантовой оптики для MATLAB . По словам Пола Нэйшна, он хотел создать пакет Python, похожий на qotoolbox, потому что он «не был большим поклонником MATLAB», а затем решил «просто написать его [сам]». [ 3 ] Будучи научным сотрудником Института RIKEN в Японии, он встретил Роберта Йоханссона, и они вместе работали над пакетом. В отличие от своего предшественника qotoolbox, который использует собственную среду MATLAB, он был опубликован в 2012 году под лицензией с открытым исходным кодом. [ 2 ]
Версия, созданная Nation и Johansson, уже содержала наиболее важные функции пакета, но объем и возможности QuTips постоянно расширяются большим сообществом участников. [ 4 ] Его популярность среди физиков выросла: в 2021 году его скачали более 250 000 раз. [ 5 ]
Примеры
[ редактировать ]Создание квантовых объектов
[ редактировать ]>>> import qutip
>>> import numpy as np
>>> psi = qutip.Qobj([[0.6], [0.8]]) # create quantum state from a list
>>> psi
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[0.6]
[0.8]]
>>> phi=qutip.Qobj(np.array([0.8, -0.6])) # create quantum state from a numpy-array
>>> phi
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[ 0.8]
[-0.6]]
>>> e0=qutip.basis(2, 0) # create a basis vector
>>> e0
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[1.]
[0.]]
>>> A=qutip.Qobj(np.array([[1,2j], [-2j,1]])) # create quantum operator from numpy array
>>> A
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[1.+0.j 0.+2.j]
[0.-2.j 1.+0.j]]
>>> qutip.sigmay() # some common quantum objects, like pauli matrices, are predefined in the qutip package
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[0.+0.j 0.-1.j]
[0.+1.j 0.+0.j]]
Основные операции
[ редактировать ]>>> A*qutip.sigmax()+qutip.sigmay() # we can add and multiply quantum objects of compatible shape and dimension
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False
Qobj data =
[[0.+2.j 1.-1.j]
[1.+1.j 0.-2.j]]
>>> psi.dag() # hermitian conjugate
Quantum object: dims = [[1], [2]], shape = (1, 2), type = bra
Qobj data =
[[0.6 0.8]]
>>> psi.proj() # projector onto a quantum state
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True
Qobj data =
[[0.36 0.48]
[0.48 0.64]]
>>> A.tr() # trace of operator
2.0
>>> A.eigenstates() # diagonalize an operator
(array([-1., 3.]), array([Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[-0.70710678+0.j ]
[ 0. -0.70710678j]] ,
Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[-0.70710678+0.j ]
[ 0. +0.70710678j]] ],
dtype=object))
>>> (1j * A).expm() # matrix exponential of an operator
Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = False
Qobj data =
[[-0.2248451-0.35017549j -0.4912955-0.7651474j ]
[ 0.4912955+0.7651474j -0.2248451-0.35017549j]]
>>> qutip.tensor(qutip.sigmaz(), qutip.sigmay()) # tensor product
Quantum object: dims = [[2, 2], [2, 2]], shape = (4, 4), type = oper, isherm = True
Qobj data =
[[0.+0.j 0.-1.j 0.+0.j 0.+0.j]
[0.+1.j 0.+0.j 0.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j 0.+1.j]
[0.+0.j 0.+0.j 0.-1.j 0.+0.j]]
Эволюция времени
[ редактировать ]>>> Hamiltonian = qutip.sigmay()
>>> times = np.linspace(0, 2, 10)
>>> result = qutip.sesolve(Hamiltonian, psi, times, [psi.proj(), phi.proj()]) # unitary time evolution of a system according to schroedinger equation
>>> expectpsi, expectphi = result.expect # expectation values of projectors onto psi and phi
>>> plt.figure(dpi=200)
>>> plt.plot(times, expectpsi)
>>> plt.plot(times, expectphi)
>>> plt.legend([r"$\psi$",r"$\phi$"])
>>> plt.show()
Моделирование неунитарной эволюции во времени в соответствии с основным уравнением Линдблада возможно с помощью qutip.mesolve
функция [ 6 ]
Ссылки
[ редактировать ]- ^ Йоханссон-младший; Нация, ПД; Нори, Франко (апрель 2013 г.). «QuTiP 2: среда Python для динамики открытых квантовых систем». Компьютерная физика. Коммуникации . 184 (4): 1234–1240. arXiv : 1211.6518 . Бибкод : 2013CoPhC.184.1234J . дои : 10.1016/j.cpc.2012.11.019 . S2CID 15261366 .
- ^ Перейти обратно: а б Йоханссон-младший; Нация, ПД; Нори, Франко (август 2012 г.). «QuTiP: среда Python с открытым исходным кодом для динамики открытых квантовых систем». Компьютерная физика. Коммуникации . 183 (8): 1760–1772. arXiv : 1110.0573 . Бибкод : 2012CoPhC.183.1760J . дои : 10.1016/j.cpc.2012.02.021 . S2CID 15055747 .
- ^ Тобиас Мэйси (24 сентября 2017 г.). «QuTiP с Полом Нэйшн - Эпизод 128» (Подкаст). Подкаст.__init__. Событие происходит в 6:15 . Проверено 10 августа 2022 г.
- ^ Участники QuTip. «QuTiP — Quantum Toolbox в Python» . Гитхаб . Проверено 11 августа 2022 г.
{{cite web}}
:|author=
имеет общее имя ( справка ) - ^ Команда администраторов QuTip. «Годовой отчет QuTiP за 2021 год» . Гитхаб . Проверено 11 августа 2022 г.
- ^ Разработчики и участники QuTiP. «Мастер решения уравнений Lindblad» . Проверено 24 июля 2022 г.