【自作量子コンピュータ NMRQCP】PythonでNMR信号を作ってみた
こんにちは!自作の地球磁場NMR(EFNMR)方式で量子コンピューターの開発に挑戦している高専生です。
前回はひたすら煙と格闘する「はんだ付け」などハードウェアのお話をしましたが、今回は一転してソフトウェアのお話です。PC(Python)を使って、量子の世界をどうやって操作・観測するのか、僕が書いたシミュレーションのコードやグラフと一緒に解説します!
量子からのメッセージ「FID信号」と、立ちはだかるノイズ
量子コンピューターを作る上で、原子核の「スピン」が放つ極めて微弱な電波(NMR信号)を捉える必要があります。この信号は時間と共に弱まっていく滑らかで周期的なサイン波で、「FID信号(自由誘導減衰)」と呼ばれます。
数式で表すと s(t) = A sin(2πft) e-t/T2 となります。振幅や周波数に加えて、ネイピア数(e)を使うことで「原子核の震えが滑らかに止まっていく様子」を表現できます。これをPython(NumPyとMatplotlib)を使ってシミュレーションした理想的な波形がこちらです。
ノイズの海から真実を見つけ出す魔法「FFT」
では、このノイズだらけの波からどうやってターゲットの周波数を見つけ出すのか?ここで登場するのが「FFT(高速フーリエ変換)」です。
FFTは、横軸を周波数に変換して「どの周波数がどのくらい含まれているか」を可視化するツールで、光を色ごとに分ける「プリズム」のようなものです。レコードをイメージしてみてください。レコードを回す速さとデータが合わないと波はバラバラになって相殺されますが、速さがピタリと合うと波の山と谷が重なり合って重心がズレます。これを利用して特定の波をあぶり出します。
ちなみに「高速」と呼ばれるのは、普通のフーリエ変換の計算量が N2 なのに対し、FFTは N log N という圧倒的に少ない計算量で処理できるからです。
量子を操る「パルス制御」の仕組み
FFTで波形を解析して得られたHz(周波数)は、「量子ビットが受け取れる電波のHz」を意味しています。
ここからが量子コンピューターの面白いところです。FFTで見つけたのと同じHzの電波を量子ビットに当てると、「共鳴」が起きて原子がエネルギーを吸収し、スピンの方向が変化します。この電波(パルス)を当てる時間を調整することで、量子の状態を自由にコントロールできるんです。
結果を確認するときも同じです。原子が震えて電波を出していればFFTでピークが出て「1(または重ね合わせ)」、電波を出さなければピークなしで「0」と判定します。
このシミュレーションのように、僕のEFNMRQCプロジェクトでも実際にコイルから電波(パルス)を放ち、返ってきた信号をFFTで解析して量子状態を観測しようとしています。理論をコードにしてグラフが動くと、一気に量子の世界が身近に感じられますよね!
- 日々の実験メモやコード: GitHubリポジトリ(nmr-qc-project) に公開中
- リアルタイムの開発風景・オシロスコープ波形: X(旧Twitter) でポスト中
「本当に動くのか?」「どうやって波形を出すのか?」など、気になった方はぜひブログのブックマークやXのフォローをお願いします!




コメント
コメントを投稿