d"<...00000(0)11000...|"なお、PrKetはZeroに対応するために、プログラムの2行目が変更になっている。全体を示すと次のようになる。s)ブラの状態の共役はケットの状態であり、ケットの状態の共役はブラの状態であるので、共役を求める関数を用意しよう。ブラの状態の共役を求める関数invBは次のようにしよう。逆に、ケットの状態の共役を求める関数invKは次のようになる。aプログラムを実行してみよう。演算子を定義する演算子には、生成演算子\(\hat{a}_i\)と消滅演算子\(\hat{a}^\dagger_i\)がある。量子力学では、これらの演算子は、ブラにもケットにも作用できるようにしているが、Haskellは型にうるさい言語である。どちらにも適応できるようにすると曖昧さが残るので、ここでは、それぞれの型に対して用意しよう。ケットでは、生成演算子には+^を、消滅演算子には-^を用意した。右側に接続するという意味で^を右側において用いた。そこで、ブラでは、左側に接続するという意味で^を左側におき、生成演算子には^+を、消滅演算子には^-を用意しよう。プログラムは次のようになる。これらのプログラムは、^-の共役は+^であり、^+の共役は-^であることを利用している。プログラムを実行してみよう。|-a3,ケットの方の演算子は次のように定義される。7章でのプログラムに、Zeroの処理を加えた。内積を定義する準備が整ったので、内積を定義しよう。あまりにあっけないのでびっくりすることと思う。これはブラの状態とケットの状態が与えられた時、それらを結合したときの値を求めるものだ。一方のブラの状態から共役であるケットの状態を求め、これが他方のケットの状態と一致していれば1をそうでなければ0を出力する。プログラムは次のようになる。テスト用のプログラムを用意しておこう。それでは実行してみよう。>\)を内積の位置を動かして実行してみよう。1うまく動いていることが分かる。まとめこれまで説明してきたことを表にまとめると以下のようになる。プログラム全体この記事で説明したプログラムの全体を記載しよう。これらのプログラムの開発に要した時間は2時間であった。半日は覚悟していたのだが、短い時間で出来上がり、Haskellの記述能力の高さに感謝している。Braに関するプログラムは以下のとおりである。0修正したケットのプログラムは以下のとおりである。隣り合う格子点の間で粒子が相互に交換さ...2016-07-14身近な存在としての量子力学(13):ブラでの重ね合わせをHaskellで表現する梅雨の中休みの東京の暑さに耐えるのはとても大変だ。一般的に、圏は次のように定義されている。参加グループ知識リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!bitterharvestさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。