量子もつれ vs 華厳宗「因陀羅網」——宇宙は分かちがたき一つの全体
シリーズ:量子力学と東洋哲学の出会い #05/12 | 読了時間:35分 | Python (NumPy, Matplotlib, NetworkX)
著者:Wina @ Code & Cogito
アインシュタインの恐怖
1935年5月15日、『フィジカル・レビュー』(Physical Review)に一本の論文が掲載された。
タイトル:「物理的実在の量子力学的記述は完全と見なしうるか?」
著者:アルベルト・アインシュタイン(Albert Einstein)、ボリス・ポドルスキー(Boris Podolsky)、ネイサン・ローゼン(Nathan Rosen)。
これが有名な「EPR論文」である。
論文は次のような思考実験を提起した:
二つの粒子AとBがかつて相互作用し、現在は非常に遠い距離(たとえば光年の彼方)に離れているとする。
量子力学によれば:測定前、二つの粒子は「もつれ状態」にある。
いま、粒子Aの位置を測定する。すると瞬時に、粒子Bの位置が確定する。
あるいは、粒子Aの運動量を測定する。すると瞬時に、粒子Bの運動量が確定する。
しかしAとBは光年も離れている!情報がどうして瞬時に伝わりうるのか?
アインシュタインは、可能性は二つしかないと考えた:
- 情報が光速を超えて伝わる → 相対性理論に反する。馬鹿げている
- 粒子はもともと確定した位置と運動量を持っており、我々が知らないだけだ → 量子力学は不完全
アインシュタインは第二の立場を選んだ。必ず「隠れた変数」(hidden variables)が存在するはずだと信じたのである。
後年、彼は友人への手紙にこう書いている:
「量子力学は確かに素晴らしい。しかし内なる声が、これはまだ本物ではないと告げている。
この理論は多くのことを語るが、『老人』(神)の秘密には一歩も近づいていない。
いずれにせよ、神はサイコロを振らない、と私は確信している。」
1947年、アインシュタインはマックス・ボルンに宛てた手紙にこう記した:
「量子力学の形式は確かに壮大だ。しかし内なる声がそれは本物ではないと告げる…
私の思想と調和しないため、この理論を信じることができない。
この理論における『不気味な遠隔作用』(spooky action at a distance)を受け入れることはできない。」
しかし、アインシュタインは間違っていた。
量子もつれ:最も不可解な量子現象
もつれ状態とは何か?
二つの粒子がもつれ状態にあるとは、それらの量子状態が分離不可能であることを意味する。
最も単純な例:ベル状態(Bell state)
|ψ⟩ = (|↑↓⟩ – |↓↑⟩) / √2
ここで:
– |↑↓⟩ = 粒子Aのスピンが上向き、粒子Bのスピンが下向き
– |↓↑⟩ = 粒子Aのスピンが下向き、粒子Bのスピンが上向き
この状態が意味するのは:
– 粒子AとBのスピン方向は完全に逆
– しかし測定前は、どちらも確定したスピン方向を持たない
– Aを測定して(たとえば上向きと判明すると)、Bは瞬時に下向きに確定する
– AとBが光年も離れていても
もつれの三つの不可解な特性
1. 非局所性(Non-locality)
粒子Aを測定すると、瞬時に粒子Bに影響が及ぶ。
時間も要らず、距離も関係ない。
アインシュタインがこれを「不気味」と呼んだのは、以下に反するように見えたからだ:
– 相対性理論:情報は光速を超えられない
– 局所実在論:遠方での測定がこちらの粒子に影響するはずがない
2. 全体性(Holism)
もつれ状態は、二つの独立した粒子の状態に分解できない。
こうは言えない:
– 「粒子Aは状態ψ_Aにある」
– 「粒子Bは状態ψ_Bにある」
こう言うしかない:
– 「系A+Bがもつれ状態ψ_ABにある」
部分は全体から独立に存在しえない。
3. 相関性(Correlation)
測定結果は常に相関している。
AとBのスピンを(同じ方向で)測定すると:
– 50%の確率:A↑, B↓
– 50%の確率:A↓, B↑
– 0%の確率:A↑, B↑ または A↓, B↓
完全な反相関——距離に関わらず。
ベルの定理:アインシュタインの希望の崩壊
隠れた変数理論
アインシュタインは「隠れた変数」λの存在を望んだ:
– 粒子AとBは最初から確定した属性を持っている
– それらの属性はλによって決まる
– 我々がλを知らないだけだ
隠れた変数が存在するなら:
– もつれは単なる「無知」であり、「真の相関」ではない
– 「遠隔作用」はない
– 量子力学は不完全(λが欠けている)
ベルの不等式(1964年)
1964年、ジョン・ベル(John Bell)が驚くべき定理を証明した:
もし隠れた変数が存在するなら、実験結果はある不等式(ベルの不等式)を満たさなければならない。
しかし量子力学は予測する:この不等式は破られると。
したがって:実験すれば白黒つけられる。
簡略化されたベルの不等式(CHSH形式)
二つの粒子のスピンを異なる角度で測定する。
定義:S = E(a,b) – E(a,b’) + E(a’,b) + E(a’,b’)
ここで:
– E(a,b) = 角度aとbで測定したときの相関関数
– a, a’, b, b’ は四つの異なる測定角度
もし隠れた変数が存在するなら(局所実在論):
|S| ≤ 2
これがCHSH不等式(ベルの不等式の一形式)である。
量子力学の予測:
|S| = 2√2 ≈ 2.828
量子力学は不等式を破る!
実験:自然の審判
アスペの実験(1982年)
1982年、フランスの物理学者アラン・アスペ(Alain Aspect)が決定的な実験を行った。
実験の設計:
– もつれ光子対を生成
– 12メートル離れた二つの検出器に送る
– 測定角度をランダムに選択(「共謀」を排除)
– 大量の光子対を測定し、S値を計算
結果:S = 2.697 ± 0.015
結論:ベルの不等式を破った!量子力学が正しく、アインシュタインは間違っていた。
その後の実験
- 1998年、アントン・ツァイリンガー(Anton Zeilinger):もつれ光子間の距離400メートルでも不等式を破る
- 2015年、三つの「抜け穴なし」実験:
- オランダ・デルフト工科大学
- ウィーン大学
- 米国立標準技術研究所(NIST)
- 2017年、中国「墨子号」衛星:もつれ光子間の距離1200キロメートル、潘建偉チーム
- 2022年、ノーベル物理学賞:アスペ、クラウザー(John Clauser)、ツァイリンガーに授与
審判:もつれは実在する。隠れた変数は存在しない。アインシュタインは間違っていた。
日本の物理学界もこの分野に重要な貢献を果たしている。東京大学の古澤明教授のグループは、大規模な量子もつれ状態の生成と量子テレポーテーションの研究で世界をリードしてきた。彼らの研究は、もつれが実験室の好奇心ではなく、量子技術の基盤であることを示している。
華厳宗の因陀羅網:1500年前の洞察
7世紀、唐朝。
華厳宗三祖の法蔵(643-712)が則天武后に『華厳経』の「法界縁起」を講義していた。
則天武后には理解できなかった。そこで法蔵は一つの実験を行った。
法蔵の鏡室実験
法蔵は一つの部屋の八面(四壁、天井、床)すべてに鏡を設置した。
そして部屋の中央に一本の蝋燭を置いた。
則天武后が部屋に入ると、こう見えた:
– すべての鏡が蝋燭の炎を映している
– すべての鏡が他の鏡に映った蝋燭の炎も映している
– それぞれの反射がさらに無数の反射を含んでいる
– 無限の再帰、重々無尽
法蔵は言った:
「これが『因陀羅網』(インドラの網)です。
あらゆる一点が宇宙全体を映し出しています。
一点を変えれば、宇宙全体が変わります。
一即一切、一切即一。」
則天武后は悟った。
『華厳経』の因陀羅網
日本の読者にとって、「因陀羅網」(梵語:Indrajāla)は馴染みの深い概念であろう。東大寺の大仏殿——華厳宗の総本山——に足を踏み入れた方なら、その圧倒的なスケールに「一即一切」の感覚を体感したことがあるかもしれない。
『華厳経』(梵語:Avataṃsaka Sūtra、日本語では「大方広仏華厳経」)はこう記す:
帝釈天の宮殿に宝網があり、網の交点ごとに宝珠がある。
各宝珠はすべての他の宝珠の像を映し出す。
それぞれの像がさらにすべての宝珠の像を含む。
重々映現、無尽無窮。
この比喩は何を伝えているのか?
法界縁起:四つの層
華厳宗は「縁起」を四つの層に分類する:
1. 業感縁起(小乗仏教)
- 因果応報
- 善因善果、悪因悪果
2. 阿頼耶縁起(唯識宗)
- 一切唯心造
- 阿頼耶識(ālayavijñāna)が根源
3. 真如縁起(天台宗)
- 真如(仏性)が万法を生む
- 万法は本来一つ
4. 法界縁起(華厳宗)
- 一切法が互いに因縁となる
- 主因はなく、万法は平等
- 一法が一切法を含む
- ホログラフィック宇宙
日本における華厳思想の展開は特筆に値する。奈良時代の審祥(しんじょう)が新羅から華厳思想を伝え、良弁(ろうべん)が東大寺を華厳宗の中心とした。さらに明恵(みょうえ)上人は鎌倉時代に華厳思想を深く探究し、その修行日記『夢記』には、法界縁起の体験的理解が記されている。
四法界
華厳宗は法界を四層に分ける:
1. 事法界 — 現象界、万物が各々異なる
2. 理法界 — 本質界、一切は空(くう)
3. 理事無礙法界 — 空と色は不二、理と事が円融する
4. 事事無礙法界 — 最高の境地
– 事物間が無礙に融通する
– 一事が一切事を含む
– 一切事が一事を含む
– 因陀羅網の世界
この「事事無礙」の概念は、日本の禅思想にも深い影響を与えた。道元禅師の『正法眼蔵』における「有時」の巻は、時間と存在の相互浸透を論じており、華厳の事事無礙法界と共鳴する。「有時」(うじ)——存在は時間であり、時間は存在である——は、量子もつれにおける時空を超えた相関と驚くほど重なる。
十玄門:事事無礙の十の関係
華厳宗は事事無礙法界の十種の関係(十玄門)をまとめた:
- 同時具足相応門 — 一切が同時に存在し、互いに対応する
- 一多相容不同門 — 一が多であり、多が一である
- 諸法相即自在門 — 諸法が互いに即(そく)している
- 因陀羅網境界門 — 重々無尽の映現
- 微細相容安立門 — 極小が極大を含む
- 秘密隠顕倶成門 — 顕現と隠蔽が同時
- 諸蔵純雑具徳門 — 純と雑が円満に具足
- 十世隔法異成門 — 過去・現在・未来が互いに摂(せっ)し合う
- 唯心回転善成門 — 一切は心による
- 託事顕法生解門 — 事相に託して真理を顕す
核心は第四門「因陀羅網境界門」にある。
驚くべき対応:量子もつれ vs 因陀羅網
| 量子もつれ | 華厳宗・因陀羅網 |
|---|---|
| 非局所性 | 空間を超える |
| Aの測定が瞬時にBに影響 | 一珠を変えれば全網が動く |
| 時間の伝播を要しない | 「一時に具足」 |
| 全体性 | 一即一切 |
| もつれ状態は分解不能 | 一法が一切法を含む |
| 部分を独立に定義できない | 「微細相容」 |
| 相関性 | 互いの映現 |
| 粒子間の完全な相関 | 珠と珠が互いに反射 |
| 測定が相関を顕す | 観照が関係を顕す |
| 独立した実在の不在 | 法界縁起 |
| 粒子に独立した状態はない | 諸法に自性なし |
| 測定に依存する | 因縁に依って起こる |
構造的対応の深さ
重要なのは、これが単なる詩的比喩にとどまらないということだ。
量子もつれの数学的構造と因陀羅網の哲学的構造は、高度な類似性を示す:
- 非分離性(Non-separability)
- 量子:もつれ状態 ≠ 二つの独立状態の積
-
華厳:「一」は「一切」から切り離されて存在しえない
-
全息性(Holography)
- 量子:系のどの部分も全体の情報を含む
-
華厳:「一中に多を含み、多中に一を含む」
-
関係存在論(Relational Ontology)
- 量子:粒子の「状態」は関係であり、属性ではない
-
華厳:「法」の存在は関係であり、実体ではない
-
動的相依(Dynamic Interdependence)
- 量子:測定がもつれ系全体を変える
- 華厳:一法が変われば一切法が変わる
西田幾多郎が「絶対矛盾的自己同一」で論じた、対立するものが互いの内に自己を見出すという構造は、まさにこの関係存在論の哲学的表現と言えるだろう。量子もつれにおける粒子AとBは、まさに「対立するものの自己同一」である——独立していながら不可分、区別されていながら一体。
Pythonモデル:見えないつながりを可視化する
モデル1:EPR実験の完全シミュレーション
まず、EPR実験の基本アーキテクチャを構築します。EPRExperiment クラスがシミュレーション全体をカプセル化します:もつれ粒子対の生成から、スピンの測定、相関関数の計算まで。もつれ状態の核心は、粒子の位相が共有されていながら、測定結果はランダムであるということです。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Japanese font configuration
plt.rcParams['font.sans-serif'] = ['Hiragino Sans', 'Yu Gothic', 'Meiryo', 'Arial']
plt.rcParams['axes.unicode_minus'] = False
class EPRExperiment:
"""
EPR experiment simulation
Demonstrates: non-local correlations in quantum entanglement
"""
def __init__(self):
self.n_trials = 1000
def create_entangled_pair(self):
"""
Create entangled state: |ψ⟩ = (|↑↓⟩ - |↓↑⟩) / √2
Returns: phase
"""
# Random phase (but always anti-correlated upon measurement)
phase = np.random.uniform(0, 2*np.pi)
return phase
def measure_spin(self, phase, angle):
"""
Measure spin
angle: measurement angle (radians)
Returns: +1 (up) or -1 (down)
"""
# Quantum mechanical prediction: probability = cos²(θ/2)
prob_up = np.cos((angle - phase) / 2)**2
if np.random.random() < prob_up:
return +1 # up
else:
return -1 # down
次は実験の核心部分です。run_epr_experiment メソッドは、AliceとBobがそれぞれもつれ粒子を測定するプロセスをシミュレートします。phase + np.pi の設定に注目してください——これがベル状態の反相関特性を保証しています。毎回の実験で1000対のもつれ粒子を生成し、最終的に相関関数 E(a,b) を計算します。
def run_epr_experiment(self, angle_A, angle_B):
"""
Run EPR experiment
angle_A: Alice's measurement angle
angle_B: Bob's measurement angle
Returns: (results_A list, results_B list, correlation function)
"""
results_A = []
results_B = []
for _ in range(self.n_trials):
# Create entangled pair
phase = self.create_entangled_pair()
# Alice measures particle A
result_A = self.measure_spin(phase, angle_A)
# Bob measures particle B (Bell state: always opposite)
result_B = self.measure_spin(phase + np.pi, angle_B)
results_A.append(result_A)
results_B.append(result_B)
# Compute correlation function E(a,b) = ⟨A·B⟩
correlation = np.mean(np.array(results_A) * np.array(results_B))
return results_A, results_B, correlation
visualize_correlations メソッドがこのモデルの真骨頂です。量子相関関数が角度に応じてどう変化するかを描画します——美しい余弦曲線 E(θ) = -cos(θ) と、古典予測の線形関数を並べて比較します。この曲線と直線の差こそが、ベルの不等式が破られる数学的な源泉なのです。
def visualize_correlations(self):
"""
Visualize correlation function at different angles
"""
angles = np.linspace(0, np.pi, 50)
correlations_quantum = []
correlations_classical = []
for angle in angles:
_, _, corr_q = self.run_epr_experiment(0, angle)
correlations_quantum.append(corr_q)
# Classical prediction (local hidden variables)
corr_c = 1 - 2*angle/np.pi if angle <= np.pi/2 else -1
correlations_classical.append(corr_c)
# Quantum mechanical theoretical prediction
correlations_theory = -np.cos(angles)
fig, ax = plt.subplots(figsize=(12, 8))
ax.plot(angles * 180/np.pi, correlations_theory, 'b-',
linewidth=3, label='量子力学理論予測', alpha=0.7)
ax.scatter(angles * 180/np.pi, correlations_quantum,
c='red', s=50, label=f'実験結果({self.n_trials}回)',
alpha=0.6, zorder=5)
ax.plot(angles * 180/np.pi, correlations_classical, 'g--',
linewidth=2, label='古典予測(局所実在論)', alpha=0.7)
ax.set_xlabel('Bobの測定角度(度)', fontsize=13)
ax.set_ylabel('相関関数 E(0°, θ)', fontsize=13)
ax.set_title('EPR実験:量子相関 vs 古典予測\nAliceは0°に固定',
fontsize=15, fontweight='bold')
ax.legend(fontsize=12, loc='upper right')
ax.grid(True, alpha=0.3)
ax.axhline(0, color='black', linewidth=0.5)
# Annotate key angles
key_angles = [0, 45, 90, 135, 180]
for angle in key_angles:
angle_rad = angle * np.pi / 180
corr_theory = -np.cos(angle_rad)
ax.axvline(angle, color='gray', linestyle=':', alpha=0.5)
ax.text(angle, corr_theory - 0.15, f'{angle}°\n{corr_theory:.2f}',
ha='center', fontsize=9,
bbox=dict(boxstyle='round', facecolor='lightyellow', alpha=0.7))
plt.tight_layout()
plt.savefig('epr_correlations.png', dpi=300, bbox_inches='tight')
plt.show()
print("\n" + "="*70)
print("【EPR実験結果】")
print("="*70)
print(f"\n実験回数:{self.n_trials}")
print("\n主な発見:")
print(" ・量子相関:E(θ) = -cos(θ)")
print(" ・古典予測:E(θ) = 線形関数")
print(" ・実験は量子予測に一致し、古典予測には一致しない")
print("\n意義:")
print(" ・もつれは実在する")
print(" ・隠れた変数は存在しない")
print(" ・アインシュタインは間違っていた")
print("="*70)
最後に、demonstrate_nonlocality メソッドが三つの測定シナリオで非局所性の核心を示します。AliceとBobが同じ方向を測定すると完全な反相関が現れ、角度がずれると相関は徐々に弱まります——しかしいずれの場合も、この相関は古典物理学の限界を超えています。これこそ因陀羅網における「一珠を変えれば全網が動く」の数学的実現です。
def demonstrate_nonlocality(self):
"""
Demonstrate non-locality
"""
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
# Three scenarios
scenarios = [
(0, 0, 'AliceとBob\n同方向を測定'),
(0, np.pi/4, 'Alice 0°\nBob 45°'),
(0, np.pi/2, 'Alice 0°\nBob 90°'),
]
for idx, (angle_A, angle_B, title) in enumerate(scenarios):
ax = axes[idx]
results_A, results_B, correlation = self.run_epr_experiment(angle_A, angle_B)
# Plot result distribution
n_up_up = sum(1 for a, b in zip(results_A, results_B) if a == 1 and b == 1)
n_up_down = sum(1 for a, b in zip(results_A, results_B) if a == 1 and b == -1)
n_down_up = sum(1 for a, b in zip(results_A, results_B) if a == -1 and b == 1)
n_down_down = sum(1 for a, b in zip(results_A, results_B) if a == -1 and b == -1)
categories = ['↑↑', '↑↓', '↓↑', '↓↓']
counts = [n_up_up, n_up_down, n_down_up, n_down_down]
colors = ['green', 'blue', 'orange', 'red']
bars = ax.bar(categories, counts, color=colors, alpha=0.7, edgecolor='black', linewidth=2)
ax.set_ylabel('観測回数', fontsize=12)
ax.set_title(f'{title}\n相関 E = {correlation:.3f}',
fontsize=13, fontweight='bold')
ax.set_ylim(0, self.n_trials * 0.8)
ax.grid(True, alpha=0.3, axis='y')
# Annotate counts
for bar, count in zip(bars, counts):
height = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2., height + 20,
f'{count}\n({count/self.n_trials*100:.1f}%)',
ha='center', va='bottom', fontsize=10)
fig.text(0.5, 0.02,
'核心的洞察:どれほど離れていても、測定結果は常に相関する!\n'
'これは事前の取り決めではなく、真の「遠隔相関」である',
ha='center', fontsize=12,
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.6))
plt.tight_layout()
plt.subplots_adjust(bottom=0.15)
plt.savefig('epr_nonlocality.png', dpi=300, bbox_inches='tight')
plt.show()
# Execute
experiment = EPRExperiment()
experiment.visualize_correlations()
experiment.demonstrate_nonlocality()
実行結果:
– 図1:相関関数の角度依存性(量子 vs 古典)
– 図2:三つの測定シナリオにおける結果分布
– 量子相関が古典予測に反することを明瞭に示す
核心的発見:
E(θ) = -cos(θ)(量子)≠ 線形関数(古典)
この差異こそ、ベルの不等式が破られる源泉である!
モデル2:ベルの不等式(CHSH)検証
BellInequality クラスを定義します。二つの重要なメソッドがあります:quantum_correlation は量子力学が予測する相関関数 E(a,b) = -cos(a-b) を計算し、local_realism_correlation はアインシュタインが想定した隠れた変数理論をシミュレートします。両者の差異こそがベルの定理の核心です。
class BellInequality:
"""
Bell inequality (CHSH form) verification
"""
def __init__(self):
self.n_trials = 10000
def quantum_correlation(self, angle_A, angle_B):
"""
Quantum mechanical prediction of correlation function
E(a, b) = -cos(a - b)
"""
return -np.cos(angle_A - angle_B)
def local_realism_correlation(self, angle_A, angle_B, hidden_var):
"""
Local realism (hidden variable) prediction
hidden_var: λ ∈ [0, 2π]
"""
result_A = +1 if np.cos(angle_A - hidden_var) > 0 else -1
result_B = +1 if np.cos(angle_B - hidden_var + np.pi) > 0 else -1
return result_A * result_B
CHSH不等式の計算には、四つの「最適」測定角度を選ぶ必要があります:a=0, a’=π/2, b=π/4, b’=-π/4。この角度の組み合わせが、量子予測と古典的限界の差を最大化します。compute_chsh_quantum は解析的公式で直接計算し、compute_chsh_local はすべての可能な隠れた変数λの値を走査して平均をとります——アインシュタインが仮定した「粒子はもともと確定した属性を持つ」世界のシミュレーションです。
def compute_chsh_quantum(self):
"""
Compute CHSH value for quantum mechanics
S = E(a,b) - E(a,b') + E(a',b) + E(a',b')
"""
# Optimal angle selection
a = 0
a_prime = np.pi / 2
b = np.pi / 4
b_prime = -np.pi / 4
E_ab = self.quantum_correlation(a, b)
E_ab_prime = self.quantum_correlation(a, b_prime)
E_a_prime_b = self.quantum_correlation(a_prime, b)
E_a_prime_b_prime = self.quantum_correlation(a_prime, b_prime)
S_quantum = E_ab - E_ab_prime + E_a_prime_b + E_a_prime_b_prime
return S_quantum, (E_ab, E_ab_prime, E_a_prime_b, E_a_prime_b_prime)
def compute_chsh_local(self):
"""
Compute CHSH value for local realism
Average over all possible λ values
"""
a = 0
a_prime = np.pi / 2
b = np.pi / 4
b_prime = -np.pi / 4
lambdas = np.linspace(0, 2*np.pi, self.n_trials)
E_ab_list = []
E_ab_prime_list = []
E_a_prime_b_list = []
E_a_prime_b_prime_list = []
for lam in lambdas:
E_ab_list.append(self.local_realism_correlation(a, b, lam))
E_ab_prime_list.append(self.local_realism_correlation(a, b_prime, lam))
E_a_prime_b_list.append(self.local_realism_correlation(a_prime, b, lam))
E_a_prime_b_prime_list.append(self.local_realism_correlation(a_prime, b_prime, lam))
E_ab = np.mean(E_ab_list)
E_ab_prime = np.mean(E_ab_prime_list)
E_a_prime_b = np.mean(E_a_prime_b_list)
E_a_prime_b_prime = np.mean(E_a_prime_b_prime_list)
S_local = E_ab - E_ab_prime + E_a_prime_b + E_a_prime_b_prime
return S_local, (E_ab, E_ab_prime, E_a_prime_b, E_a_prime_b_prime)
可視化メソッドは、二つの世界観の予測を並べて表示します。左図はCHSHのS値を比較します:量子力学の2.828はベル限界の2.0を大幅に超え、隠れた変数理論は約1.5にしか達しません。右図は四つの測定配置における個別の相関関数を分解し、量子予測がすべての角度配置で古典的世界と異なることを明確に示します。
def visualize_bell_test(self):
"""
Visualize Bell inequality test
"""
S_quantum, E_quantum = self.compute_chsh_quantum()
S_local, E_local = self.compute_chsh_local()
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 7))
# === Left: CHSH value comparison ===
categories = ['量子力学', '局所実在論', 'ベル限界']
values = [S_quantum, S_local, 2.0]
colors = ['red', 'blue', 'green']
bars = ax1.bar(categories, np.abs(values), color=colors, alpha=0.7,
edgecolor='black', linewidth=2)
for bar, val in zip(bars, values):
height = bar.get_height()
ax1.text(bar.get_x() + bar.get_width()/2., height + 0.05,
f'{val:.3f}',
ha='center', va='bottom', fontsize=14, fontweight='bold')
ax1.axhline(2.0, color='green', linestyle='--', linewidth=3,
label='ベル限界 |S| ≤ 2')
ax1.axhline(2*np.sqrt(2), color='red', linestyle=':', linewidth=2,
label=f'量子限界 |S| = 2√2 ≈ {2*np.sqrt(2):.3f}')
ax1.set_ylabel('|S| 値', fontsize=13)
ax1.set_title('CHSH不等式テスト\n量子力学 vs 局所実在論',
fontsize=14, fontweight='bold')
ax1.legend(fontsize=11)
ax1.grid(True, alpha=0.3, axis='y')
ax1.set_ylim(0, 3)
if S_quantum > 2:
verdict = '破れた!量子力学の勝利'
verdict_color = 'red'
else:
verdict = '破れていない'
verdict_color = 'green'
ax1.text(0.5, 2.5, f'判定:{verdict}',
ha='center', fontsize=13, fontweight='bold',
bbox=dict(boxstyle='round', facecolor=verdict_color, alpha=0.5))
# === Right: Four correlation functions ===
labels = ['E(a,b)', 'E(a,b\')', 'E(a\',b)', 'E(a\',b\')']
x_pos = np.arange(len(labels))
quantum_vals = E_quantum
local_vals = E_local
width = 0.35
bars1 = ax2.bar(x_pos - width/2, quantum_vals, width,
label='量子力学', color='red', alpha=0.7,
edgecolor='black', linewidth=1.5)
bars2 = ax2.bar(x_pos + width/2, local_vals, width,
label='局所実在論', color='blue', alpha=0.7,
edgecolor='black', linewidth=1.5)
ax2.set_ylabel('相関関数 E', fontsize=13)
ax2.set_title('4つの測定配置の相関関数', fontsize=14, fontweight='bold')
ax2.set_xticks(x_pos)
ax2.set_xticklabels(labels, fontsize=11)
ax2.legend(fontsize=11)
ax2.axhline(0, color='black', linewidth=0.5)
ax2.grid(True, alpha=0.3, axis='y')
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax2.text(bar.get_x() + bar.get_width()/2., height + 0.03 if height > 0 else height - 0.08,
f'{height:.2f}',
ha='center', va='bottom' if height > 0 else 'top', fontsize=9)
plt.tight_layout()
plt.savefig('bell_inequality_test.png', dpi=300, bbox_inches='tight')
plt.show()
print("\n" + "="*70)
print("【ベルの不等式テスト結果】")
print("="*70)
print(f"\nCHSH不等式:|S| ≤ 2 (局所実在論が成り立つ場合)")
print(f"\n量子力学の予測:")
print(f" S = {S_quantum:.4f}")
print(f" |S| = {abs(S_quantum):.4f} > 2 → 不等式を破る")
print(f"\n局所実在論(隠れた変数):")
print(f" S = {S_local:.4f}")
print(f" |S| = {abs(S_local):.4f} ≤ 2 → 不等式を満たす")
print(f"\n実験結果(1982-2022):")
print(f" ・アスペ(1982):S ≈ 2.70 ± 0.05")
print(f" ・ツァイリンガー(1998):S ≈ 2.73 ± 0.02")
print(f" ・潘建偉(2017):S ≈ 2.37 ± 0.09(1200km)")
print(f"\n結論:")
print(f" → 量子力学は正しい")
print(f" × 局所実在論(隠れた変数理論)は誤り")
print(f" × アインシュタインの希望は崩壊した")
print("="*70)
# Execute
bell_test = BellInequality()
bell_test.visualize_bell_test()
実行結果:
– 左図:S値の比較(量子 2.828 vs 古典 1.5 vs 限界 2.0)
– 右図:四つの相関関数の対比
– 量子力学がベルの不等式を破ることを明瞭に示す
歴史的審判:
|S| = 2.828 > 2.0
量子力学はベルの不等式を破る
隠れた変数は存在しない
アインシュタインは間違っていた
モデル3:因陀羅網3D可視化
このモデルは四つのサブプロットで因陀羅網の3D可視化を構築します。まず画布を設定し、最も直感的な構造から始めます:4x4x4の3Dグリッドで、各ノードが一つの宝珠を表し、隣接する珠は灰色の線で結ばれます。赤く強調された中心ノードとオレンジ色の隣接ノードが、「一珠に触れれば隣珠も感ず」という局所的影響を示します。
import networkx as nx
from itertools import combinations
def indras_net_3d():
"""
3D visualization of Indra's Net
Demonstrates: infinite mutual reflection
"""
fig = plt.figure(figsize=(18, 12))
# === Upper left: Grid Indra's Net ===
ax1 = fig.add_subplot(2, 2, 1, projection='3d')
# Create 3D grid
n = 4
nodes = [(i, j, k) for i in range(n) for j in range(n) for k in range(n)]
# Plot nodes
xs, ys, zs = zip(*nodes)
ax1.scatter(xs, ys, zs, c='gold', s=200, edgecolors='black',
linewidth=2, alpha=0.8)
# Plot connections (only adjacent nodes)
for node1, node2 in combinations(nodes, 2):
distance = sum((a-b)**2 for a, b in zip(node1, node2))
if distance == 1: # Adjacent only
ax1.plot([node1[0], node2[0]],
[node1[1], node2[1]],
[node1[2], node2[2]],
'gray', alpha=0.3, linewidth=1)
# Highlight one node
highlight = (1, 1, 1)
ax1.scatter([highlight[0]], [highlight[1]], [highlight[2]],
c='red', s=500, edgecolors='black', linewidth=3, zorder=10)
# Highlight neighbors
neighbors = [(i, j, k) for i, j, k in nodes
if sum((a-b)**2 for a, b in zip((i,j,k), highlight)) == 1]
if neighbors:
nx_list, ny_list, nz_list = zip(*neighbors)
ax1.scatter(nx_list, ny_list, nz_list,
c='orange', s=300, edgecolors='red', linewidth=2, alpha=0.8)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_title('因陀羅網(3Dグリッド)\n各珠が隣接珠と結ばれる',
fontsize=13, fontweight='bold')
しかし因陀羅網の真の精髄は局所的接続ではなく、全結合にあります——すべての珠がすべての他の珠を映し出すのです。右上のサブプロットはこの全結合構造を示します:8つのノード間のすべてのペアが接続され、赤いノードの影響は赤い線を通じてすべての他のノードに直接到達します。中間を経由する必要はありません。これこそ量子もつれにおける非局所性の視覚的対応です。
# === Upper right: Fully connected Indra's Net ===
ax2 = fig.add_subplot(2, 2, 2, projection='3d')
n_nodes = 8
np.random.seed(42)
positions = np.random.randn(n_nodes, 3) * 2
for i in range(n_nodes):
for j in range(i+1, n_nodes):
ax2.plot([positions[i, 0], positions[j, 0]],
[positions[i, 1], positions[j, 1]],
[positions[i, 2], positions[j, 2]],
'b-', alpha=0.1, linewidth=0.5)
ax2.scatter(positions[:, 0], positions[:, 1], positions[:, 2],
c='cyan', s=300, edgecolors='black', linewidth=2, alpha=0.8)
highlight_idx = 0
ax2.scatter([positions[highlight_idx, 0]],
[positions[highlight_idx, 1]],
[positions[highlight_idx, 2]],
c='red', s=500, edgecolors='black', linewidth=3, zorder=10)
for j in range(1, n_nodes):
ax2.plot([positions[highlight_idx, 0], positions[j, 0]],
[positions[highlight_idx, 1], positions[j, 1]],
[positions[highlight_idx, 2], positions[j, 2]],
'r-', alpha=0.5, linewidth=2)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_zlabel('Z')
ax2.set_title('因陀羅網(全結合)\n一珠を変えれば全網が動く',
fontsize=13, fontweight='bold')
左下のサブプロットは視点を哲学から物理学に移します:10個の量子粒子からなるもつれネットワークです。線の透明度がもつれの強度を表しています——ある粒子対間の相関は強く、ある粒子対間では弱いですが、すべての粒子は一つの分離不可能な量子状態の中にあります。赤い粒子が「測定」されると、ネットワーク全体の状態が瞬時に更新されます。
# === Lower left: Quantum entanglement network ===
ax3 = fig.add_subplot(2, 2, 3, projection='3d')
n_particles = 10
np.random.seed(43)
particle_pos = np.random.randn(n_particles, 3) * 2
for i in range(n_particles):
for j in range(i+1, n_particles):
strength = np.random.random()
ax3.plot([particle_pos[i, 0], particle_pos[j, 0]],
[particle_pos[i, 1], particle_pos[j, 1]],
[particle_pos[i, 2], particle_pos[j, 2]],
'g-', alpha=strength*0.3, linewidth=1)
ax3.scatter(particle_pos[:, 0], particle_pos[:, 1], particle_pos[:, 2],
c='lightgreen', s=300, edgecolors='darkgreen',
linewidth=2, alpha=0.8)
highlight_idx = 3
ax3.scatter([particle_pos[highlight_idx, 0]],
[particle_pos[highlight_idx, 1]],
[particle_pos[highlight_idx, 2]],
c='red', s=500, edgecolors='black', linewidth=3, zorder=10)
ax3.set_xlabel('X')
ax3.set_ylabel('Y')
ax3.set_zlabel('Z')
ax3.set_title('量子もつれネットワーク\n一粒子の測定が全体に影響',
fontsize=13, fontweight='bold')
右下のサブプロットはテキストパネルで、華厳宗と量子力学の核心的洞察を並べて提示します。これは単なる飾りではありません——四つの図が示しているのは同じ真理の異なる側面であることを思い出させてくれます:宇宙は分かちがたき一つの全体であり、「分離」は我々の認識の投射にすぎないのです。
# === Lower right: Correspondence panel ===
ax4 = fig.add_subplot(2, 2, 4)
ax4.axis('off')
text = '''
【因陀羅網 vs 量子もつれ】
華厳宗『華厳経』(7世紀):
「帝釈天の宮に宝網あり、
網上の珠珠互いに映現し、
一珠に一切珠の影を含み、
重々無尽にして不思議なり。」
━━━━━━━━━━━━━━━━━━━━━━━━
量子力学(20世紀):
もつれ状態 |ψ⟩ は分解不能
粒子Aと粒子Bは非局所的に相関
Aを測定 → 瞬時にBに影響
全体 > 部分の総和
━━━━━━━━━━━━━━━━━━━━━━━━
共通の洞察:
宇宙は分かちがたき一つの全体
部分は全体から離れて存在しえない
局所を変える = 全体を変える
「分離」は幻想
華厳宗:一即一切、一切即一
量子力学:もつれ即全体、分離不可
'''
ax4.text(0.1, 0.5, text, fontsize=11, va='center', family='monospace',
bbox=dict(boxstyle='round', facecolor='lightyellow', alpha=0.8))
plt.tight_layout()
plt.savefig('indras_net_3d_visualization.png', dpi=300, bbox_inches='tight')
plt.show()
print("\n" + "="*70)
print("【因陀羅網:1500年前の量子的洞察】")
print("="*70)
print("\n法蔵が則天武后に見せた鏡室(7世紀):")
print(" ・八面すべてが鏡")
print(" ・中央に一本の蝋燭")
print(" ・無数の映像、重々映現")
print(" → 一即一切の直観的デモンストレーション")
print("\n華厳宗の十玄門(第四門):")
print(" 「因陀羅網境界門」")
print(" → 一切法は珠網の如く、互いに映現する")
print("\n現代の量子もつれ:")
print(" ・EPR状態:|ψ⟩ = (|↑↓⟩ - |↓↑⟩)/√2")
print(" ・Aを測定 → 瞬時にBが確定")
print(" ・分離不可能な全体")
print("\n2022年ノーベル物理学賞:")
print(" Aspect、Clauser、Zeilingerに授与")
print(" 表彰理由:量子もつれの実在性の証明")
print("="*70)
# Execute
indras_net_3d()
実行結果:
– 四つの3D図:グリッドネットワーク、全結合ネットワーク、量子もつれ、対応パネル
– 「一即一切」の構造を可視化
哲学的衝撃:
華厳宗が1500年前に因陀羅網で描いた宇宙の構造は、20世紀の量子もつれが明らかにした非局所的相関と、驚くほどに似ている!
モデル4:非局所相関インタラクティブ実験
このデモの上半分は衝撃的な図を描きます:もつれ粒子の間隔を地球の直径(0.001光年)から1000光年まで引き延ばしても、相関の強度はほぼ変わりません。これは「力」に関する日常的直感に完全に反しています——重力も電磁力も距離とともに減衰しますが、もつれ相関は減衰しないのです。華厳宗の言葉で言えば、これこそ「一即一切」の物理的実現です。
def nonlocal_correlation_demo():
"""
Non-local correlation interactive demonstration
Let users 'experience' action at a distance
"""
fig = plt.figure(figsize=(16, 10))
# Simulation parameters
n_measurements = 50
distance_light_years = [0.001, 0.1, 1, 10, 100, 1000]
# === Upper plot: Distance does not affect correlation strength ===
ax1 = fig.add_subplot(2, 1, 1)
correlations = []
for distance in distance_light_years:
corr = -np.cos(np.pi/4) # Fixed angle
noise = np.random.randn() * 0.05 # Experimental noise
correlations.append(corr + noise)
ax1.plot(distance_light_years, correlations, 'ro-',
markersize=12, linewidth=3, label='実験測定値')
ax1.axhline(correlations[0], color='blue', linestyle='--',
linewidth=2, label=f'理論値 ≈ {correlations[0]:.3f}')
ax1.set_xscale('log')
ax1.set_xlabel('粒子間の距離(光年)', fontsize=13)
ax1.set_ylabel('相関の強度', fontsize=13)
ax1.set_title('量子もつれ:距離は相関を弱めない\n(「局所性」原理の破れ)',
fontsize=15, fontweight='bold')
ax1.legend(fontsize=12)
ax1.grid(True, alpha=0.3)
# Annotate key distances
annotations = [
(0.001, '地球の直径'),
(1, '1光年'),
(1000, '1000光年\n天の川銀河の\n直径の1%'),
]
for distance, label in annotations:
idx = distance_light_years.index(distance)
ax1.annotate(label, xy=(distance, correlations[idx]),
xytext=(distance*3, correlations[idx]+0.1),
fontsize=10, ha='left',
bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.6),
arrowprops=dict(arrowstyle='->', lw=1.5))
ax1.text(0.5, 0.15,
'要点:距離に関わらず、相関の強度は不変!\n'
'情報は「瞬時」に到達し、伝播時間を要しない',
transform=ax1.transAxes, ha='center', fontsize=11,
bbox=dict(boxstyle='round', facecolor='lightcoral', alpha=0.7))
下半分はタイムライン図で、非局所性の最も不安をかきたてる側面を示します:Aliceがt=2秒にスピンを測定すると、1000光年先にあるBobの粒子が「瞬時に」状態確定します。もし情報が光速で伝わる必要があるなら、この確定プロセスには1000年かかるはずです。しかし量子力学は言います:それは即座に起こると。これは情報伝達ではなく、全体の状態の同時更新です——なぜなら、もつれ粒子は真に「分離」されたことなど一度もないからです。
# === Lower plot: Timeline simulation ===
ax2 = fig.add_subplot(2, 1, 2)
time_events = [
(0, 'AliceとBobが\nもつれ粒子対を受け取る', 'green'),
(1, 'AliceとBobが離れる\n距離:1000光年', 'blue'),
(2, 'Aliceがスピンを測定\n(t = 2秒)', 'red'),
(2.0000001, 'Bobの粒子が\n「瞬時に」確定\n(遅延なし!)', 'red'),
(3, '光速で伝わるなら\n1000年かかるはず', 'gray'),
]
for t, label, color in time_events:
if t < 2.5:
ax2.scatter([t], [1], s=500, c=color, zorder=5,
edgecolors='black', linewidth=2)
ax2.text(t, 1.3, label, ha='center', fontsize=10,
bbox=dict(boxstyle='round', facecolor=color, alpha=0.5))
ax2.plot([0, 3], [1, 1], 'k-', linewidth=3)
ax2.set_xlim(-0.5, 3.5)
ax2.set_ylim(0.5, 2)
ax2.set_xlabel('時間(秒)', fontsize=13)
ax2.set_title('量子もつれのタイムライン:「瞬時の」影響',
fontsize=15, fontweight='bold')
ax2.set_yticks([])
ax2.grid(True, alpha=0.3, axis='x')
ax2.annotate('', xy=(2.0000001, 0.9), xytext=(2, 0.9),
arrowprops=dict(arrowstyle='->', lw=5, color='red'))
ax2.text(2.00000005, 0.7, '瞬時!', ha='center', fontsize=12,
fontweight='bold', color='red')
ax2.plot([2, 3], [0.8, 0.8], 'gray', linestyle=':', linewidth=3)
ax2.text(2.5, 0.65, '光速では1000年かかる', ha='center',
fontsize=10, color='gray')
plt.tight_layout()
plt.savefig('nonlocal_correlation_demo.png', dpi=300, bbox_inches='tight')
plt.show()
print("\n" + "="*70)
print("【非局所性:空間と時間を超えて】")
print("="*70)
print("\n実験的事実:")
print(" 1. AliceとBobがもつれ粒子対を共有")
print(" 2. 1000光年離れる")
print(" 3. Aliceが測定 → Bobの粒子が瞬時に確定")
print(" 4. 相関の強度は距離で減衰しない")
print("\n三つの可能な説明:")
print(" × 情報が超光速で伝播する?")
print(" → 相対性理論に違反")
print(" × 粒子が事前に「取り決め」ている?")
print(" → ベルの不等式が排除")
print(" ○ もつれ粒子はもともと一つの全体")
print(" → 「伝播」はない。なぜなら「分離」がないから")
print("\n華厳宗の視点:")
print(" 「一切法は互いに縁起する」")
print(" → 独立した「粒子A」と「粒子B」は存在しない")
print(" → あるのは分離不可能な「系AB」のみ")
print(" → 「分離」は幻想である")
print("="*70)
# Execute
nonlocal_correlation_demo()



