Beobachtungen:
Doppelspalt, Rechenprogramm für das Beugungsbild
Von zwei Spalten im Abstand
DopAbstand
mit
MaxSpalt-Stützstellen
gehen jeweils Kreiswellen der Wellenlänge
Lambda aus. Sie treffen auf die
MaxProj-Stützstellen der
Projektionsfläche, die den
Abstand
zu den Spalten hat.
Aus der Addition der phaserichtig dort ermittelten Amplituden ergibt
sich
die
Intensität als Funktion des
Ortes auf der Projektionsfläche.
(FB)
Public Sub Spalt()
Dim nSpalt As Integer
Dim mProj As Integer
Dim SpaltBreite As Single
Dim ProjBreite As Single
Dim Abstand As Single
Dim Laenge As Single
Dim Lambda As Single
Dim DopAbstand As Single
Dim SpaltPosX(10000) As Single
Dim SpaltPosY(10000) As Single
Dim ProjPosX(10000) As Single
Dim ProjPosY(10000) As Single
Dim ProjIntens(10000) As Single
Dim Amplitude As Double
Dim Entfernung As Single
Dim trenn As Integer
Dim k As Integer
Dim m As Integer
Dim a As Double
Dim b As Double
Dim MaxSpalt As Integer
Dim MaxProj As Integer
Dim pi As Single
' **************************************************
MaxSpalt = 1000 ' Anzahl der Stützstellen im Spalt
MaxProj = 1000 ' Anzahl der Stützstellen auf der
Projektionsfläche
SpaltBreite = 0.133 ' Spaltbreite
ProjBreite = 8 ' Breite der Projektionsfläche
Abstand = 2 ' Abstand Spalt
Projektionsfläche
Lambda = 0.073 ' Wellenlänge
DopAbstand = 0.9 ' Abstand der
beiden Spalte
pi = 4 * Atn(1)
trenn = 9
Open "spalt.dat" For Output As 5
Print #5, "SpaltBreite ", SpaltBreite, _
"ProjBreite",
ProjBreite, _
"Abstand",
Abstand, _
"Lambda", Lambda
_
; "DopAbst",
DopAbstand
Print #5, "********************"
'**************************************************************************************
' Stützpunkte auf erster Hälfte Spalt
For k = 1 To MaxSpalt / 2
SpaltPosX(k) = (MaxSpalt / 2 - k) * SpaltBreite /
MaxSpalt - DopAbstand / 2
SpaltPosY(k) = 0
Next k
' Stützpunkte auf zweiter Hälfte Spalt
For k = MaxSpalt / 2 + 1 To MaxSpalt
SpaltPosX(k) = (MaxSpalt / 2 - k) * SpaltBreite /
MaxSpalt + DopAbstand / 2
SpaltPosY(k) = 0
Next k
'**************************************************************************************
' Stützpunkte auf Projektionsfläche
For k = 1 To MaxProj
ProjPosX(k) = (MaxProj / 2 - k) * ProjBreite /
MaxProj
ProjPosY(k) = Abstand
Next k
'**************************************************************************************
For k = 1 To MaxProj ' für alle Stützpunke auf der
Projektionsfläche
ProjIntens(k) = 0
Amplitude = 0
'
für alle Stützpunke auf dem Spalt
For m = 1 To
MaxSpalt ' Bestimmung des Abstandes zwischen den Stützpunkten, und
der Phase
Entfernung = Sqr _
((SpaltPosX(m) -
ProjPosX(k)) ^ 2 + _
(SpaltPosY(m) -
ProjPosY(k)) ^ 2)
b = Entfernung /
Lambda ' Anzahl der Wellen als Dezimalzahl
a = b - Int(b) '
vorzeichenbehafteter Rest = Bruchteil einer Welle
'
= phase (0...1)
'
daraus die Amplitude errechnet = sin ( a * 2pi )
Amplitude = Amplitude
+ Sin(a * 2 * pi)
' = summe aller
Teilstrahlen zu diesem Projektionspunkt
Next m
'**************************************************************************************
ProjIntens(k) = Amplitude ^ 2 / MaxSpalt / MaxSpalt
' Quadriert ergibt Intensität
und durch (Anzahl der Punkte)^2 normiert
Print #5, Format(k, "0000") & Chr(trenn) & _
Format(ProjPosX(k), "000.000") & Chr(trenn) & _
Format(ProjIntens(k), "000.00000")
Next k
'**************************************************************************************
Close #5
End
End Sub