Friedrich Balck  > Biosensor  > Physik  > Doppelspalt-Programm

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



Home
www.biosensor-physik.de (c)  15.12.2007 F.Balck



© BioSensor-Physik 2008 · Impressum