【書籍】14日で作る量子コンピュータ(Visual C++版)~シュレディンガー方程式で量子ビット・量子ゲート・量子もつれを数値シミュレーション~
14日で作る量子コンピュータ【Visual C++ 版】
~シュレディンガー方程式で量子ビット・量子ゲート・量子もつれを数値シミュレーション~
著者 遠藤 理平
出版社 株式会社カットシステム
判型 B5変型、228頁
本体価格 5,000円(税込 5,500円)
ISBN 978-4-87783-470-8
はじめに
近年目覚ましい発展を遂げるナノメートルサイズの精密制御技術がこれまで全くの空想でしかなかった量子コンピュータの実現を期待させるようになってきました。特に人工知能(AI)技術の中核をなすニューラル・ネットワークによる深層学習(ディープラーニング)と相性が良いことも、期待に拍車をかけています。そのような状況に伴って、量子コンピュータに関する啓蒙書や量子コンピュータを動作させることで有用な計算を行うための量子アルゴリズムに関する専門書も多数出版されており、これらの書籍によって「そもそも量子コンピュータとは何か?」「そもそもなぜ並列計算が可能なのか?」「どのようにして有用な計算を行うことができるのか?」といった基本的な問に答えられる知識は得られます。その一方、「概念は理解できたが、なんだか抽象的すぎて腑に落ちない!」と思っている方は私だけではないと思います。腑に落ちるための必要な筋道は人によって異なると思いますが、自分の場合、基礎方程式を用いて数値シミュレーションを行って想定どおりの結果を得ることができると、現象や動作原理を理解できたという実感がようやく湧いてきます。本書は量子コンピュータの動作原理を理解するための、私なりの腑に落ちるために必要な手順をまとめたものです。
現在、量子コンピュータは物理的な原理の違いによって大きく2つの方式に分けられます。1つ目は量子アニーリング(量子焼きなまし法)と呼ばれる物理現象を動作原理として最適化問題を解くことに特化した「量子アニーリング方式」、2つ目は汎用的な量子コンピュータを目指す「量子ゲート方式」です。両者とも数学的には同等の計算が可能とされています。本書では、量子力学を勉強して初めに学習する「量子井戸」を用いる量子ドットコンピュータを題材として、量子ビット・量子ゲート・量子もつれ という量子コンピュータに必要不可欠な要素を、量子力学の基礎方程式であるシュレディンガー方程式を用いて数値シミュレーションを行います。以上の目的を達成するために数値計算に必要な計算アルゴリズム導出はすべて端折らずに詳しく解説しています。その一方で「量子力学についての詳しい解説」や「量子アルゴリズムについての解説」といった一般的な内容は省いていることご了承ください。
本書の読者層は量子力学の初歩をすでに学習している方を想定していますが、これから量子力学を勉強したい方も一般的な量子力学のテキストと一緒に本書を活用していただくことで、量子力学の基礎習得に役立つと考えています。また、量子コンピュータの動作原理、量子アルゴリズムについて深く学習したい方は参考文献として次の2冊をお勧めします。本書はこれらの書籍を学習する上での基礎となります。
(1)量子情報理論(佐川 弘幸 著、 吉田 宣章 著、丸善出版、第3版 2019年)
(2)量子アルゴリズム(中山 茂 著、技報堂出版、2014年)
最後に、本書の執筆の機会を頂きました株式会社カットシステムの石塚勝敏さん、非常に丁寧な編集を行なって頂きました武井智裕さん、また、本書の内容について貴重なコメントを頂きました東北大学理学部物理学科4年生の李俊錫(イ・ジュンソク)さん、日常的に議論に付き合って頂いている特定非営利活動法人natural scienceの皆さんには、深く感謝申し上げます。
2020年4月
遠藤理平
(※)本書籍のサンプルプログラムはVisualC++版です。
Python版は近日中に発売されます。
目次
- 0日目 実行環境を整えよ!
- 0.1 Visual Studioの準備
- 0.2 Visual Studioのプロジェクト作成方法
- 0.3 C++プログラムソースの記述と実行
- 0.4 GNU科学技術計算ライブラリの導入
- 0.5 数値積分の実行方法
- 1日目 量子力学の「超」基礎を習得せよ!
- 1.1 電子は「粒」と「波」の性質を併せ持つ量子粒子!
- 1.2 シュレディンガー方程式
- 1.3 ポテンシャル項が時間に依存しない場合
- 2日目 自由空間中の電子の運動を計算せよ!
- 2.1 自由空間中の波動関数
- 2.2 平面波の時間依存性
- 2.3 平面波の規格化
- 3日目 ディラックのデルタ関数を習得せよ!
- 3.1 ディラックのデルタ関数の導入
- 3.2 ディラックのデルタ関数を用いた平面波の規格化
- 4日目 電子波束の運動を計算せよ!
- 4.1 電子波束の作り方
- 4.2 ガウス波束の運動シミュレーション
- 4.3 波束の速度(群速度)の導出
- 5日目 井戸型ポテンシャル中の電子の運動を計算せよ!
- 5.1 無限に深い井戸型ポテンシャルに対する固有状態
- 5.2 電子の固有状態の運動アニメーション
- 5.3 エネルギー固有関数の直交性の確認
- 6日目 量子井戸に静電場を加える方法を解説するぞ!
- 6.1 静電場を加えたときのハミルトニアンと固有方程式
- 6.2 展開係数が満たす連立方程式の導出
- 6.3 行列の固有値と固有ベクトル
- 7日目 静電場を加えたときの電子の運動を計算せよ!
- 7.1 〈m|V|n〉の数値積分だ!
- 7.2 行列の固有値問題の数値計算しよう!
- 7.3 固有関数の空間依存性を調べよう!
- 7.4 静電場強度依存性を確かめよう!
- 7.5 空間分布の中心を計算しよう!
- 8日目 量子井戸の形状を改良するぞ!
- 8.1 量子井戸の固有状態と量子ビットの関係
- 8.2 ポテンシャル障壁あり量子井戸の固有状態
- 8.3 ポテンシャル障壁あり量子井戸に静電場を加えてみよう!
- 9日目 量子井戸へ電磁波を加える方法を解説するぞ!
- 9.1 マクスウェル方程式の復習だ!
- 9.2 電磁場中の電子のハミルトニアン
- 9.3 計算アルゴリズムの導出
- 9.4 電磁波を入射するための方法
- 10日目 量子井戸に電磁波を入射せよ!
- 10.1 一番簡単な系でルンゲ・クッタ法の動作確認!
- 10.2 Xnmの計算確認
- 10.3 電磁波で状態遷移をシミュレーション!
- 10.4 角振動数をずらしたときのラビ振動を確認
- 10.5 ラビ振動の解析解
- 11日目 1量子ビット量子ゲートを完成させるぞ!
- 11.1 改良版量子井戸でラビ振動を確認せよ!
- 11.2 1量子ビットの基本量子ゲートについて
- 11.3 量子ゲートと物理的操作の対応
- 11.4 1量子ビットの全ユニタリーゲートの完成!
- 12日目 量子井戸を並べる方法を解説するぞ!
- 12.1 2粒子に対するシュレディンガー方程式
- 12.2 2つの量子井戸のクーロン相互作用
- 12.3 クーロン相互作用を考慮したときの固有状態の計算法
- 12.4 量子井戸を改良したときの固有状態の計算法
- 12.5 独立した2電子の確率分布の計算方法
- 13日目 2量子井戸の定常状態を計算せよ!
- 13.1 〈l1,l2|V12|m1,m2〉の計算
- 13.2 クーロン相互作用のみを考慮したときの固有状態の計算
- 13.3 改良量子井戸でクーロン相互作用のみを考慮したときの固有状態の計算
- 13.4 改良量子井戸でクーロン相互作用と静電場を考慮したときの固有状態の計算
- 14日目 2量子井戸のラビ振動を計算せよ!
- 14.1 2量子井戸へ電磁波を加える方法
- 14.2 Xnm = 〈n|x1+x2|m〉を計算
- 14.3 2量子井戸のラビ振動の計算結果
- 14.4 制御NOTゲートの定義
- 14.5 量子もつれ(量子エンタングルメント)の生成方法
- 14.6 |10〉 → |01〉間接遷移による量子もつれの生成
関連動画
10日で作る量子ドットコンピュータ
量子コンピュータの動作原理をシュレーディンガー方程式の数値シミュレーションで理解するよ!
【1日目】 | 量子井戸の電子状態と量子ビットの表現 | |
【2日目】 | 量子井戸の電子状態の基礎実験1:電磁波による状態遷移 | |
【寄り道】 | 基底状態から励起状態への遷移中の波動関数の時間発展 | |
【3日目】 | 量子井戸の電子状態の基礎実験2:静電場による電気分極 | |
【4日目】 | 量子井戸の電子状態の基礎実験3:2重量子井戸で量子ビットを改良! | |
【5日目】 | 1量子ビット万能量子ゲートを設計しよう! |