実行結果:
– 上図:相関の強度が距離で減衰しないことを示す(対数スケール)
– 下図:「瞬時の」影響をタイムラインで表示
– 非局所性の可視化
最も衝撃的な洞察:
もつれ粒子は「二つの」粒子ではなく、「一つの」分かちがたい全体である。
「分離」は我々の錯覚にすぎない。
これは華厳宗の「一即一切」の洞察と完全に一致する!
宇宙は一つの全体:哲学と物理学の合流
物理学の革命
量子もつれは300年来の「局所実在論」を覆した:
局所実在論の二つの仮定:
1. 実在性(Realism):物体は観察から独立した属性を持つ
2. 局所性(Locality):遠方の事象がここに瞬時に影響することはない
アインシュタインはこの二つの仮定を信じていた。
しかしベルの定理+実験が証明した:少なくとも一方の仮定は誤りである。
主流の解釈:局所性が破れている。
– もつれ粒子は非局所的に相関する
– 一方の測定が瞬時に他方に影響する
– 宇宙は最も深い層において分かちがたき一つの全体である
華厳宗の智慧
華厳宗は1500年前にすでにこう主張していた:
法界縁起:一切法が互いに因縁となり、分割しえない。
事事無礙法界:
– 一中に多を含み、多中に一を含む
– 一即一切、一切即一
– 小中に大を現し、大中に小を現す
– 微塵に十方を含む
法蔵は因陀羅網の比喩を用いた:
すべての珠がすべての珠を映し出す。
一珠を変えれば、全網が変わる。
部分が即ち全体、全体が即ち部分。
なぜ両者はこれほど似ているのか?
三つの可能性:
1. 偶然の一致?
ありそうにない。構造的対応があまりにも精密である。
2. 華厳宗が量子力学に影響を与えた?
ある程度の可能性がある。
– シュレーディンガーは『ヴェーダ』『ウパニシャッド』を研究していた
– ボーアは紋章に太極図を選んだ
– ハイゼンベルクは1929年のインド訪問後、深い影響を受けた
– 湯川秀樹は、自身の中間子理論の発想が「荘子」の思想と無関係ではないと語っている
日本の物理学者たちは、東洋哲学と物理学の架橋において独自の立場にあった。湯川秀樹は幼少期に漢籍に親しみ、その素粒子論の構想に東洋的な自然観が影響を与えたことを自伝『旅人』で述べている。また、朝永振一郎は量子電磁力学の繰り込み理論でノーベル賞を受賞したが、彼の物理学への姿勢には日本的な美意識——簡潔さ、対称性、調和への感覚——が反映されていると言われる。
しかし量子力学は主として実験に基づいており、哲学に基づくものではない。
3. 両者が実在の本質に触れている?
最もありそうな答え。
異なる道、同じ真理:
– 物理学:実験 → 数学 → 理論
– 華厳宗:観照 → 体悟 → 表現
両者が発見したのは:
– 宇宙は「独立した個体の集合」ではない
– 「分かちがたき一つの全体」である
– 「分離」は我々の概念の投射にすぎない
鈴木大拙が「華厳宗は、事事無礙の世界——あらゆる事物が互いの内にあり、しかも個々のままである世界——を説く」と書いたとき、彼はまさに量子もつれの本質を、仏教の言葉で表現していたのかもしれない。
思考問題
-
もつれ粒子が1000光年離れていて、一方の測定が瞬時に他方に影響するとすれば、これは相対性理論に反するのか?なぜもつれを使って情報を送ることはできないのか?
-
アインシュタインは量子もつれを「不気味な遠隔作用」と呼んだ。なぜ彼はそれほど反対したのか?彼の直感のどこが間違っていたのか?
-
華厳宗の「一即一切」は詩的表現か、それとも厳密に証明しうる哲学命題か?道元の「有時」は、これにどのような洞察を加えるか?
-
もし宇宙が真に分かちがたき一つの全体であるならば、「私」と「あなた」の境界はどこにあるのか?
-
2022年のノーベル物理学賞が量子もつれ実験に授与されたことは、「実在」の理解にどのような啓示を与えるか?
結語
Pythonで EPR実験をシミュレートし、3Dグラフィックスで因陀羅網を可視化したとき、私たちは単に物理学や哲学の研究をしているのではない。
もっと深い真理を探しているのだ。
宇宙は独立した部分を寄せ集めたものではない。最初から一つの全体なのだ。
アインシュタインは「不気味な遠隔作用」という言葉で自らの恐怖を表現した。法蔵は因陀羅網の宝珠でその洞察を示した。道元は「有時」において存在と時間の不可分性を説いた。
二つの道、一つの真理:
- 非局所性:もつれ粒子が空間を超えて瞬時に相関する
- 全体性:部分は全体から離れて独立に存在しえない
- 関係存在論:「存在」は属性ではなく関係である
- 観察者の役割:測定(観照)が我々の見る「実在」を創り出す
1500年前、法蔵が鏡室で則天武后に示したものは、まさに今日の量子物理学者が実験室で証明しているものなのだ。
異なる言語、同じ宇宙。
