| 安定版リリース | 4.7.0 / 2022年2月8日 |
|---|---|
| プレビューリリース | 5.0.0.開発
|
| リポジトリ | github.com/qutip/qutip |
| 書かれた | パイソン |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 図書館 |
| ライセンス | BSD 3節 |
| Webサイト | qutip.org |
QuTiPはPython の Quantum Toolboxの略で、量子システム、特にオープン量子システムをシミュレートするためのオープンソース の計算物理学ソフトウェアライブラリです。[1] [2] QuTiP を使用すると、任意の時間依存性を持つハミルトニアンのシミュレーションが可能になり、量子光学、イオントラッピング、超伝導回路、量子ナノメカニカル共振器における興味深い状況をシミュレートできます。ライブラリには、シミュレーション中のコンテンツを視覚化する広範な機能が含まれています。
QuTiP の API はPythonインターフェイスを提供し、Cython を使用してCおよびC++による実行時コンパイルと拡張を可能にします。QuTiP は、一般的な Python パッケージNumPy、SciPy、Matplotlib、IPythonと連携するように構築されています。
歴史
QuTip プロジェクトのアイデアは、2010 年に博士課程の学生であるポール・ネイションによって考案されました。彼は、研究でMATLABの量子光学ツールボックスを使用していました。ポール・ネイションによると、彼は「MATLAB の大ファンではなかった」ため、qotoolbox に似た Python パッケージを作成したいと考えていましたが、「自分で書こう」と決めました。[3]日本の理化学研究所 のポスドク研究員として、彼はロバート・ヨハンソンと出会い、2 人でパッケージの開発に取り組みました。プロプライエタリな MATLAB 環境に依存していた前身の qotoolbox とは対照的に、このパッケージは 2012 年にオープンソース ライセンスで公開されました。[2]
NationとJohanssonによって作成されたバージョンにはすでにパッケージの最も重要な機能が含まれていましたが、QuTipsの範囲と機能は、大規模な貢献者コミュニティによって継続的に拡張されています。[4]物理学者の間で人気が高まっており、2021年には25万回以上ダウンロードされました。[5]
例
量子オブジェクトの作成
>>> import qutip
>>> import numpy as np
>>> psi = qutip . Qobj ([[ 0.6 ], [ 0.8 ]]) # リストから量子状態を作成
>>> psi
量子オブジェクト: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[0.6]
[0.8]]
>>> phi = qutip . Qobj ( np . array ([ 0.8 , - 0.6 ])) # numpy 配列から量子状態を作成
>>> phi
量子オブジェクト: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[ 0.8]
[-0.6]]
>>> e0 = qutip . basis ( 2 , 0 ) # 基底ベクトルを作成
>>> e0
量子オブジェクト: dims = [[2], [1]]、shape = (2, 1)、type = ket
Qobj data =
[[1.]
[0.]]
>>> A = qutip . Qobj ( np . array ([[ 1 , 2 j ], [ - 2 j , 1 ]])) # numpy 配列から量子演算子を作成
>>> A
量子オブジェクト: 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 () # パウリ行列のような一般的な量子オブジェクトは、qutip パッケージで事前定義されています
。量子オブジェクト: 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 () # 互換性のある形状と次元の量子オブジェクトを加算および乗算できます
量子オブジェクト: 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 () # エルミート共役
量子オブジェクト: dims = [[1], [2]]、shape = (1, 2)、type = bra
Qobj data =
[[0.6 0.8]]
>>> psi . proj () # 量子状態への射影
量子オブジェクト: dims = [[2], [2]]、shape = (2, 2)、type = oper、isherm = True
Qobj data =
[[0.36 0.48]
[0.48 0.64]]
>>> A . tr () # 演算子 2.0のトレース
>>> A . eigenstates () # 演算子を対角化します(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)) >>> ( 1 j * A ) . expm () # 演算子の行列指数Quantum オブジェクト: 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 ()) # テンソル積 量子オブジェクト: 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 ()]) #シュレーディンガー方程式に従ったシステムのユニタリ時間発展>>> expectpsi , expectphi = result.expect # psiとphiへの射影子の期待値>>> plt.figure ( dpi = 200 ) >>> plt.plot ( times , expectpsi ) >>> plt.plot ( times , expectphi ) >>> plt.legend ( [ r " $ \ psi $ " , r " $ \ phi $ " ] ) >>> plt.show ( )
リンドブラッドマスター方程式に従った非ユニタリーな時間発展をシミュレートするには、qutip.mesolve関数[6]を使用する。
参考文献
- ^ Johansson, JR; Nation, PD; Nori, Franco (2013 年 4 月). 「QuTiP 2: オープン量子システムのダイナミクスのための Python フレームワーク」. Computer Physics Communications . 184 (4): 1234–1240. arXiv : 1211.6518 . Bibcode :2013CoPhC.184.1234J. doi :10.1016/j.cpc.2012.11.019. S2CID 15261366.
- ^ ab Johansson, JR; Nation, PD; Nori, Franco (2012 年 8 月). 「QuTiP: オープン量子システムのダイナミクスのためのオープンソース Python フレームワーク」. Computer Physics Communications . 183 (8): 1760–1772. arXiv : 1110.0573 . Bibcode :2012CoPhC.183.1760J. doi :10.1016/j.cpc.2012.02.021. S2CID 15055747.
- ^ Tobias Macey (2017年9月24日). 「QuTiP with Paul Nation - エピソード128」(ポッドキャスト). Podcast.__init__. イベントは6:15に発生します。 2022年8月10日閲覧。
- ^ QuTip 貢献者。「QuTiP - Python の量子ツールボックス」。GitHub。2022年8 月 11 日閲覧。
{{cite web}}:|author=一般的な名前があります (ヘルプ) - ^ QuTip管理チーム。「QuTiP 2021年次報告書」。GitHub 。 2022年8月11日閲覧。
- ^ QuTiP 開発者および貢献者。「Lindblad マスター方程式ソルバー」。2022 年 7 月 24 日閲覧。
外部リンク
- 公式サイト
- GitHubの qutip
