Jump to content

КуТиП

КуТиП
Стабильная версия
4.7.0 / 8 февраля 2022 г .; 2 года назад ( 08.02.2022 )
Предварительный выпуск
5.0.0.dev
Написано в Питон
Платформа Кросс-платформенный
Тип Библиотека
Лицензия BSD 3-пункт
Веб-сайт настигнуть .org

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 ]

  1. ^ Йоханссон-младший; Нация, ПД; Нори, Франко (апрель 2013 г.). «QuTiP 2: среда Python для динамики открытых квантовых систем». Компьютерная физика. Коммуникации . 184 (4): 1234–1240. arXiv : 1211.6518 . Бибкод : 2013CoPhC.184.1234J . дои : 10.1016/j.cpc.2012.11.019 . S2CID   15261366 .
  2. ^ Перейти обратно: а б Йоханссон-младший; Нация, ПД; Нори, Франко (август 2012 г.). «QuTiP: среда Python с открытым исходным кодом для динамики открытых квантовых систем». Компьютерная физика. Коммуникации . 183 (8): 1760–1772. arXiv : 1110.0573 . Бибкод : 2012CoPhC.183.1760J . дои : 10.1016/j.cpc.2012.02.021 . S2CID   15055747 .
  3. ^ Тобиас Мэйси (24 сентября 2017 г.). «QuTiP с Полом Нэйшн - Эпизод 128» (Подкаст). Подкаст.__init__. Событие происходит в 6:15 . Проверено 10 августа 2022 г.
  4. ^ Участники QuTip. «QuTiP — Quantum Toolbox в Python» . Гитхаб . Проверено 11 августа 2022 г. {{cite web}}: |author= имеет общее имя ( справка )
  5. ^ Команда администраторов QuTip. «Годовой отчет QuTiP за 2021 год» . Гитхаб . Проверено 11 августа 2022 г.
  6. ^ Разработчики и участники QuTiP. «Мастер решения уравнений Lindblad» . Проверено 24 июля 2022 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 35eeb22bb0356620bcba8af044b762bc__1710409500
URL1:https://arc.ask3.ru/arc/aa/35/bc/35eeb22bb0356620bcba8af044b762bc.html
Заголовок, (Title) документа по адресу, URL1:
QuTiP - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)