Messwertanalyse mit Mathematica
(indirekter Halbleiter, starke Dotierung)

Computeralgebraprogramme gehören heute zum selbstverständlichen Werkzeug des Physikers. Sie sind  für die Lösung anspruchsvoller numerischer und analytischer Aufgabenstellungen hervorragend geeignet, und können  auch bei  Messwertanalysen vorteilhaft eingesetzt werden. Im Folgenden wird beispielhaft die Lösung von Fragestellungen mit Mathematica behandelt, die im Versuch Festkörperoptik-Bandparameter und optische Konstanten zu lösen sind.

1. Voreinstellungen
Zunächst müssen Programmpakete geladen werden, die für die weitere Datenverarbeitung  benötigt werden. Dies geschieht mit der Anweisung << gefolgt von dem entsprechenden Programmpaket. Um den Graphiken ein einheitliches Aussehen zu geben, werden mit der Anweisung SetOptions[...] Voreinstellungen für die Plotfunktionen MultipleListPlot, Plot, LogPlot und LogLogPlot getroffen. Bei Ausführung der jeweiligen Plotfunktion wird immer ein Rahmen und ein Gitter gezeichnet, mehrere Figuren in einem Plot werden farblich unterschieden.Weitere Einstellmöglichkeiten können über die Anweisung Options[...] abgefragt werden.

\(\(\(Clear["Global`*"]\)\(
\)\(
\)
    \) (*Laden\ der\ Programmpakete*) \)
