Top 8
Outer WildsストーリーMODを色々やってみた
June 18, 2023, 10:04 a.m.表面符号と戯れる【量子コンピューター Advent Calendar 2023 23 日目】
Dec. 23, 2023, 3:28 a.m.位数発見アルゴリズム ~Quantum Zooやっていく【特別編】~
Jan. 27, 2023, 2:50 p.m.ストーリー追加 Mod: The Outsider やっていく日記【Outer Wilds】
Feb. 19, 2023, 6:33 a.m.意識が量子効果で生じることを示す実験結果についてちょっと調べただけのメモ
April 21, 2022, 3:09 p.m.ストーリー追加 MOD: Astral Codec やっていく日記【Outer Wilds】
Feb. 25, 2024, 8:47 a.m.Outer Wilds の量子は計算能力が(ある程度)すごいのではという話
Jan. 15, 2022, 8:35 a.m.MacでAge of Empires 2 DE (AoE2DE)をCrossOverで動かす
May 31, 2021, 11:52 a.m.SymPyを使ってget_statevectorで得られたベクトルをケットベクトルに変換する【Qiskit】
Aug. 9, 2019, 6:08 a.m. edited Feb. 23, 2022, 4:41 a.m.#SymPy #Qiskit #シミュレーション #量子力学 #Python
量子コンピュータは実機で使うときはもちろん測定結果は確率でしか得られません.
しかし,シミュレーターならば以下のようにして,回路 \(U\) を通したあとの状態をベクトルで得ることができます.ここでは,Pythonで簡単に実行できるQiskit (ver. 0.10.2) を用います.また,回路は
$$
U={\rm CNOT}\cdot (H\otimes \mathbb{I})
$$
つまり,EPR状態を作るものとします.
from qiskit import QuantumCircuit, execute, Aer
simulator = Aer.get_backend('statevector_simulator')
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
statevector = execute(circuit, simulator).result().get_statevector(circuit)
print(statevector)
実行すると,
[0.70710678+0.j 0. +0.j 0. +0.j 0.70710678+0.j]
とブラケット表記で出力してくれません.Qiskitに含まれるplot_state_city
を使えばグラフで見せてくれますが,別にそこまでは求めていません.
SymPyを使ってブラケット表記に変換する
※SimPyとは別物です.
SymPyにはPhysicsの中にQuantum mechanicsのモジュールが含まれ,ここにはベクトルをケットベクトル表示に変換1してくれる matrix_to_qubit
があります.これを使うと,
from qiskit import QuantumCircuit, execute, Aer
import numpy as np
from sympy.physics.quantum.qubit import matrix_to_qubit
simulator = Aer.get_backend('statevector_simulator')
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
statevector = execute(circuit, simulator).result().get_statevector(circuit)
ket_vector = matrix_to_qubit(np.array(statevector)[:, np.newaxis])
print(ket_vector)
実行して,
0.707106781186548*|00> + 0.707106781186547*|11>
と無事にケットベクトルで表示することができました2.
(追記 220223) Qiskit ver. 0.34.2 の場合
上に書いたコードは最新の Qiskit (ver. 0.34.2) では動かなくなっている。現在は
from qiskit import QuantumCircuit, Aer, transpile
import numpy as np
from sympy.physics.quantum.qubit import matrix_to_qubit
simulator = Aer.get_backend('aer_simulator_statevector')
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
#circuit = transpile(circuit, simulator) # to_gate() などを使っている場合は transpile を入れないと動かない場合がある
circuit.save_statevector()
job = simulator.run(circuit)
statevector = job.result().get_statevector(circuit)
ket_vector = matrix_to_qubit(np.array(statevector)[:, np.newaxis])
print(ket_vector)
のようになる。
-
この操作はSchmidtの分解定理によって保証されている. ↩
-
0.707106781186548はWolfram Alphaに入力すればわかるように\(\frac{1}{\sqrt{2}}\)である. ↩
Top 8
Outer WildsストーリーMODを色々やってみた
June 18, 2023, 10:04 a.m.表面符号と戯れる【量子コンピューター Advent Calendar 2023 23 日目】
Dec. 23, 2023, 3:28 a.m.位数発見アルゴリズム ~Quantum Zooやっていく【特別編】~
Jan. 27, 2023, 2:50 p.m.ストーリー追加 Mod: The Outsider やっていく日記【Outer Wilds】
Feb. 19, 2023, 6:33 a.m.意識が量子効果で生じることを示す実験結果についてちょっと調べただけのメモ
April 21, 2022, 3:09 p.m.ストーリー追加 MOD: Astral Codec やっていく日記【Outer Wilds】
Feb. 25, 2024, 8:47 a.m.Outer Wilds の量子は計算能力が(ある程度)すごいのではという話
Jan. 15, 2022, 8:35 a.m.MacでAge of Empires 2 DE (AoE2DE)をCrossOverで動かす
May 31, 2021, 11:52 a.m.Tags
- #Python (26)
- #量子力学 (25)
- #量子情報 (23)
- #Unity (11)
- #Outer Wilds (11)
- #数学 (9)
- #Mac (9)
- #AoE2 (8)
- #Linux (7)
- #Quantum Zoo (6)
- #意識 (5)
- #シミュレーション (5)
- #NumPy (5)
- #Bash (5)
- #相対論 (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #Rust (3)
- #PyO3 (3)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #論文 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #PyTorch (1)
- #C# (1)
- #Vim (1)