simulateDoubleSlitExperiment.js
解説:
-
関数の概要:
simulateDoubleSlitExperiment
関数は、検出スクリーン上の強度分布を計算することで、二重スリット実験で観察される干渉パターンをシミュレートします。
-
パラメータ:
numParticles
:シミュレートする粒子の数(例:光子や電子)。粒子数が多いほど、より滑らかな干渉パターンが得られます。screenWidth
:粒子が検出されるスクリーンの全幅。screenResolution
:スクリーン上で強度が計算される離散的なポイントの数。slitSeparation
:2つのスリット間の距離。wavelength
:粒子に関連する波長(波としての性質に関連)。
-
シミュレーションの手順:
- 初期化:
- 各ポイントでの累積強度を格納するための配列
screen
を作成します。 - スクリーンの中心に対する2つのスリットの位置を計算します。
- 各ポイントでの累積強度を格納するための配列
- 粒子のシミュレーション:
- 各粒子について、スクリーン上のランダムな位置
x
を選択します。 - 各スリットからポイント
x
までの経路差を計算します。 - 経路差と波長を使用して位相差を計算します。
- 干渉パターンを表すコサイン二乗関数を使用して、ポイント
x
での確率(強度)を計算します。 screen
配列に強度を累積します。
- 各粒子について、スクリーン上のランダムな位置
- 正規化:
- すべての粒子をシミュレートした後、可視化のために最大強度に対して強度を正規化します。
- 出力:
- スクリーン上の各ポイントでの位置と正規化された強度をコンソールに表示します。
- 関数は、さらなる解析や可視化に使用できる
normalizedScreen
配列を返します。
- 初期化:
-
可視化:
- 得られた強度分布は、二重スリット実験の特徴的な干渉パターンを表し、建設的干渉と破壊的干渉による明暗の縞模様が交互に現れます。
注意:
- このシミュレーションは、二重スリット実験の簡略化された表現です。実際の量子力学的なシナリオでは、粒子は粒子的性質と波動的性質の両方を示し、その挙動は波動関数によって記述されます。
- このコードは、量子干渉効果を近似するために古典的な計算を使用しています。量子レベルでのより正確なシミュレーションには、専門的な量子物理学ソフトウェアや数値解析手法が必要です。
- 関数は強度分布をコンソールにログ出力します。より良い可視化のために、Chart.js や D3.js などのグラフ描画ライブラリを使用して
intensityDistribution
配列をプロットすることを検討してください。
出力例:
Screen intensity distribution:
Position: -0.0100 m, Intensity: 0.0000
Position: -0.0099 m, Intensity: 0.0025
Position: -0.0098 m, Intensity: 0.0100
...
Position: 0.0098 m, Intensity: 0.0100
Position: 0.0099 m, Intensity: 0.0025
Position: 0.0100 m, Intensity: 0.0000
パラメータの numParticles
、screenResolution
、slitSeparation
を調整して、干渉パターンにどのような影響があるかを観察してみてください。