二重スリットの実験をシミュレートする関数

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

 

パラメータの numParticlesscreenResolutionslitSeparation を調整して、干渉パターンにどのような影響があるかを観察してみてください。

 

Joke CodeのTシャツ、ロングT、スウェットも販売しています!

ブログに戻る