Posted on 2023/01/15, 10:05 AM By admin22
前回の量子のもつれ状態について、QiskitというPythonライブラリを使ってテストしてみまた。
JupyterNotebookを使いますが、可視化ツールがよくできていてモチベーションがあがります。
前回と同じ、アダマールゲートとCNOTを使った回路を作ってみましたが、その前に可視化ツールのテストをしたかったので、回路図とブロッホ球の表示をしてみました。(In/Out[4]まで)
In/Out[5]からは、量子ピットを2にして目的のテストをしています。
参考)
https://qiskit.org/textbook/ja/ch-gates/multiple-qubits-entangled-states.html
環境) Jupyter Notebook 6.0.3 / Python 3.7.6 / Anaconda 1.9.12 / Wndows 10
インストール)
pip install qiskit
00と11しか出現しないことを確認しました。手順は上記URLの参考サイト「複数量子ビットともつれ状態」に詳しく書かれています。また上記動画ではツールのインストール、使用方法などを参考にしました。この動画のシリーズは長時間かけてとてもわかりやすく説明されていますのでおすすめです。
もつれ状態では、ブロッホ球がうまく表示できないことから、最後にQ-sphereを使って可視化しています。
使用したコードを下記をのせました。部分コピペで実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
from qiskit import QuantumCircuit, QuantumRegister, Aer,assemble from qiskit.visualization import plot_bloch_multivector, plot_histogram from qiskit.visualization import array_to_latex from qiskit.providers.aer.library import save_statevector from mpl_toolkits.mplot3d import axes3d, Axes3D from qiskit.visualization import plot_state_qsphere qc = QuantumCircuit() qr = QuantumRegister(1) qc.add_register(qr) qc.x(qr[0]) qc.draw() sim=Aer.get_backend('statevector_simulator') res = sim.run(qc).result() state = res.data()["statevector"] array_to_latex(state, prefix="\\text{Statevector = }") print(state) plot_bloch_multivector(state) qc = QuantumCircuit(2) qc.h(0) qc.cx(0,1) qc.draw() svsim = Aer.get_backend('aer_simulator') qc.save_statevector() qobj = assemble(qc) result = svsim.run(qobj).result() final_state = result.get_statevector() array_to_latex(final_state, prefix="\\text{Statevector = }") plot_histogram(result.get_counts()) print(final_state) plot_bloch_multivector(final_state) plot_state_qsphere(final_state) |
以上、今回は主にツールの使い方を学びました。
これをベースにまた理解を深めたいと思います。
Categories: 未分類 タグ: Python, Quantum