<< Statistics`DataSmoothing`
<< NumericalMath`NLimit`
<< Graphics`
<< Graphics`Legend`
<< 
      Graphics`MultipleListPlot`


     (*Voreinstellungen für Plotanweisungen*) 
SetOptions[MultipleListPlot, PlotJoined -> True, 
        Frame -> True, GridLines -> Automatic, 
        TextStyle -> {FontFamily -> Times, FontSize -> 12, 
            FontWeight -> Bold}, 
        FrameStyle -> {{ Thickness[0.0055]}, { Thickness[0.0055]}, { 
              Thickness[0.0055]}, { Thickness[0.0055]}}, 
        FrameTicks -> Automatic, 
        PlotStyle -> {{Hue[1], Thickness[0]}, {Hue[0.8], 
              Thickness[0]}, {Hue[0.4], Thickness[0]}, {Hue[0.2], 
              Thickness[0]}}, ErrorBarFunction -> None, 
        SymbolShape -> None];

    
SetOptions[Plot, Frame -> True, GridLines -> Automatic, 
        TextStyle -> {FontFamily -> Times, FontSize -> 12, 
            FontWeight -> Bold}, 
        PlotStyle -> {{Hue[1], Thickness[0]}, {Hue[0.8], 
              Thickness[0]}, {Hue[0.4], Thickness[0]}, {Hue[0.2], 
              Thickness[0]}}, 
        FrameStyle -> {{ Thickness[0.0055]}, { Thickness[0.0055]}, { 
              Thickness[0.0055]}, { Thickness[0.0055]}}, 
        FrameTicks -> Automatic];

    
SetOptions[LogPlot, Frame -> True, 
        GridLines -> Automatic, 
        TextStyle -> {FontFamily -> Times, FontSize -> 12, 
            FontWeight -> Bold}, 
        PlotStyle -> {{Hue[1], Thickness[0]}, {Hue[0.8], 
              Thickness[0]}, {Hue[0.4], Thickness[0]}, {Hue[0.2], 
              Thickness[0]}}, 
        FrameStyle -> {{ Thickness[0.0055]}, { Thickness[0.0055]}, { 
              Thickness[0.0055]}, { Thickness[0.0055]}}, 
        FrameTicks -> Automatic];

    
SetOptions[LogLogPlot, Frame -> True, 
        GridLines -> Automatic, 
        TextStyle -> {FontFamily -> Times, FontSize -> 12, 
            FontWeight -> Bold}, 
        PlotStyle -> {{Hue[1], Thickness[0]}, {Hue[0.8], 
              Thickness[0]}, {Hue[0.4], Thickness[0]}, {Hue[0.2], 
              Thickness[0]}}, 
        FrameStyle -> {{ Thickness[0.0055]}, { Thickness[0.0055]}, { 
              Thickness[0.0055]}, { Thickness[0.0055]}}, 
        FrameTicks -> Automatic];

2. Das Einlesen und die Darstellung von Daten
Die zu verarbeitenden Daten sollten als Datenpunkttabellen gespeichert sein. Wie die Datenpunkttabellen zu erzeugen sind, ist der Bedienungsanleitung für das Fourier-Spektrometer zu entnehmen. Durch SetDirectory["..."] wird der Ort festgelegt, an dem die Daten gespeichert wurden. Es ist nur der Pfad anzugeben, z.B. C:\Dokumente und Einstellungen\........... Der aktuelle Pfad kann mit Directory[] überprüft werden. Durch die Anweisung Import[...] werden die Daten als Liste eingelesen und unter dem vorausgehenden Namen gepeichert. Die Listen können dann mit den entsprechenden Graphikanweisungen dargestellt werden. Im folgenden Beispiel werden Transmissions- und Reflexionspektren eingelesen und dargestellt. Alle Energien werden in der spektroskopischen Notation in Abhängigkeit von der Wellenzahl ν angegeben.

\(\(\( (*Überprüfung\ der\ Pfadeinstellung*) \)\(
\)\(\(Directory[];\)

 (*Falls\ erforderlich, \ 
      Eingabe\ eines\ neuen\ Pfades*) 

    \(SetDirectory["C:\Dokumente und Einstellungen\Edwin Batke\Desktop\Extrahierte Dateien\Final measurements"];\)

 (*Einlesen\ der\ \(Datenfiles : 
Die\ Daten\ werden\ in\ Listen\ mit\ den\ Namen\ reflexp2\ und\ reflexp1\ \(\(eingelesen\)\(.\)\)\)\ *) 


    \(reflexp2 = 
        Import["R-Si-hochdotiert-TQ-8cm-1.DPT", "Table"];\)

    \(reflexp1 = 
        Import["R-Si-hochdotiert-GK-8cm-1.DPT", "Table"];\)



    MultipleListPlot[{reflexp1}, PlotRange -> {{350, 7000}, {0.0, 1}}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Reflexion"}, 
      PlotLabel -> "Si hochdotiert"]


    MultipleListPlot[{reflexp2}, PlotRange -> {{2000, 15000}, {0.0, 1}}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Reflexion"}, 
      PlotLabel -> "Si hochdotiert"]


    \)\)\)

3. Das Zusammenfügen von Spektren
Der Strahlteiler und die Quelle bestimmen wesentlich den nutzbaren Messbereich eines Fourierspektrometers. Um in einem weiten Frequenzbereich ein gutes Signal-Rausch-Verhältnis zu erhalten, müssen Strahlteiler und Quelle u.U. gewechselt werden. Einzelspektren, die bei verschiedenen Strahlteiler-Quelle-Kombinationen gemessen wurden, können dann zu einem Gesamtspektrum zusammengefügt werden. Das Zusammenfügen erfolgt in mehreren Schritten. Zunächst werden aus den experimentellen Listen durch Interpolation Funktionen generiert, die dann genutzt werden, um eine Tabelle zu erzeugen. Der Übergang zwischen den Einzelspektren  wird u.U. nicht perfekt sein, es ist deshalb erforderlich, einen multiplikativen Faktor einzufügen, der beide Spektren im Übergangsbereich zur Deckung bringt. Da in der Kombination aus Wolfram-Lampe und Quarz-Strahlteiler Nichtlinearitäten des Detektors eine größere Rolle spielen als in der Kombination Globar-KBr, sollte die Messung in der Kombination Globar-KBr als Referenz dienen. Schließlich sollte noch überprüft werden, ob die Summe aus Reflexion und Transmission im gesamten Wellenzahlbereich kleiner gleich 1 ist. Wird der Wert 1 überschritten, ist von einem Messfehler auszugehen.

\(\(\( (*Aus\ den\ experimentellen\ Daten\ werden\ Interpolationsfunktionen\ erzeugt*) \)\(\(reflint1 = 
        Interpolation[reflexp1, 
          InterpolationOrder -> 1];\)

    \(reflint2 = 
        Interpolation[reflexp2, 
          InterpolationOrder -> 
            1];\)

 (*Spektren\ sollen\ bei\ 4100\ cm - 1\ zusammengefügt\ werden\ *) 

    \(übergang = 
        4100;\)

 (*\ 
      Eingabe\ des\ multiplikativen\ Faktors\ für\ den\ höheren\ Wellenzahlbereich*) 

    \(rfaktor = 0.9945;\)


     (*Erzeugung\ einer\ Tabelle\ aus\ den\ Interpolationsfunktionen, \ 
      wobei\ der\ Frequenzbereich\  > \ 
        4100\ cm - 
          1\ mit\ dem\ Faktor\ rfaktor\ multipliziert\ wird*) \(refl = 
        Table[{ν, 
            If[ν ≤ übergang, reflint1[ν], 
              rfaktor*reflint2[ν]]}, {ν, 350, 15000, 
            8}];\)

 (*Darstellung\ der\ zusammengefügten\ Spektren*) 

    MultipleListPlot[{refl}, PlotRange -> {{350, 15000}, {0, 1}}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Reflexion"}, 
      PlotLabel -> "Si hochdotiert"]

 (*Wiedergabe\ des\ Übergangbereichs\ im\ Wellenzahlbereich\ von\ 4095\ und\ 4105\ cm - 
        1\ zur\ Überprüfung\ der\ Größe\ des\ multiplikativen\ Faktors\ rfactor*) 

    MultipleListPlot[{refl}, 
      PlotRange -> {{übergang - 5, übergang + 
              5}, {0.25, 0.3}}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Reflexion"}, 
      PlotLabel -> "Si hochdotiert"]


    \)\)\)

4. Intrabandabsorption: Absorption freier Ladungsträger 
Freie Ladungsträger in einer dielektrischen Schicht mit dielektrischer Konstanten (Subscript[ϵ, s]) reflektieren elektromagnetische Strahlung stark bis zur sogenannten Plasmakante (Subscript[ω, pl])=\(\@\(\(\(n\_e\) e\^2\)\/\(\(m\_eff\) \(ϵ\_s\) ϵ\_0\)\)\). Dort wird die Reflexion minimal. Oberhalb der Plasmakante steigt die Reflexion  wieder an und nimmt dann einen nahezu konstanten Wert an, der im Falle starker Absorption durch  (((((Subscript[ϵ, s]) - 1))^2)/((((Subscript[ϵ, s]) + 1))^2)) gegeben ist.  Der Einfluss freier Ladungsträger wird durch eine dielektrische Funktion ϵ(ω) = (Subscript[ϵ, s])+i((σ (ω))/ω)(Subscript[ϵ, 0])moduliert, wobei σ(ω) = \(\(\(\(\(n\_e\) \(e\^2\) τ\)\/m\_L\) \(1\/\(1 - iωτ\)\)\(\ \)\)\)die Hochfrequenzleitfähigkeit des Ladungsträgergases nach Drude wiedergibt. In dem Ausdruck für die Hochfrequenzleitfähigkeit ist (Subscript[n, e]) die Ladungsträgerdichte, τ die Stromrelaxationszeit  und (Subscript[m, L]) die Leitfähigkeitsmasse. Bewegen sich die Ladungsträger in einem isotropen und parabolischen Band mit effektiver Masse \(\(m\^*\)\) ist die Leitfähigkeitsmasse gleich der effektiven Masse. Dies ist nicht mehr der Fall für anisotrope Bänder. Im Falle von Silizium gilt zum Beispiel für die Elektronen (Subscript[m, L]) = 3((((1/(Subscript[m, long])) + (2/(Subscript[m, trans]))))^(-1)), mit der longitudinalen (Richtung [100]) Bandmasse (Subscript[m, long])= 0.98 (Subscript[m, e]) und der tranversalen (Richtungen senkrecht [100]) Masse (Subscript[m, trans])= 0.19 (Subscript[m, e]).

\(\(\( (*Eingabeparameter*) \)\(
\)\(Print["Trägerdichte in 10^18 cm^-3"]

    ne = 60

    Print["Streuzeit in 10^-12 s"]

    τ = 0.011

    Print["longitudinale effektive Masse im Leitungsband"]

    ml = 0.98

    Print["transversale effektive Masse im Leitungsband"]

    mt = 0.19

    Print["relative Dielektrizitätskonstante"]

    ϵs = 
      11.4

 (*Leitfähigkeitsmasse*) 

    \(meff = 
        3*\((2\/mt + 
                1\/ml)\)^\(-1\);\)

 (*Hochfrequenzleitfähigkeit\ in\ \((Ωm)\) - 
        1*) 

    \(σ = 
        28202.2 \(\( ne*τ\)\/meff\) 
          1\/\(1 - I*0.188364*ν*τ\);\)

 (*Dielektrizitätsfunktion*) 

    \(ϵ = ϵs + I  σ\/\(1.66818*ν\);\)

 (*Extinktionskoeffizient*) 

    \(ext = 
        Im[\@ϵ];\)

 (*Brechzahl*) 

    \(brec = 
        Re[\@ϵ];\)

 (*Absorptionskoeffizient*) 

    \(β0 = 4*π*ext*ν;\)


    Print["Plasmafrequenz in cm-1"]

    νp = 
      299.48 \@\( ne\/\(meff*ϵs\)\)

 (*Reflexion\ am\ Halbraum*) 

    \(rh = 
        Abs[\(\@ϵ - 1\)\/\(\@ϵ + 1\)]^2;\)
 (*Bildung\ einer\ Interpolationsfunktion\ für\ die\ Reflexion*) 

    reflint = 
      Interpolation[refl, 
        InterpolationOrder -> 
          1]

 (*Vergleich\ des\ Experiments\ mit\ der\ Theorie\ *) 

    \(Plot[{rh, reflint[ν]}, {ν, 1, 15000}, 
        PlotRange -> {0, 1.1}, 
        FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Reflexion"}, PlotLegend -> {"theory", "experiment"}, 
        LegendPosition -> {1, \(-0.3\)}, LegendShadow -> {0, 0}, 
        PlotLabel -> "Si hochdotiert"];\)

 (*Darstellung\ der\ optischen\ Konstanten*) 

 (*Realteil\ von\ ϵ*) 

    Plot[{Re[ϵ]}, {ν, 0.1, 15000}, 
      PlotRange -> {\(-20\), 20}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Re(ϵ)"}, 
      PlotLabel -> "Si hochdotiert"]

 (*Imaginärteil\ von\ ϵ*) 

    Plot[{Im[ϵ]}, {ν, 0.1, 15000}, 
      PlotRange -> {\(-1\), 50}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Im(ϵ)"}, 
      PlotLabel -> "Si hochdotiert"]

 (*Brechzahl*) 

    Plot[{brec}, {ν, 0.1, 15000}, PlotRange -> {0, 15}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Brechzahl"}, 
      PlotLabel -> "Si hochdotiert"]


 (*Extinktionskoeffizient*) 

    Plot[{ext}, {ν, 0.1, 15000}, PlotRange -> {0, 20}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Extinktionskoeffizient"}, 
      PlotLabel -> "Si hochdotiert"]

 (*Absorptionskoeffizient*) 

    Plot[{β0}, {ν, 0.1, 15000}, PlotRange -> {0, 50000}, 
      FrameLabel -> {\*""wave numbers ((cm^(-1)))"", "Absorptionskoeffizient (cm-1)"}, 
      PlotLabel -> "Si hochdotiert"]


    \)\)\)