47
Jannick Weißhaupt Franziska Flegel Matlab für das Grundpraktikum

Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

  • Upload
    vokiet

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

Jannick WeißhauptFranziska Flegel

Matlabfür dasGrundpraktikum

Page 2: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 3: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

Inhaltsverzeichnis

1 Einführung in Matlab 11.1 Darstellung einer Zahl in Matlab . . . . . . . . . . . . . . . . . . . . 11.2 Definition von Variablen . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Einfache Rechenoperationen . . . . . . . . . . . . . . . . . . . . . . . 31.4 Logische Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.6 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.7 Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Theoretische Grundlagen 112.1 Wahrscheinlichkeiten, Dichten und Schätzer . . . . . . . . . . . . . . 11

3 Theorie: Nichtlineare Regression 173.1 Grundannahme und Zentraler Grenzwertsatz . . . . . . . . . . . . . . 173.2 Maximum Likelihood und Kleinste-Quadrate-Methode . . . . . . . . 17

4 Numerik: Nichtlineare Regression 214.1 Praktische Implementierung einer nichtlinearen Regression anhand

wnonlinfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 Nichtlinearer Fit mit wnonlinfit . . . . . . . . . . . . . . . . . . . . . 23

5 Theorie: Lineare Regression 295.1 Kovarianzmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 Fehlerfortpflanzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.3 Konfidenzintervalle bei nichtlinearer Regression . . . . . . . . . . . . 35

6 Numerik: Lineare Regression 376.1 Linearer Fit mit wlinfit . . . . . . . . . . . . . . . . . . . . . . . . . . 37

7 Zusätzliche Optionen und Einstellungen 41

Page 4: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 5: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

1 Einführung in Matlab

Matlab (MATrix LABoratory) ist ein Programm und gleichzeitig eine Programmier-sprache zur Lösung numerischer Probleme. Dabei ist es, wie der Name schon sagt,vor allem auf die Verwendung von Matrizen ausgelegt. Es kann mit einer Vielzahlvon numerischen Problemen umgehen, wie z.B. Matrixalgebra, Differentialgleichun-gen, Integration, partielle Differentialgleichungen usw. und wird deshalb vor allemfür die numerische Simulation von Problemen und zur Datenanalyse eingesetzt. DieOberfläche von Matlab bietet einen Editor an, in dem Skripte, Funktionen, Klas-sen usw. geschrieben werden können. Befehle können auch direkt in das „Commandprompt“ eingegeben werden, wo auch Ausgabetext erscheint. Außerdem hilfreich istder „Workspace“, in dem die Variablen, die gerade im Speicher sind, eingesehen wer-den können. Bei Problemen sei auch auf die umfangreiche und verständliche Hilfehingewiesen.

1.1 Darstellung einer Zahl in Matlab

In Computern können stets nur Zahlen mit endlich vielen Stellen dargestellt wer-den. Mehr Stellen bringen dabei natürlich eine höhere Genauigkeit, verbrauchenallerdings auch mehr Speicherplatz und Rechenzeit bei mathematischen Operatio-nen. Normalerweise benutzt man sogenannte 64-Bit floating point numbers, welche64 Bit Speicherplatz brauchen. Da Computer intern stets mit den Zuständen 1 („an“)und 0 („aus“) arbeiteten, eignet sich die binäre Darstellung am besten für Computer.Das Prinzip einer floating point number ist nun, dass die Größenordnung durch denExponent dargestellt wird und die Zahl somit stets mit einer 1 beginnt. Die Nach-kommastellen werden dann mit 52 Bit dargestellt. Ein Bit wird für das Vorzeichenverwendet und 11 Bit für den Exponenten. Durch den Exponenten wird ein Zah-lenraum von 2210 ≈ 10−308 bis 2210 ≈ 10308 abgedeckt. Die relative Genauigkeit istdurch die Mantisse gegeben und beträgt 2−52 ≈ 10−16 Ein Beispiel für die floatingpoint number 43 mit 5 Bit Mantisse und 4 Bit Exponent lautet:

( −︸︷︷︸sign

1, 01011︸ ︷︷ ︸Mantisse

×(10) +101︸︷︷︸Exponent

)2 = (−(1 + 2−2 + 2−4 + 2−5)× 25)10 = (43)10

1.2 Definition von Variablen

In Programmiersprachen wird eine Variable üblicherweise von rechts nach links defi-niert. D.h. der Ausdruck, der rechts vom Gleichheitszeichen steht, wird ausgewertetund das Ergebnis unter der Variable, die links vom = steht gespeichert. In vielen

Page 6: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

2 1 Einführung in Matlab

exponent(11 bit)sign

fraction(52 bit)

63 52 0

Abbildung 1.1.1: Speicheraufteilung einer 64-Bit floating point number.Quelle: http://commons.wikimedia.org/wiki/File:General_double_precision_float.png

Sprachen muss die Variable zusätzlich vordefiniert werden, was in Matlab allerdingsnicht nötig ist.

1.2.1 Skalare

Skalare werden in Matlab einfach durch

Variable = (Zahl o. Rechenausdruck)

definiert. Dabei sind auch mathematisch sinnlose Gleichungen wie b = b+1 möglich.Zunächst wird dann der Rechenausdruck rechts ausgewertet. Das Ergebnis wird dannin b gespeichert, d.h. in diesem Fall wird b überschrieben. Als Ergebnis erhalten wiralso, dass b um eins erhöht wird. Andere Beispiele:a = 5, b = 5 ∗ 4, z = 1 + 1i

1.2.2 Matrizen

Eine Matrix wird durch Skalare die mit [ ] eingeklammert sind erzeugt. Spalten wer-den durch Leerzeichen getrennt, Zeilenumbruch durch ; erzeugt.

Bsp: a = [1 5 3; 2 5 1] ergibt a =

(1 5 32 5 1

)Die Elemente können dann mit a(n,m) aufgerufen werden. Eine ganze Zeile oderSpalte ruft man mit a(:,m) bzw. a(n, :) auf.

Besondere Matrizen:

eye(n): n× n Einheitsmatrix.

zeros(n,m): n×m Nullmatrix.

ones(n,m): n×m Einsmatrix.

rand(n,m): n×m Matrix mit gleichverteilten Zufallszahlen.

randn(n,m): n×m Matrix mit standardnormalverteilten Zufallszahlen.

Page 7: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

1.3 Einfache Rechenoperationen 3

1.2.3 Anonymous Functions

Anonymous Functions stellen einfache Funktionen dar, die als Eingabewert einenoder mehrere Skalare bzw. Matrizen benötigen. Sie sind vor allem nützlich um ein-fache Funktionen an Routinen zu übergeben, welche als Eingabewert eine Funktionbenötigen, wie z.B. Nullstellensuche, Differentialgleichungslöser oder Fitroutinen.Die Syntax lautet z.B.

func1 = @(x) x∧2 + sin(x ∗ pi)

oder ein anderes Beispiel für mehrere Eingabewerte

func2 = @(x1, x2)√

(x1− x2)′ ∗ (x1− x2)

Aufgerufen werden sie durch z.B.

func1(2)⇒ 4

und als Beispiel für Funktionen mit mehreren Eingabewerten

func2([1; 0; 0], [0; 0; 1])⇒ 1.4142

1.2.4 Cells

Cells funktionieren ähnlich wie Matrizen. Sie unterscheiden sich allerdings darin,dass ihre Elemente quasi alles sein können, z.B Strings, Zahlen, Matrizen, Anony-mous Functions usw. Sie werden mit {...} erzeugt, statt wie bei Matrizen mit [...].Ansonsten ist die Syntax gleich; Leerzeichen für Spaltenwechsel und ; für Zeilen-wechsel.Bsp.: cell1 = {@(x)x,@(x)x.∧2} Ein Element der Cell kann durch cell{index}aufgerufen, also z.B. durch

func2 = cell1{2}.

Dabei wird das zweite Element der Cell, also hier die Funktion x2, aufgerufen undunter der Variablen func2 abgespeichert.

1.3 Einfache Rechenoperationen

Einfache Operationen können durch

Variable = Rechenbefehl

durchgeführt werden. Das Ergebnis wird dann in der Variablen abgespeichert. Dabeimüssen natürlich alle im Rechenbefehl verwendeten Variablen vorher schon definiertworden sein.

Page 8: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

4 1 Einführung in Matlab

1.3.1 Addition und Subtraktion

Addition und Subtraktion werden mit + und − durchgeführt. Dabei können natür-lich sowohl Skalare als auch Matrizen gleicher Größe miteinander addiert werden.Addiert man zwei Matrizen unterschiedlicher Größe, gibt Matlab eine Fehlermel-dung aus. Als einzige Ausnahme kann zu einer Matrix ein Skalar addiert werden.Dabei wird dann zu jedem Element der Skalar addiert.

1.3.2 Multiplikation und Division

Multiplikation und Division werden mit * und / durchgeführt. Dies ist hierbei imMatrixsinne zu verstehen, d.h. * ist die Matrixmultiplikation und / ist die Multipli-kation mit der Inversen (A/B = A ∗B−1). Es ist dabei nur die Multiplikation einern × m mit einer m × l Matrix möglich, wobei das Ergebnis eine n × l Matrix ist.Ausnahme ist hierbei wieder die Multiplikation mit einem Skalar. Jede Matrix kannmit einem Skalar multipliziert werden, wobei die Multiplikation dann elementweisedurchgeführt wird.

1.3.3 Potenzieren

Potenzieren wird mit ∧ durchgeführt. Dabei gilt das Gleiche, wie für die Multi-plikation, d.h. Potenzieren ist im Matrixsinne zu verstehen und ist damit nur mitquadratischen Matrizen möglich.

1.3.4 Elementweise Operation

Alle vorigen Operationen können auch elementweise durchgeführt werden, indemman vor den Operator (+,-,*,/,∧) einen Punkt setzt (z.b. A.*B). Dabei wird danndie Operation skalar zwischen A(i,j) und B(i,j) durchgeführt, d.h.

C = A. ∗B ⇒ Cij = Aij ·Bij

Dies ist natürlich nur für Matrizen gleicher Größe möglich.

1.3.5 Vordefinierte Funktionen

Matlab besitzt eine Vielzahl von vordefinierten Funktionen. Hier eine Aufzählungder wichtigsten:

exp(Matrix): Wendet elementweise die Exponentialfunktion auf die Matrix an

Trigonometrie: sin(Matrix), cos(), tan(), für die jeweiligen elementweisen Funktio-nen (im Bogenmaß), asin(), acos(), atan() für die entsprechenden Umkehr-funktionen.

expm(Matrix): Wendet die Matrixexponentialfunktion auf die Matrix an, d.h. dieMatrix wird in die Exponentialreihe eingesetzt.

Page 9: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

1.4 Logische Operationen 5

log(Matrix): Elementweiser natürlicher Logarithmus.

log2 oder log10(Matrix) Logarithmus zur Basis 2 bzw. 10.

sqrt(Matrix): Elementweise Wurzelfunktion.

’: Transponieren einer Matrix, also A′ ⇒ AT

size: Gibt die Größe der Matrix an

1.4 Logische Operationen

Logische Operationen werden benötigt um Schleifen mit einer Abbruchbedingunganzuhalten, Fallunterscheidungen durchzuführen oder Werte in einer Matrix zu fin-den bzw. zu vergleichen, wie z.B. beim Sortieren. Selbst bei einfachen Skripten benö-tigt man also ziemlich schnell logische Operation. Als Ausgabewert einer logischenOperation erhält man stets entweder 0 für falsch oder 1 für wahr. Diese kann mandann verwenden um z.B. mit if etwas an-und auszuschalten oder mit den Werteneinfach als Zahlen weiterzurechnen. Die folgenden Operationen können nun verwen-det werden um Skalare zu vergleichen, woraufhin man als Antwort einen Skalarerhält. Vergleicht man Matrizen führt Matlab dies elementweise durch und gibt eineMatrix der gleichen Größe aus.

== : Vergleicht ob zwei Zahlen exakt gleich sind und gibt, wenn ja, 1 aus. Vorsicht,vermeintlich gleiche Zahlen können sich durch kleine numerische Fehler unter-scheiden, wodurch 0 ausgegeben wird. Man sollte dann besser den Betrag derDifferenz kleiner als eine Toleranz setzen: (abs(x1-x2)<tol).

>,<: Größer als, kleiner als

>=,<=: Größer gleich, kleiner gleich

&&: Logisches und. Steht zwischen zwei logischen Operationen und gibt wahr aus,wenn beide wahr sind.

||: Logisches oder. Steht ebenfalls ziwschen zwei logischen Operation, gibt aber wahraus, wenn mindestens eine von beiden wahr ist.

∼: Negiert eine Aussage

1.5 Kontrollstrukturen

Zur Steuerung eines Programms werden Kontrollstrukturen verwendet. Dabei gibtes entweder Verzweigungen, meist durch if erzeugt, oder Schleifen, wobei hierfürmeist for zum Einsatz kommt.

Page 10: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

6 1 Einführung in Matlab

1.5.1 Schleifen mit for

Eine Schleife besitzt einen Anweisungsblock, welcher immer wieder durchgeführtwird, bis der Schleifenindex (im Bsp. j) durchgelaufen ist, oder sie von einer anderenAnweisung beendet wird. Der Anweisungsblock wird durch ein end abgegrenzt. Alleswas zwischen for (laufindex) und end steht ist also der Anweisungsblock.Dabei kann auch eine weitere Schleife in diesem Anweisungsblock stehen. Beispiel:

1 n=0;2 for j =1:503 n = n + 1 ;4 end

Bei diesem Beispiel durchläuft die Schleife die Zahlen von 1 bis 50 und addiertbei jedem Durchlauf eins zu n, wodurch n am Ende den Wert 50 hat. Ein etwas

realistischeres Beispiel die näherungsweise Berechnung von∞∑j=1

1j2

= π2

6.

1 sum=0;2 N = 10000;3 for j =1:N4 sum = sum + 1/ j ^2;5 end

Hierbei wird zunächst der zu berechnende Wert mit 0 initialisiert. Dann wird ineiner Schleife, die die natürlichen Zahlen bis N durchläuft, 1

j2zu dem Wert addiert.

1.5.2 Verzweigungen mit if

Mit if wird eine Verzweigung erzeugt, d.h. if prüft eine dem Befehl folgende logischeAussage. Genau dann, wenn sie wahr ist, werden die Befehle im Anweisungsblockausgeführt. Ist sie falsch und es steht kein else oder elseif im Anweisungsblock,springt das Programm zur Zeile nach dem end. Was hinter else steht wird ausge-führt, wenn die Aussage hinter if falsch ist. Bei elseif wird zusätzlich die logischeAussage hinter dem elseif geprüft. Wie bei der Schleife muss also der Anweisungs-block durch ein end abgegrenzt werden. Am einfachsten ist dies wahrscheinlich aneinem Beispiel zu erklären:

1 n=0;2 for j =1:503 i f j <=254 n = n + 1 ;5 else6 n = n + 2 ;7 end8 end

Hierbei wird zunächst, wie im ersten Beispiel n initialisiert und eine Schleife be-gonnen welche j von 1 bis 50 hochzählt. Im Anweisungsblock wird allerdings nichteinfach n = n + 1 ausgeführt, sondern erst überprüft, ob j ≤ 25 ist. Ist die Aus-sage wahr, wird der Anweisungsblock im if statement ausgeführt. Somit addiertdas Skript bis j = 26 gilt eins zu n. Sobald j > 25 wird der Block hinter elseausgeführt und in jedem Schleifendurchgang 2 zu n addiert. Somit erhält man amEnde n = 75

Page 11: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

1.6 Funktionen 7

1.6 Funktionen

Wir haben bereits eine Möglichkeit kennengelernt, selber Funktionen zu definieren(siehe Kapitel 1.2.3). Allerdings ist diese Methode so rudimentär wie simpel. Wasaber machen wir, wenn wir komplexere Strukturen zu einer Einheit zusammenfassenmöchten, sodass es eine definierte Ein- und Ausgabe gibt? Die Antwort ist: Indemwir als erste (echte) Programmzeile eines m-files den Header

1 function [ out1 , out2 , . . . ] = funcname ( in1 , in2 , . . . )

schreiben, machen wir daraus eine Funktion, die von anderen Skripten aufgerufenwerden kann. funcname wird hier durch den passenden Funktionsnamen ersetztund die Variablen in1, in2 etc. durch die Eingabevariablen und out1, out2 etc.durch die Ausgabevariablen. Man muss dabei nicht die gleichen Variablennamenbenutzen wie in dem Skript durch das man die Funktion aufrufen will. Allerdingsmuss der Name funcname der gleiche sein, wie der Name des m-files, unter den dieFunktion abgespeichert wird. Beispiel:

1 function [mu, sigma ] = StatEst imator ( x )2 n = length ( x ) ;3 mu = sum( x ) /n ;4 sigma = sqrt (sum(x−mu) .^2/(n−1) ) ;

Das Beispiel zeigt, wie eine Funktion benutzt werden kann, um aus einem Daten-satz automatisiert Mittelwert (mu) und Standardabweichung (sigma) auszulesen.

Alles, was auf den Header folgt, wird body genannt. Variablen, die im body definiertwerden, sind nur lokal, d.h. man kann außerhalb der Funktion nicht auf sie zugreifen.Das hat den Vorteil, dass Variablen der Funktion und des aufrufenden Skriptes sichnicht gegenseitig überschreiben.

1.7 Plots

Abbildungen erzeugt man am einfachsten mit dem Befehl plot. Beispiel:1 clear ;23 x = −2 : 0 . 1 : 2 ;4 y = x .^2 ;56 plot (x , y ) ;

Das erzeugt ein Fenster wie links in Abb. 1.7.1. Erweitert man das obige Skript mit7 xlabel ( ’ x ’ ) ;8 ylabel ( ’ y ’ ) ;9 t i t l e ( ’ Parabel ’ ) ;

so fügt man noch Achsenbeschriftungen und Titel hinzu.Man kann das Aussehen des Plot ändern, indem man einen linestyle definiert, z.B.

so:6 plot (x , y , ’ ko ’ ) ;

Das k bedeutet dabei, dass mit schwarz (engl. key) gezeichnet wird. o legt die Markerfest. Da keine Linienart angegeben wurde, gibt es keine verbindende Linie zwischen

Page 12: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

8 1 Einführung in Matlab

Abbildung 1.7.1: Links: Einfacher Plot einer Parabel. Rechts: Plot mit Achsenbeschriftungen,Titel, Legende und Textfeld.

des Datenpunkten. Eine Linienart gibt man z.B. so an: ’ko-’ oder ’k-’, wennman keine Marker haben möchte. Es gibt z.B. noch folgende weitere Optionen:

Farbe Marker Linienartk(ey) o -b(lue) x –g(reen) + -.r(ed) s(quare) :

y(ellow) d(iamond)c(yan)

m(agenta)

Will man mehrere Plots in einer Grafik abbilden, so muss man den ersten Plot mithold festhalten:

1 clear ;23 x = −2 : 0 . 1 : 2 ;4 y = x .^2 ;56 plot (x , y , ’ ko ’ ) ;7 hold on8 plot (x , x .^3)9 hold o f f

Denn normalerweise wird bei jedem plot-Befehl das Grafikfenster neu initialisiertund der alte Plot gelöscht. Mit hold on verhindert man dies.

Man kann jetzt noch die Achsengrenzen festlegen, dem Plot eine Legende hinzu-fügen und einen Text irgendwo hinschreiben:

11 axis ( [−2.5 2 .5 −0.5 4 . 5 ] )12 legend ( ’ x^2 ’ , ’ x^3 ’ , ’ Locat ion ’ , ’ SouthEast ’ ) ;13 text (0 , 3 , ’ Text ’ )

Der Befehl axis nimmt den Input [Xmin Xmax Ymin Ymax] und legt damitden sichtbaren Bereich des Plots fest. legend erzeugt eine Legende und platziert

Page 13: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

1.7 Plots 9

sie da, wo die Option nach ’Location’ hinzeigt und der Befehl text erzeugteinfach ein Textfeld, hier an der Position (x, y) = (0, 3) mit dem angegeben Text.Die Position wird in den tatsächlichen Koordinaten der Achsen angegeben.

Der vollständige Plot ist rechts in Abb. 1.7.1 zu sehen.

Page 14: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 15: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

2 Theoretische Grundlagen

Im Folgenden sollen einige Grundlagen des Fittens besprochen werden. Obwohl wiruns sehr um Exaktheit bemühen, kann das vorliegende Skript keinen Anspruch aufVollständigkeit erheben. Es soll vielmehr eine kurze und möglichst übersichtlicheEinleitung in die Grundideen der Regression enthalten. Zu einer dieser Grundide-en bzw. -annahmen zählt, dass alle Messgrößen gaußverteilt sind. Was das bedeu-tet, wird in den ersten Kapiteln erläutert. Dazu ist es auch notwendig den Unter-schied zwischen Wahrscheinlichkeiten und Wahrscheinlichkeitsdichten zu verstehen.Die zweite Grundidee betrifft das Schätzen von wahren Größen aus den Messwerten.Will man eine direkt gemessene Größe aus mehreren Messwerten schätzen, so be-dient man sich des Mittelwertes usw. Man kann aber eine physikalische Größe auchindirekt bestimmen, indem man sie als Fitparameter zweier direkt gemessener Grö-ßen berechnet. Dazu führt man eine neue Funktion der Messwerte und Parameterein, die angeben soll, wie gut die Schätzung ist: das χ2. Diese Methode wird Metho-de der kleinsten Quadrate genannt und ist die, die im Grundpraktikum angewendetwird. Wir werden versuchen zu erklären, warum das so ist.

Hat man die optimalen Fitparameter gefunden, bestimmt man ihre Unsicherhei-ten mit Hilfe der Kovarianzmatrix. Diese enthält auch Informationen darüber, wiedie Fitparameter untereinander korreliert sind. Wir versuchen zu erklären, was dasbedeutet.

2.1 Wahrscheinlichkeiten, Dichten und Schätzer

1 2 3 4 5 60

5

10

15

Augenzahl

Anz

ahl

Mittelwert = 3.07

Abbildung 2.1.1: Würfelexperiment mitN = 60 Würfen. Der Mittelwert ist 3,07während der Erwartungswert für die Augen-zahl eines einzelnen Wurfes 3,5 ist.

Wahrscheinlichkeiten. Die meisten wer-den mit dem Umgang mit Wahrscheinlich-keiten vertraut sein. Wenn wir z.B. einenperfekten sechseitigen Spielwürfel rollen, istdie Wahrscheinlichkeit, dass er am Ende ei-ne 6 anzeigt, genau 1/6. Das gleiche gilt je-weils für die Augenzahlen 1 bis 5. Wenn Xdie Zufallsvariable ist, die angibt, welche Au-genzahl gewürfelt wird, dann schreiben wir:

P (X = 6) =1

6.

Der Erwartungswert µ = E(X) für X ist:

µ = E(X) =1 + 2 + 3 + 4 + 5 + 6

6= 3,5.

Page 16: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

12 2 Theoretische Grundlagen

Allgemein ist er für diskrete Zufallsvariablendefiniert als:

E(X) =∞∑

k=−∞

kP (X = k) .

Ein Erwartungswert ist kein Mittelwert! Ein Mittelwert ergibt sich (in der Spra-che des Würfelspiels), wenn man eine bestimmte Anzahl n von Würfen gewürfelthat mit den Augenzahlen X1, . . . Xn und dann den mittleren Wert

X(n) =X1 + . . .+Xn

n

berechnet. Somit kann man den Mittelwert als eine neue Zufallsvariable auffassen.Der Erwartungswert hingegen ist eine Eigenschaft der Zufallsvariable X an sich. InAbb. 2.1.1 ist der Ausgang eines solchen Würfelexperiment mit n = 60 gezeigt. DerErwartungswert eines einzelnen Wurfes ist hier immer 3,5, während der Mittelwertin diesem besonderen Fall 3,07 ist. Erwartungswert und Mittelwert sind also nichtdas gleiche.

Es gibt jedoch ein stochastisches Gesetz, dass besagt, dass unter besonderen An-nahmen für jedes ε > 0 gilt:

limn→∞

P(|X(n) − µ| > ε

)= 0.

Dies wird in der Mathematik das schwache Gesetz der großen Zahlen genannt.Es gibt noch einen anderen Zusammenhang zwischen Mittelwert und Erwartungs-

wert:Der Mittelwert µ = X einer Zufallsvariable X ist ein erwartungstreuer Schätzerfür ihren Erwartungswert µ = E(X). Das bedeutet, dass wenn wir den Erwartungs-wert µ nicht kennen, dann können wir ihn durch den Mittelwert µ abschätzen undes gilt

E(µ) = E(X1 +X2 + . . . Xn

n

)=

E(X1) + E(X2) + . . .E(xn)

n=

n= µ.

Man nennt eine solche Art von Schätzern auch unbiased, in dem Sinne, dass siedie wahre Größe gleichermaßen über- oder unterschätzen, aber nicht zu einer Seitetendieren.

Weiterhin kennen wir außer dem Erwartungswert noch (mindestens) eine anderewichtige Größe zur Charakterisierung von Zufallsvariablen, nämlich die Varianz σ2 =E(X2) − (EX)2. Für diese Größe hätten wir auch gerne einen erwartungstreuenSchätzer σ2 und wir machen den Ansatz:

σ2 =

∑ni=1(Xi −X)2

C,

mit einer noch zu bestimmenden Konstante C. Der wichtige Punkt ist nun, dass wirin der Summe nicht µ, sondern X = µ stehen haben. Dieses X ist wie bereits gesagtwiederum eine Zufallsvariable. Was ist der Erwartungswert von σ2?

E(σ2) = E(∑n

i=1(Xi −X)2

C

)=

∑ni=1 E

((Xi −X)2

)C

.

Page 17: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

2.1 Wahrscheinlichkeiten, Dichten und Schätzer 13

Man darf das Quadrat niemals aus dem Erwartungswert herausziehen. Stattdessenmuss man ausmultiplizieren:

E(σ2) =

∑ni=1 E

(X2i − 2XiX +X

2)

C

=

∑ni=1

(E(X2

i )− 2E(XiX) + E(X2))

C

=1

C

n∑i=1

[E(X2

i )− 2E(Xi

∑kXk

n

)+ E

((∑

kXk)2

n2

)]Wenn i 6= k, dann faktorisiert der Erwartungswert im mittleren Term:

E(σ2) =1

C

n∑i=1

[E(X2

i )− 2

nE(X2

i )− 2E(Xi

∑k 6=iXk

n

)

+1

n2E

(∑k

X2k +

∑k

∑k 6=m

XkXm

)]

Ebenso faktorisiert der Ewartungswert, wenn im letzten Term k 6= m:

E(σ2) =1

C

n∑i=1

[n− 2

nE(X2

i )− 2(n− 1)

nµ2 +

1

nE(X2

i ) +1

n2E

(∑k

∑k 6=m

XkXm

)]

=1

C

n∑i=1

[n− 1

nE(X2

i )− 2(n− 1)

nµ2 +

n(n− 1)

n2µ2

]

=1

C

n∑i=1

[n− 1

nE(X2

i )− n− 1

nµ2

]=

n− 1

nC

n∑i=1

[E(X2

i )− µ2]

Jetzt muss man bedenken, dass die Xi identisch verteilt sind, also E(X2i ) = E(X2

1 )für alle i:

E(σ2) =n− 1

C

[E(X2

1 )− µ2]

=n− 1

Cσ2.

Da E(σ2) gleich σ2 sein soll, ist C = n− 1.

Wahrscheinlichkeitsdichten. Das Beispiel mit den Würfeln veranschaulicht, wasWahrscheinlichkeiten sind. Diese Wahrscheinlichkeiten ordnet man bestimmten Er-eignissen zu, wie z.B. eine 6 zu würfeln. Für das folgende ist es aber auch wichtig zuverstehen, was Wahrscheinlichkeitsdichten sind. Dazu untersuchen wir ein anderesBeispiel: Stellen wir uns vor, wir hätten ein sehr großes Stück Papier und ein sehrkleines Lineal, sodass wir das Lineal mehrmals neu ansetzen müssen, um das Papierauszumessen. Weil wir wissen, wie ungenau diese Messmethode ist, wiederholen wir

Page 18: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

14 2 Theoretische Grundlagen

34.5 35 35.5

2

4

6

8

10

12

14

Laenge [cm]

Anz

ahl

N = 60Mittelwert = 35.04

34.4 34.6 34.8 35 35.2 35.4 35.60

20

40

60

80

100

120

Laenge [cm]A

nzah

l

N = 2000Mittelwert = 35.00

Abbildung 2.1.2: Vermessung der Länge eines Papierblattes mit einem Lineal. Die Messung wirdjeweils N mal durchgeführt und notiert, wie oft ein bestimmter Wert gemessen wird. Die Rasterungist 1 mm im linken und 0,25 mm im rechten Bild. Die Kurve rechts zeigt eine entsprechend normierteGaußkurve.

die Messung z.B. 60 mal. Das Ergebnis dieser N = 60 Messungen ist links in Abb.2.1.2 dargestellt.

Wenn wir nun stattdessen 2000 mal messen und die Rasterung der Messwertegenauer machen, dann erhalten wir z.B. das Ergebnis rechts in Abb. 2.1.2. Diedazu eingezeichnete Kurve entspricht einer (passend normierten) Gaußkurve. Mitordentlicher Normierung lautet die Definition einer Gaußverteilung:

Nµ,σ(x) =1√

2πσ2e−

(x−µ)2

2σ2 , (2.1.1)

mit Erwartungswert µ und Standardabweichung σ. Man nennt sie auch Normal-verteilung. Ordentliche Normierung heißt, dass∫ ∞

−∞Nµ,σ(x)dx = 1. (2.1.2)

Diese Normalverteilung ist ein Beispiel für eine Wahrscheinlichkeitsdichte, d.h. siegibt keine Wahrscheinlichkeiten direkt an. An die Wahrscheinlichkeiten kommt manerst per Integration. Wenn man eine normalverteilte Zufallsvariable X mit Erwar-tungswert µ und Standardabweichung σ hat, ergibt es nicht viel Sinn zu fragen,was die Wahrscheinlichkeit ist, dass X genau π ist. Sie ist Null. Allerdings kannman fragen, was die Wahrscheinlichkeit ist, dass X in einem bestimmen Intervall[π − ε, π + ε] mit ε > 0 liegt. Dann erhält man folgende Anwort:

P (X ∈ [π − ε, π + ε]) =

∫ π+ε

π−εNµ,σ(x)dx 6= 0. (2.1.3)

Page 19: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

2.1 Wahrscheinlichkeiten, Dichten und Schätzer 15

Allgemein ist die Wahrscheinlichkeit, dass die Zufallsvariable X in den Grenzen [a, b]liegt:

P (X ∈ [a, b]) =

∫ b

a

Nµ,σ(x)dx. (2.1.4)

Deshalb muss die Normierung auch wie in Gl. (2.1.2) sein, denn:

1 = P (X ∈ R) =

∫ ∞−∞Nµ,σ(x)dx. (2.1.5)

Man überzeugt sich, dass µ tatsächlich der Erwartungswert ist:

µ =

∫ ∞−∞

xNµ,σ(x)dx,

und für die Varianz σ2 gilt:

σ2 =

∫ ∞−∞

(x− µ)2Nµ,σ(x)dx.

Die Varianz σ2 bestimmt die Breite der Verteilung und spielt in der Statistik dieRolle einer Unsicherheit. Die Wahrscheinlichkeit, einen Wert innerhalb der 1σ-Umgebung zu ziehen, ist

P (µ− 1σ ≤ X ≤ µ+ 1σ) =

∫ µ+σ

µ−σNµ,σ(x) dx ≈ 0,683. (2.1.6)

Dies nennt man auch die coverage probability (auch statistische Sicherheit) der 1σ-Umgebung. In Formelzeichen wird sie auch 1−α genannt, während α die sogenannteRestwahrscheinlichkeit ist, also die Wahrscheinlichkeit, einen Wert außerhalb der 1σ-Umgebung zu ziehen. Wählt man nicht σ als Unsicherheit sondern einen größerenWert wie z.B. 2σ, dann vergrößert sich auch die statistische Sicherheit.Es gibt natürlich unendlich viele andere Wahrscheinlichkeitsdichten bzw. Vertei-

lungen. Bekannte Vertreter sind z.B.

- die Exponentialverteilung:

fλ(x) =

{λe−λx, x ≥ 0,

0, sonst.

und

- die Pareto-Verteilung:

fα,x0 =

{αxα0x1+α

, x ≥ x0

0, sonst.

Page 20: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 21: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

3 Theorie: Nichtlineare Regression

3.1 Grundannahme und Zentraler Grenzwertsatz

Im zweiten Beispiel (Abb. 2.1.2) des vorherigen Kapitels hatten wir gesehen, dass dieMessergebnisse normalverteilt um einen bestimmten empirischen Mittelwert waren.Das war kein Zufall, denn es handelte sich nicht um ein reales Experiment, sondernum eine Simulation, die genauso programmiert war. Allerdings war auch das nichtwillkürlich, denn die Simulation folgt somit der wichtigsten Annahme des Fittens:

Alle Messgrößen sind normalverteilt.

Grundannahme

Diese Annahme selber hat ihre Wurzeln im Zentralen Grenzwertsatz. Eine Ver-sion dieses Satzes lautet:

Seien X1, X2, . . . eine Folge von unabhängigen Zufallsvariablen mit end-lichen Erwartungswerten µi und Varianzen σ2

i . Sei s2n =∑n

i=1 σ2i und

sei die Feller-Bedingung erfüllt. Dann konvergiert

n∑i=1

Xi für n→∞ in Verteilung gegen N(

n∑i=1

µi,√s2n

).

Was die Feller-Bedingung ist, interessiert uns jetzt nicht. Wir nehmen einfach an,dass sie erfüllt ist. In Worten ausgedrückt bedeutet der Grenzwertsatz, dass dieSumme vieler unabhängiger Zufallsvariablen mit endlichen Erwartungswerten undVarianzen ungefähr normalverteilt ist mit Erwartungswert

∑µi und Varianz

∑i σ

2i .

Man sagt nun, dass eine Messung von vielen kleinen unabhängigen Zufallsvaria-blen Xi beeinflusst wird (vgl. auch zufällige Fehler), die sich so addieren, dass derMesswert als normalverteit angenommen werden kann. Dies rechtfertigt die obigeGrundannahme.

3.2 Maximum Likelihood undKleinste-Quadrate-Methode

Es wird nun Zeit, sich mehr dem Fitten von Daten zuzuwenden.Angenommen, man hat N (unabhängige) Messwerte yi mit Unsicherheiten σi zu

den Grundvariablen xi, die wir als sicher annehmen. Weiterhin gibt es eine Funktion

Page 22: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

18 3 Theorie: Nichtlineare Regression

f(.|θ) : R→ R, die von dem Parameterset θ = (θ1, . . . , θm) abhängt. Die Hypothesesagt, dass der funktionelle Zusammenhang zwischen den xi und den yi die Formvon f hat und die Aufgabe ist, die Parameter θ so zu bestimmen, dass die f(xi|θ)besonders gut zu den yi passen.

Was bedeutet besonders gut? Eine mögliche Antwort gibt die Maximum Likeli-hood-Methode: Sie sagt, die Wahl der Paramater θ ist dann besonders gut, wenndie zusammengesetzte Wahrscheinlichkeitsdichte

ϕ(z|θ) =N∏i=1

Nf(xi|θ),σi(zi) (3.2.1)

an der Stelle z = (y1, . . . yN) maximal ist. Diese zusammengesetze Wahrscheinlich-keitsdichte ist das kontinuierliche Analogon zu der Wahrscheinlichkeit, das mehrereunabhängige Ereignisse gleichzeitig eintreten. Seien z.B. A1, . . . , An unabhängige Er-eignisse, die entweder eintreten oder nicht. Dann ist die Wahrscheinlichkeit, dass alleEreignisse gleichzeitig eintreten:

P (A1 ∩ . . . ∩ An) =n∏i=1

P (Ai).

Wenn die Dichte ϕ(.|θ) in Gl. (3.2.1) aber maximal ist, dann (und genau dann)ist auch ihr Logarithmus maximal, denn der Logarithmus ist eine streng monotonsteigende Funktion. Man soll also folgende Funktion bezüglich θ maximieren:

lnϕ(y|θ) = lnN∏i=1

Nf(xi|θ),σi(yi) =N∑i=1

lnNf(xi|θ),σi(yi)

=N∑i=1

[ln

(1√

2πσ2i

)− (yi − f(xi|θ))2

2σ2i

]

= −1

2

[N∑i=1

ln(2πσ2i ) +

N∑i=1

(yi − f(xi|θ))2

σ2i

]. (3.2.2)

Die erste Summe wird in unserem Fall immer konstant bleiben, weil wir die σi alsgegeben annehmen. Genauso spielt auch der Vorfaktor 1/2 bei der Maximierungkeine Rolle. Es bleibt also noch, θ so zu bestimmen, dass

−N∑i=1

(yi − f(xi|θ))2

σ2i

=: −χ2

maximal wird. Das ist aber das gleiche, als würden wir

χ2 =N∑i=1

(yi − f(xi|θ))2

σ2i

(3.2.3)

minimieren. Somit führt uns die Maximum Likelihood-Methode in unserem Spezi-alfall direkt zur Methode der kleinsten Quadrate (least squares). Wir bestimmenunsere Parameter θ also so, dass die χ2-Funktion also die Summe der quadratischenAbweichungen relativ zu den Unsicherheiten σi minimal wird.

Page 23: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

3.2 Maximum Likelihood und Kleinste-Quadrate-Methode 19

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

1

2

3

χ2/NdoF

ρ N

doF

NdoF

= 1

NdoF

= 5

NdoF

= 10

NdoF

= 100

Abbildung 3.2.1: χ2-Verteilung für verschiedene Anzahlen von Freiheitsgraden NdoF.

Hypothesentest. Nachdem man die Parameter θ bestimmt hat, möchte man viel-leicht noch eine Auskunft darüber erhalten, wie gut die Hypothese f überhaupt war.Vielleicht hat man ja fälschlicherweise einen linearen Zusammenhang zwischen denGrößen x und y angenommen, wo gar keiner war. Dazu bestimmt man die Wahr-scheinlichkeitsdichte ρ(χ2), dass ein bestimmter Wert von χ2 eintritt, gegeben, dassman eine bestimmte Anzahl NdoF von Freiheitsgraden (degrees of freedom) hat.Die Zahl der Freiheitsgrade ist die Zahl N der Messwerte minus die Zahl m derFitparameter:

NdoF = N −m.

Falls man sich für den Rechenweg interessiert, so findet man diesen im CPI-Skript[1] Kapitel 9. Abb. 3.2.1 zeigt eine grafische Darstellung dieser Wahrscheinlichkeits-dichte ρ(χ2) nachnormiert nach der Zahl der Freiheitsgrade. Man sieht, dass für dassogenannte reduzierte χ2, also χ2/NdoF und sehr große Zahl von FreiheitsgradenNdoF

die Wahrscheinlichkeitsdichte bei Eins maximal ist. Bei sehr viel größeren Wertenvon χ2/NdoF ist die Hypothese zu verwerfen und bei sehr viel kleineren Werten hatman vermutlich seine Unsicherheiten zu groß abgeschätzt.Eine Größe, die hierzu oft angegeben wird, ist der Q-Wert des Fits. Dieser ist

nichts anderes als die Wahrscheinlichkeit

Q(z) = P (χ2 ≥ z). (3.2.4)

Nach dem Skript [1] kann man der Hypothese bis Q = 0,1 vertrauen.

Page 24: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

20 3 Theorie: Nichtlineare Regression

Tabelle 3.2.1: ∆χ2 für verschiedene Anzahl m der Parameter und Werte von 1− α. Tabelle aus[2].

(1− α) [%] m = 1 m = 2 m = 3

68,27 1,00 2,30 3,5390, 2,71 4,61 6,2595, 3,84 5,99 7,82

3.2.1 Unsicherheiten der Parameter

Abbildung 3.2.2: Fehlerellipse. SchematischeDarstellung der Niveaulinie von χ2

min+∆χ2 in denVariablen a und b im Fall negativer Korrelation.Im nichtlinearen Fall ist dies nicht notwendig ei-ne Ellipse. Adaptiert von Fig. 5 Kapitel Statisticsaus [2].

Nachdem man die optimalen Parame-ter θ geschätzt hat, stellt sich nochdie Frage nach ihren Konfidenzinterval-len. Angenommen, wir hätten zwei Pa-rameter geschätzt: a und b. Dann erhältman die Unsicherheiten σa und σb dar-aus, dass man sich die Niveauline derχ2(a, b)-Funktion anschaut, wo der Wertχ2

min + ∆χ2 ist mit ∆χ2 = 2,30. Im li-nearen Fall (siehe Kapitel 5) ist dies ei-ne Ellipse wie in Abb. 3.2.2 schematischdargestellt. Die Neigung ist der Ellipseist auf eine Korrelation der Parametera und b zurückzuführen, in diesem Falleine negative Korrelation. Im Fall unkorrelierter Variablen sind die Hauptachsenparallel zu den Koordinatenachsen.

Je nachdem wie viele Parameter man schätzt, ändert sich auch der passende Wertfür ∆χ2. Das gleiche gilt selbstverständlich auch, wenn man nicht das 68%-Intervall,sondern ein anderes schätzen möchte. Tabelle 3.2.1 zeigt einige Werte von ∆χ2 zuverschiedenen Werten von m und 1− α.

Page 25: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

4 Numerik: Nichtlineare Regression

4.1 Praktische Implementierung einer nichtlinearenRegression anhand wnonlinfit

Ziel der nichtlinearen Regression ist es, eine Funktion f(x|θ) mit den freien Para-metern θ an gemessene Wertetupel xi und yi mit den Unsicherheiten des y-Wertesσi anzupassen. In Kapitel 3.2 haben wir bereits gesehen, dass bei normalverteiltenFehlern es optimal ist

χ2(θ) =∑i

(yi − f(xi|θ))2

σ2i

, (4.1.1)

zu minimieren. Im nichtlinearen Fall, d.h. wenn f(x|θ) nicht linear in θ ist, ist diesnicht im Allgemeinen analytisch möglich, wodurch wir auf numerische Routinenangwiesen sind.

4.1.1 Numerische Optimierung

Mathematisch gesehen kann man unser Problem darauf reduzieren, das globale Mi-nimum einer skalarwertigen Funktion g(x) zu bestimmen. Das x in der Funktiong(x) darf nicht mit den x-Werten in der Messung verwechselt werden, sondern spielthier die Rolle von θ, während g die Rolle von χ2 einnimmt. Praktisch gesehen istes allerdings nahezu unmöglich das globale Minimum zu finden, weswegen alle nu-merisch durchführbaren Routinen nur lokale Minima suchen und finden. Die Ideedieser numerischen Methoden ist es dabei bei einem meist durch den User vorge-geben Startwert anzufangen und sich dem Minimum dann iterativ anzunähern. Obdas Verfahren das globale Minimum findet oder überhaupt konvergiert hängt da-bei kritisch von dem vorgegebenen Startwert ab. Es ist also nötig einen sinnvollenStartwert zu schätzen.

Newton-Verfahren. Wir wollen mit dem Newton-Verfahren, beginnend von einemStartpunkt x0, das Minimum xmin der Funktion g(x) bestimmen. Dazu approximie-ren wir die Funktion g(x) zunächst durch ihre (mehrdimensionale) Taylorreihe amStartpunkt x0 bis zur 2. Ordnung. Die approximierte Funktionen nennen wir g(x)

g(x) := g(x0) + ∇g(x)|x0 · (x− x0) +1

2(x− x0)T ·H(g(x))|x0 · (x− x0) ≈ g(x),

(4.1.2)

Page 26: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

22 4 Numerik: Nichtlineare Regression

0.9 0.95 1 1.05 1.1 1.15

−1

−0.8

−0.6

−0.4

−0.2

0

xn

xn+1

xmin

Funktion f(x)Approximierte Funktion

Abbildung 4.1.1: Skizze eines Iterationsschrittes des Newton-Verfahrens.

wobei H(g(x))|x0 die Hesse-Matrix von g(x) an der Stelle x0 ist und durch

H(g(x))|x0 :=

∂2g

∂x1∂x1|x0

∂2g∂x1∂x2

|x0 · · · ∂2g∂x1∂xn

|x0

∂2g∂x2∂x1

|x0

∂2g∂x2∂x2

|x0 · · · ∂2g∂x2∂xn

|x0

...... . . . ...

∂2g∂xn∂x1

|x0

∂2g∂xn∂x2

|x0 · · · ∂2g∂xn∂xn

|x0

.

gegeben ist. Im Minimum der Funktion g(x) muss natürlich der Gradient der Funk-tion verschwinden, d.h. es gilt

0 = ∇g(x)|xmin ≈∇g(x)|x0 +H(g(x))|x0 · (xmin − x0) (4.1.3)

Auflösen nach xmin führt auf

xmin = x0 − (H(g(x))|x0)−1 ·∇g(x)|x0 (4.1.4)

Da dies natürlich nur korrekt ist, wenn die Funktion wirklich quadratisch in jederVariable ist führt man die Iteration

xn+1 = xn − γn · (H(g(x))|xn)−1 ·∇g(x)|xn (4.1.5)

ein. Diese wiederholt man so lange bis eine geeignete Abbruchbedingung die Schleifebeendet. γn ist dabei die Schrittweite. Sie sollte stets zwischen 1 und 0 liegen undwird meist zu Beginn kleiner gewählt um nicht möglicherweise zu große Schrittezu machen. Befindet man sich schon nahe dem Minimum kann sie auf 1 gesetztwerden um schnellere Konvergenz zu erreichen. Für γn = 1 konvergiert das Verfahrenquadratisch, d.h. |xn − xmin| = O

(1n2

)Gradienten-Verfahren (steepest descent). Ein weiteres deutlich robusteres Ver-fahren ist das sogenannte Gradienten-Verfahren. Es basiert auf der Idee, stets der

Page 27: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

4.2 Nichtlinearer Fit mit wnonlinfit 23

Richtung des steilsten Abstieges zu folgen, d.h. entlang des negativen Gradientens.Die Iterationsformel lautet nun

xn+1 = xn − γn ·∇g(x)|xn (4.1.6)

Die Schrittweite wird dabei wieder durch einen Parameter γn festgelegt, der durchein weiteres Verfahren festgelegt werden muss. Man kann beispielsweise eine 1-D Op-timierung entlang der durch den Gradienten festgelegten Geraden durchführen, wasim Allgemeinen sehr viel einfacher als eine mehrdimensionale Optimierung ist. DasVerfahren ist im allgemeinen sehr robust, da es garantiert, dass der Funktionswertgesenkt wird. Allerdings neigt es dazu, um das eigentlich Minimum in Zickzack-Schritten herumzulaufen. Deshalb ist die Konvergenz nahe dem Minimum auch eherschlecht.

Implementierung in wnonlinfit. In wnonlinfit haben wir die nichtlineare Re-gression mit der Matlab-Routine lsqnonlin implementiert. Diese verwendet dassogennante Trust-Region-Verfahren. Dieses basiert grundsätzlich auf dem Newton-Verfahren, allerdings wird dabei der quadratischen Approximation nur in einemgewissen Umfeld (deswegen „Trust-Region“) vertraut. Man definiert einen Trust-Region-Radius ∆r, und beschränkt den Raum, in dem die Funktion g(x) minimiertwerden soll, auf z.B. eine Kugel mit diesem Radius. Deshalb kann man auch nichteinfach Gl. 4.1.5 verwenden, sondern muss eine sogenannte restringierte Optimierungdurchführen. Restringierte Optimierung bedeutet dabei, dass das Minimum nicht inganz R gesucht wird, sondern nur auf einer Teilmenge davon, z.B. eben innerhalbeiner Kugel. Dies ist allerdings bei einer quadratischen Funktion analytisch mit Hilfeder Methode der Lagrange-Multiplikatoren möglich, welche einen Schrittvektor ∆xals Ergebnis liefert. Daraufhin bildet man das Verhältnis Γk aus der tatsächlichenVerringerung der Funktion und der vorhergesagten Verringerung

Γn =g(xn + ∆x)− g(xn)

g(xn + ∆x)− g(xn)

Ist Γn ≥ ρ1 war das Verfahren erfolgreich und der Radius kann beibehalten odervergrößert werden und der Schritt wird durchgeführt, d.h. xn+1 = xn + ∆n. Dabeiist ρ1 ein vordefinierter Parameter. Je nach Wahl agiert die Routine riskanter undschneller (bei ρ1 � 1) oder vorsichtiger und langsamer (bei ρ1 . 1). Ist hingegenΓn < ρ1 gilt der Schritt als nicht erfolgreich, d.h. xn+1 = xn und der Trust-Region-Radius wird verkleinert.

4.2 Nichtlinearer Fit mit wnonlinfit

Die Syntax für einen Aufruf von wlinfit lautet[θ, θerr, Ukov, χ

2/DoF]

= wnonlinfit (x,y,yerr, fitfunc,θ0) (4.2.1)

Die Eingabeparameter sind dabei:

Page 28: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

24 4 Numerik: Nichtlineare Regression

x: Vektor der X-Werte

y: Vektor der Y-Werte

yerr: Vektor der Unsicherheiten σy der Y-Werte

fitfunc: Function handle mit der zu fittenden Funktion. Die Form ist dabei f(x, c),die Funktion muss somit zwei Eingabevariablen besitzen. Die erste ist einVektor der x-Werte, die zweite ein Vektor der Fitparameter.

θ0: Anfangsschätzung für die Fitparameter θ. Hierbei muss beachtet werden, dasswenn die Schätzung zu schlecht ist der Fit unter Umständen nicht konvergiert.

Die Ausgabewerte sind:

θ: Vektor der Koeffizienten des Fits, also die Ergebnisse.

θerr: Vektor der Unsicherheiten von θ

Ukov: Kovarianzmatrix

χ2/doF: Der χ2-Wert geteilt durch die Anzahl der Freiheitsgrade. Dieser sollte nahebei 1 liegen.

Zusätzlich werden wie zwei Plots erstellt. Der erste enthält den Fit mit den Er-gebnissen in einer Legende, der andere die Residuen. Da wnonlinfit numerischeOptimierungsroutinen verwendet (also Routinen, die das globale Minimum suchen),braucht es Startwerte, die vorgeben, wo die Suche nach dem Minimum beginnen soll.Dabei kann es zu zwei grundlegenden Problemen bei der Minimierung kommen: Dererste problematische Fall ist, dass nicht das globale, sondern nur ein lokales Mini-mum von χ2

dof gefunden wurde. Dies äußert sich meistens in einem recht hohen χ2

dof .Dies passiert beispielsweise bei Fits mit einer Gaussfunktion, wenn der geschätzteMittelwert zu stark vom wahren Wert abweicht. Typischerweise endet dann der Fitin einem Minimum, bei dem die Fitfunktion einfach identisch null ist. Der zweiteFall, der eintreten kann, ist, dass die Routine gar nicht konvergiert und irgendwanneinfach abbricht und den letzten Wert, den sie berechnet hat, ausgibt. Um die Wahr-scheinlichkeit eines erfolgreichen Fits trotz schlechter Startwerte zu erhöhen, führtwnonlinfit, wenn χ2

dof zu schlecht war, eine zufällige Variation der vorgegebenenStartwerte durch. Dies wird als Iteration angezeigt und erfolgt so lange, bis die ge-wünschte Toleranz in χ2

dof erreicht wurde, oder aber nach 100 Iteration. Dies kannsehr praktisch sein, wenn man viele verschiedene Fits durchführen muss und dieStartwerte nicht sehr gut kennt (wie z.B. im F-Praktikumsversuch Halbleiterdetek-toren). Erfahrungsgemäß findet wnonlinfit die wahren Werte auch oft bei rechtschlechten Startwerten, bei denen der erste Versuch nicht funktioniert. Man kanndie zufällige Variation der Startwerte auch deaktivieren, indem man die Toleranz fürχ2

dof einfach sehr hoch setzt. Siehe dazu Kapitel 7

Page 29: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

4.2 Nichtlinearer Fit mit wnonlinfit 25

4.2.1 Beispiel

In diesem Beispiel soll mit gegebenen Daten des Spektrums eines Schwarzkörper-strahlers dessen Temperatur bestimmt werden und überprüft werden, ob es sichtatsächlich um einen Schwarzkörperstrahler handelt. Das Plancksche Strahlungsge-setz lautet nun

S(Eph) = A0 ·E3

ph

exp (Ephβ)−1mit β =

1

kbT

Mit wnonlinfit kann diese Funktion nun direkt gefittet werden. Möglicherweisesollte man sich die Funktion und Daten plotten lassen um geeignete Startwerte zufinden, sofern man keine physikalischen Schätzungen besitzt. In diesem Beispiel istdie Energie in eV in den Daten gegeben, die y-Werte sind in Counts also einheitenlos.Im weiteren soll nun der Code behandelt werden.

Listing 4.1: Beispiel eines nichtlinearen Fits mit wnonlinfit1 clear ;23 % Fir s t the data has to be loaded4 % Expansion in three v a r i a b l e s i s op t i ona l5 load ( ’ n o n l i n f i t . dat ’ )6 x = n o n l i n f i t ( : , 1 ) ;7 y = n o n l i n f i t ( : , 2 ) ;8 ye r r = n o n l i n f i t ( : , 3 ) ;9

10 % you need to s p e c i f y the func t i on you want to use f o r f i t t i n g11 % the syntax i s12 % f i t f u n c ( vec to r o f xva lues , v ec to r o f f i t pa rame t e r s ) = @(x , c ) . . .13 f i t f u n c=@(x , cv ) cv (1 ) ∗x .^3 . / (exp( x .∗ cv (2 ) )−1) ;1415 % you a l s o need a f i r s t guess f o r the f i t pa rame t e r s :16 c0=[2000 2 ] ;171819 % normal ly the input data has to be vec tor o f xva lues , vec to r o f yva lues ,20 % vec tor o f e r ror s . I f you don ’ t have er ror s you can j u s t put a 1 ( or21 % arb i t r a r y va lue ) in s t ead o f a vec to r222324 %%%%% Optional input %%%%%25 t e x t p o s i t i o n =[4 6 0 0 ] ; % de f ine po s i t i on o f l egend2627 % de f ine header o f l egend28 h e ad e r c e l l={ ’ Nonl inear Fi t ’ ’ $ f (E_{\mathrm{ph}})=A_0 \ cdot \ f r a c {E_{\mathrm{ph

}}^3}{\exp {(E_{\mathrm{ph}} \beta ) }{−}1}$ ’ ’ ’ } ;29 % de f ine ax i s l a b e l s and f i t parame te r names30 mylabel={ ’ Photon energy $E_{\mathrm{ph}}$ [ eV ] ’ , ’ Photon Counts ’ , ’$A_0$ ’ , ’ $\ beta$ ’ } ;31 %%%%%%%%%%%%%%%%%%%%%%%%%%%323334 % ac tua l execu t ion o f wnon l i n f i t . See " he lp wnon l i n f i t " f o r more op t ions .35 [ c c e r r Kov Chi ]= wnon l i n f i t (x , y , yerr , f i t f u n c , c0 . . . % main arguments36 , ’ l a b e l ’ , mylabel , ’ p o s i t i o n ’ , t e x tpo s i t i on , ’ header ’ , h eade r c e l l , ’ e r r p r e c ’ , 2 , ’

contourp lo t ’ , { [ 1 2 ] } ) ; % op t i ona l arguments3738 Tres = 1/c (2 ) /1 .3807 e−23∗1.6022e−19;39 Trese r r = 1/c (2 ) ^2∗ c e r r (2 ) /1 .3807 e−23∗1.6022e−19;40 t i t l e s t r = sprintf ( ’ Blackbody r ad i a t i on spectrum @$T=%4.0 f \\pm %2.0 f$ K’ , [ Tres

Trese r r ] ) ;41 t i t l e ( t i t l e s t r , ’ i n t e r p r e t e r ’ , ’ l a t e x ’ , ’ f o n t s i z e ’ ,16)4243 print −dpdf −cmyk r e s u l t_non l i n f i t . pdf

Page 30: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

26 4 Numerik: Nichtlineare Regression

44 figure (3 )45 print −dpdf −cmyk contour_non l in f i t . pdf

Zeile 1: Zunächst sollte man alle im Speicher befindlichen Variablen mit clear lö-schen um möglichen Fehlern vorzubeugen.

Zeile 5: Laden der in der Datei nonlinfit.dat gespeicherten Daten.

Zeile 6-8: Umspeichern der Daten von einer N × 3 in drei N × 1 Matrizen (auchmanchmal Vektoren genannt).

Zeile 13: Definition der Funktion, die zum Fitten verwendet werden soll als fitfunc.@(x,betav) definiert dabei, dass die Funktion von x und betav abhängen soll.Die Formel definiert nun die ausgegebenen Werte. Die Funktion soll nun wennx die Dimension N × 1 besitzt auch eine Variable der Dimension N × 1 ausge-ben. betav definiert einen Vektor der Fitparameter, die einfach elementweiseverwendet werden können.

Zeile 16: Startwerte für die Fitparameter.

Zeile 25: Variable für die Position der Legende im Plot. Der erste Eintrag definiertdie horizontale Position der zweite die vertikale Position.

Zeile 28-30: Definition zweier Variabler für den Text im Plot. Headercell definiertspäter die Überschrift in der Legende. Dabei steht jeder neue Eintrag für eineZeile. mylabel wird für die Achsenbeschriftung und Benennung der Fitpara-meter in der Legende verwendet.

Zeile 35: Aufruf von wnonlinfit. Dabei werden die vorher definierten Variablen ver-wendet und die Ergebnisse in [c cerr Kov Chi] gespeichert. Desweiteren werdenzwei Plots erstellt. Für die verwendeten Optionen siehe Kapitel 7.

Zeile 38-39: Umrechnung des Ergebnisses in eine Temperatur in Kelvin.

Zeile 40-41: Fügt dem Plot eine Überschrift hinzu in der das Ergebnis, also dieTemperatur des Strahlers in Kelvin, ausgegeben wird.

Zeile 43: Speichert den Plot in eine pdf-Datei.

Page 31: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

4.2 Nichtlinearer Fit mit wnonlinfit 27

0 1 2 3 4 5 6 7 8

0

100

200

300

400

500

600

Photon energy Eph [eV]

PhotonCounts

Nonlinear Fit

f(Eph) = A0 · E3ph

exp(Ephβ)−1

A0 = (3.088 ± 0.080) × 103

β = 1.929 ± 0.013

χ2/doF= 0.71Q = 0.88

Blackbody radiation spectrum @T = 6016 ± 40 K

Abbildung 4.2.1: Fit von generierten Daten eines Schwarzkörperstrahlungsspektrums mit wnon-linfit

Page 32: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 33: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

5 Theorie: Lineare Regression

Im Allgemeinen lässt sich χ2min nicht analytisch bestimmen, sondern muss numerisch

berechnet werden. Falls aber

f(x|θ) =m∑j=1

θjhj(x) (5.0.1)

mit linear unabhängigen Funktionen hj, dann reduziert sich die Regression samtBestimmung der Konfidenzintervalle auf ein paar wenige Matrixgleichungen. Diefolgende Rechnung orientiert sich sowohl am CP-Skript [1] und dem Particle DataBooklet [2].Unser erstes Ziel ist es, die optimalen Parameter θ zu finden, d.h. die Parameter,

für die χ2 in Gl. (3.2.3) minimal wird. Dazu ist es notwendig, dass die partiellenAbleitungen nach allen θk von χ2 in θ verschwinden:

∂θkχ2

∣∣∣∣θ=θ

= 0 ∀k, (5.0.2)

also

∂θk

[N∑i=1

(yi − f(xi|θ))2

σ2i

]θ=θ

= −N∑i=1

2hk(xi)

σ2i

(yi − f(xi|θ)) = 0

⇔N∑i=1

hk(xi)yiσ2i

=N∑i=1

hk(xi)

σ2i

f(xi|θ). (5.0.3)

Wenn wir jetzt die folgenden Matrizen definieren:

H =

h1(x1) h2(x1) . . .h1(x2) h2(x2)

... . . .

V =

σ21 0 . . . 0

0 σ22

... σ23

0. . .

. (5.0.4)

Dann istf(x1|θ)f(x2|θ)

...

= Hθ undN∑i=1

hk(xi)

σ2i

f(xi|θ) =(HTV −1Hθ

)k, (5.0.5)

wobei HT die transponierte Matrix zu H ist. Man kann Gl. (5.0.3) deshalb so zu-sammenfassen:

HTV −1y︸ ︷︷ ︸=:g

= HTV −1H︸ ︷︷ ︸=:U−1

θ ⇔ Ug = θ, (5.0.6)

Page 34: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

30 5 Theorie: Lineare Regression

bzw.

θ = (HTV −1H)−1HTV −1︸ ︷︷ ︸=:D

y (5.0.7)

Nachdem wir nun θ bestimmt haben, wollen wir die Varianzen σθk bestimmen. Daskönnen wir z.B. mit Gauß’scher Fehlerfortpflanzung machen:

σ2θk

=N∑i=1

σ2i

(∂θk∂yi

)2

.

Die partiellen Ableitungen bekommen wir über den (altbekannten) Trick mit demDifferential:

δθk = δ(Dy)k =N∑j=1

dkjδyi!

=N∑j=1

(∂θk∂yi

)δyi.

Also ist

σ2θk

=N∑i=1

σ2i d

2ki = (DVDT )kk.

Wenn wir nun noch auswerten, was DVDT ist, so stellen wir fest:

DVDT = [(HTV −1H)−1HTV −1]V [(HTV −1H)−1HTV −1]T

= (HTV −1H)−1HTV −1V V −1H(HTV −1H)−1

= (HTV −1H)−1 = U.

Wir wissen also, dass auf der Diagonalen von U die Quadrate der Unsicherheitenσθk stehen. Welche Informationen enthält U noch?

5.1 Kovarianzmatrix

Die Matrix U ist die sogenannte Kovarianzmatrix:

U =

σ2θ1

σ2θ1θ2

. . .

σ2θ1θ2

σ2θ2

... . . .

. (5.1.1)

Was das bedeutet, schauen wir uns nun an. Zunächst schreiben wir Gl. (3.2.3) um:

χ2 = (y −Hθ)TV −1(y −Hθ). (5.1.2)

Page 35: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

5.1 Kovarianzmatrix 31

Weil V −1 symmetrisch ist, können wir dies wie eine binomische Formel umformen:

χ2(θ) = yTV −1y − 2yTV −1Hθ + (Hθ)TV −1Hθ (5.1.3)

Für den Spezialfall θ = θ gilt:

χ2min = χ2(θ) = yTV −1y − 2yTV −1Hθ + (Hθ)TV −1Hθ

= yTV −1y − 2yTDTHTV −1Hθ + (Hθ)TV −1Hθ

= yTV −1y − 2(Hθ)TV −1Hθ + (Hθ)TV −1Hθ

= yTV −1y − (Hθ)TV −1Hθ

Für allgemeines θ machen wir in Gl. (5.1.3) eine passende Ergänzung:

χ2(θ) = (Hθ)TV −1Hθ − 2yTV −1Hθ + (Hθ)TV −1Hθ + χ2min

= (Hθ −Hθ)TV −1(Hθ −Hθ) + χ2min

= (θ − θ)TU−1(θ − θ) + χ2min (5.1.4)

Was bedeutet diese Gl. (5.1.4) anschaulich? Zur Vereinfachung nehmen wir kurz an,dass U diagonal ist - was es meistens nicht ist. Dann bedeutete Gl. (5.1.4):

χ2(θ) =m∑k=1

(θk − θk)2σ2θk

+ χ2min.

Setzt man für ein θk stattdessen θk ± σθk und für die anderen θ den optimalen Wertein, so erhalt man:

χ2

θ1θ2...

θk−1θk ± σθkθk+1...

=σ2θk

σ2θk

+ χ2min = 1 + χ2

min.

Page 36: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

32 5 Theorie: Lineare Regression

Das gilt für beliebige k. Würde man sich die Menge aller Vektoren θ anschauen,wo χ2(θ) = χ2

min + 1 ist, so würde diese einen Ellipsoiden darstellen, im zweidi-mensionalen Fall also eine Ellipse wie in Abb. 3.2.2. Solange U diagonal ist, wärenihre Hauptachsen parallel zu den Koordinatenachsen. Im anderen, sehr viel häufigerauftretenden Fall liegt die Ellipse (bzw. der Ellipsoid) schief im Koordinatensystemund es entstehen Abhängigkeiten zwischen den Fitparametern - die Fitparametersind korreliert. Deshalb hängen die Nichtdiagonalelemente σ2

ij von U auch mit denKorrelationskoeffizienten zusammen und heißen Kovarianzen.

Kovarianzen. Um die praktische Bedeutung von Kovarianzen erklären zu können,müssen wir erst einmal auf die stochastische eingehen. Als Varianz σ2

X einer Zu-fallsvariable X hatten wir definiert:

σ2X = E(X2)− (EX)2.

Die Kovarianz betrifft nun zwei Zufallsvariablen, z.B. X und Y :

σ2XY = E(XY )− (EX)(EY ) = E ((X − EX)(Y − EY )) . (5.1.5)

Man sagt, X und Y sind unkorreliert, wenn E(XY ) = (EX)(EY ). Dann istσ2XY = 0.

Achtung! Unkorreliertheit ist nicht äquivalent zu Unabhängigkeita! Zwar im-pliziert Unabhängigkeit Unkorreliertheit, nicht aber andersherum.aZwei Zufallsvariablen X und Y heißen unahängig, falls für jede zwei vernünftig gewählteMengen A und B aus dem Ereignisraum gilt: P [(X ∈ A) ∩ (Y ∈ B)] = P (X ∈ A)P (Y ∈B).

Was bedeutet nun also σ2θiθj

? Wir hatten als zusammengesetzte Wahrscheinlichkeits-dichte ϕ(y|θ) der Messwerte y unter der Voraussetzung der Werte der Fitparameterθ gefunden (siehe Gl. 3.2.1):

ϕ(y|θ) =N∏i=1

Nf(xi|θ),σi(yi) ∝ e−χ2/2,

wobei das Proportionalitätszeichen hier bedeutet, dass der Normierungsfaktor weg-lassen wurde. Man kann die Abhängigkeit von y und θ umkehren, sodass θ dieeigentlich freie Variable ist und y der Parameter. Das ist ja eigentlich auch die Si-tuation, die vorliegt, denn unsere Messwerte sind fest und wir variieren θ. Dannerhalten wir eine Verteilung für θ:

ψ(θ|y) ∝ e−χ2/2 = exp

[−1

2

((θ − θ)TU−1(θ − θ) + χ2

min

)]∝ exp

[−1

2(θ − θ)TU−1(θ − θ)

]. (5.1.6)

Page 37: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

5.1 Kovarianzmatrix 33

Die y-Abhängigkeit steckt im θ. Man kann ausrechnen, dass die Verteilung mitNormierungsfaktor so aussieht:

ψ(θ|y) =1

(2π)m/2√

detUexp

[−1

2(θ − θ)TU−1(θ − θ)

](5.1.7)

Wir wollen nun untersuchen, was

E(θjθk)− (Eθj)(Eθk) = E ((θj − Eθj)(θk − Eθk))

ist. Wir wissen schon, dass:

Eθj = θj.

Sei ϑ = θ − θ. Man kann zeigen:

K(θj, θk) = E [(θj − Eθj)(θk − Eθk)]

=

∫ ∞−∞· · ·∫ ∞−∞

(θj − θj)(θk − θk) ψ(θ|y) dθ1 . . . dθm

=1

(2π)m/2√

detU

∫ ∞−∞· · ·∫ ∞−∞

ϑjϑk exp

[−1

2ϑTU−1ϑ

]dϑ1 . . . dϑm.

Sei weiterhin die Matrix O so, dass W = OU−1OT diagonal ist. Es ist OT = O−1,weil U symmetrisch ist. Sei weiterhin η = Oϑ. Dann ist

ϑTU−1ϑ = ϑTOTOU−1OTOϑ = (Oϑ)TW (Oϑ) = ηTWη

und die Funktionaldeterminante bei der Transformation ϑ → η gleich detO = 1und deshalb:

K(θj, θk) =1

(2π)m/2√

detU

∫ ∞−∞· · ·∫ ∞−∞

(OTη)j(OTη)k exp

[−1

2ηTWη

]dη1 . . . dηm.

Sei W = diag(λ−11 , . . . , λ−1m ), dann detU = (detW )−1 = λ1 · . . . · λm und

K(θj, θk) =1

(2π)m/2√λ1 · . . . · λm

∫ ∞−∞· · ·∫ ∞−∞

(∑l

OTjlηl

)(∑q

OTkqηq

×m∏k=1

exp

[−1

2λ−1k η2k

]dη1 . . . dηm

=

∫ ∞−∞· · ·∫ ∞−∞

(∑lO

TjlO

Tklη

2l

) ∏mk=1 exp

[−1

2λ−1k η2k

](2π)m/2

√λ1 · . . . · λm

dη1 . . . dηm

Page 38: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

34 5 Theorie: Lineare Regression

=

(∑l

OTjlO

Tklλl

)=

(∑l

OTklλlOlj

)=(OTW−1O

)kj

= (U)kj = σ2θjθk

.

Zwischendurch haben wir ausgenutzt, dass alle Terme, wo ηl nicht quadratisch auf-taucht, verschwinden.

Die Kovarianz σ2θjθk

aus der Kovarianzmatrix U ist also genau auch die stochasti-sche Kovarianz zwischen θj und θk:

σ2θjθk

= E(θjθk)− (Eθj)(Eθk). (5.1.8)

5.2 Fehlerfortpflanzung

Nehmen wir nun an, wir wollten mit den Fitparametern θ weiterrechnen und eineGröße Z bestimmen, die von θj und θk abhängt. Dann gilt für die Varianz σ2

Z mittelseiner Taylor-Entwichlung:

σ2Z = E(Z2)− (EZ)2 = E

[(Z − EZ)2

]≈ E

[(Z(θj, θk) +

(∂Z

∂θj

)(θj − θj) +

(∂Z

∂θk

)(θk − θk)− EZ

)2]

Man nimmt nun zusätzlich an, dass

Z(θj, θk) = Z (Eθj,Eθk) ≈ E (Z(θj, θk)) .

Diese Annahme ist sehr stark! Im Allgemeinen darf man nicht annehmen, dassZ (Eθj,Eθk) ≈ E (Z(θj, θk)). Gehen wir nur einmal davon aus, dass Z = θjθk. Dannwürde die obige Annahme bedeutet, dass die Kovarianz zwischen θj und θk gleichNull ist, wovon wir hier explizit nicht ausgehen. Dennoch ist die obige Annahmenötig, um auf das Gauß’sche Fehlerfortpflanzungsgesetz zu kommen:

σ2Z ≈ E

[((∂Z

∂θj

)(θj − θj) +

(∂Z

∂θk

)(θk − θk)

)2]

= E

[(∂Z

∂θj

)2

(θj − θj)2 +

(∂Z

∂θk

)2

(θk − θk)2 + 2

(∂Z

∂θj

)(∂Z

∂θk

)(θj − θj)(θk − θk)

]

=

(∂Z

∂θj

)2

E[(θj − θj)2

]+

(∂Z

∂θj

)2

E[(θk − θk)2

]

+ 2

(∂Z

∂θj

)(∂Z

∂θk

)E[(θj − θj)(θk − θk)

]

=

(∂Z

∂θj

)2

σ2θj

+

(∂Z

∂θk

)2

σ2θk

+ 2

(∂Z

∂θj

)(∂Z

∂θk

)σ2θjθk

.

Man benötigt die Kovarianz also bei der Fehlerfortpflanzung, wenn zwei Größenkorreliert sind, wie hier θj und θk.

Page 39: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

5.3 Konfidenzintervalle bei nichtlinearer Regression 35

5.3 Konfidenzintervalle bei nichtlinearer Regression

Nachdem man im nichtlinearen Fall die optimalen θ durch eine Minimierungsroutinegefunden hat, braucht man zusätzlich noch die Unsicherheiten σθ. Um diese zufinden, bietet es sich an, das Problem zu linearisieren. Dazu approximiert man dieFitfunktion f(x|θ) durch

f(xi|θ) ≈ f(xi|θ) +∑j

Fij(θj − θj) mit Fij =∂f(xi|θ)

∂θj.

Dies setzt man nun in Gl. (3.2.3) ein und erhält

χ2(θ) ≈∑i

(yi − f(xi|θ) +

∑j

Fij(θj − θj))2

σ2i

.

Dies entspricht dem in Kapitel 5 beschriebenen linearen Fall, mit der ErsetzungH → F und yi → (yi − f(xi|θ)). Führt man die Rechnung analog dazu aus, kommtman auf

θ − θ = D(y − f(θ)) (5.3.1)

mit: (f(θ))i = f(xi|θ) und D = (F TV −1F )−1(F TV −1)

Für die Unsicherheiten benutzt man analog zu Kapitel 5:

δθ − δθ = D(δy − δf(θ)) = D(δy − F θ)

Es ist

DF = (F TV −1F )−1(F TV −1F ) = I

und damit:

δθ = Dδy.

Daraus folgt wie im linearen Fall für die Kovarianzmatrix U :

U = (F TV −1F )−1. (5.3.2)

Auf der Diagonalen dieser Matrix findet man wiederum die Varianzen σ2θi

und dieNichtdiagonalelemente geben die entsprechenden Kovarianzen an.

Page 40: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,
Page 41: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

6 Numerik: Lineare Regression

6.1 Linearer Fit mit wlinfit

Die Syntax für einen Aufruf von wlinfit lautet[θ, θerr, f(x), Ukov, χ

2/doF]

= wlinfit (x,y,yerr, {@(x)f1(x), @(x)f2(x), ...})(6.1.1)

Die Eingabeparameter sind dabei:

• x: Vektor der X-Werte

• y: Vektor der Y-Werte

• δy: Vektor der Unsicherheiten der Y-Werte

• {@(x)f1(x), @(x)f2(x), ...}: sog. Cell mit den zu fittenden Funktionen (Bsp:{@(x) cos(x), @(x) sin(x)})

Die Ausgabewerte sind:

• θ: Vektor der Koeffizienten des Fits, also die Ergebnisse.

• θerr: Vektor der Unsicherheiten σx von θ

• f(x): Die resultierende Funktion, d.h. die entsprechenden ci mit den zu fit-tenden Funktionen multipliziert. Diese kann in Matlab direkt weiterverwendetwerden durch Aufruf von z.B. utheo = f(x)

• Ukov: Kovarianzmatrix.

• χ2/doF: Der χ2-Wert geteilt durch die Anzahl der Freiheitsgrade. Dieser solltenahe bei 1 liegen.

Wenn man mit einem Polynom n-ter Ordnung fitten will kann man auch die Option’polyfit’ verwenden und muss die Funktionen nicht direkt übergeben. Dazu ruft manwlinfit auf, ohne Funktionen zu übergeben. Allerdings darf man allerdings dasFeld nicht einfach leer lassen, sondern muss {}, also eine leere Cell, einsetzen. Dannsetzt man die Option ’polyfit’ auf den gewünschten Grad des Polynoms. Dies siehtfür ein Polynom erster Ordnung dann wie folgt aus[

θ, θerr, f(x), Ukov, χ2/DoF

]= wlinfit (x,y, δy, {}, ’polyfit’, 1) (6.1.2)

Page 42: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

38 6 Numerik: Lineare Regression

Daraufhin werden zwei Plots erstellt. Der erste ist in Abb. 6.1.1 zu sehen. Darinsieht man die gemessenen Werte in grau mit Fehlern, die resultierende Funktion inschwarz und eine Tabelle mit den Ergebnissen. Der zweite Plot stellt die Residuendar, welche durch die Formel

resi =xi − f(xi; τ, U0)

σU,i

gegeben sind. Um Plots als pdf zu speichern geht man wie folgt vor1 print −dpdf f i l e namep l o t . pdf2 figure (2 )3 print −dpdf f i l enamer e s i duen . pdf

6.1.1 Beispiel

In diesem Beispiel soll das Entladen einen Kondensators behandelt werden. Dabeiwurde die Spannung U als Funktion der Zeit t aufgenommen und als N × 3 Matrixabgespeichert (Listing 6.2). Dabei steht die Zeit in der ersten, die Spannung in derzweiten und die Unsicherheit der Spannung in der dritten Spalte. Der bekanntefunktionale Zusammenhang ist dabei

U(t) = U0 · e−tτ

mit den zu bestimmenden Parametern U0 und τ . Dies ist noch nicht linear kannaber durch Logarithmieren in einen linearen Fit umgewandelt werden.

log (U) = log (U0)−1

τ· t = c1 + c2 · t mit c1 = log (U0) und c2 = −1

τ

Es muss außerdem die Unsicherheit δ log (U) berechnet werden. Diese ergibt sichmit der Gaußschen Fehlerfortpflanzung zu

δ log (U) =δU

U

Nach dieser Vorbereitung kann mit dem Code begonnen werden. Ein lauffähigerCode ist in Listing 6.1 zu finden und soll hier erläutert werden.

Listing 6.1: Beispiel eines linearen Fits mit wlinfit1 clear % Loeschen a l l e r im Speicher b e f i n d l i c h en Variab len23 load l i n f i t . dat % Laden der Messwerte a l s N x 3 Matrix45 t = l i n f i t ( : , 1 ) ; % Speichern der j ew e i l i g e n Spa l ten der Matrix6 U= l i n f i t ( : , 2 ) ; % a l s Vektoren7 Uerr = l i n f i t ( : , 3 ) ; %89 [ c c e r r r e s u l t f u n c Kov ] = w l i n f i t ( t , log (U) , Uerr . /U, {} , ’ p o l y f i t ’ , 1 , ’ l a b e l ’ ,{ ’ Ze i t t

[ s ] ’ , ’Ln( Spannung [V] ) ’ , ’ $\mathrm{ ln }(U_0) $ ’ , ’ $\ beta$ ’ } , ’ header ’ , ’ $\mathrm{ln }(U( t ) )=\mathrm{ ln }U_0+\beta t $ ’ , ’ contourp lo t ’ , { [ 1 2 ] } , ’ p r i n t ’ , true , ’p o s i t i o n ’ , [ 1 . 4 e−3 0 ] ) ;

1011 print −dpdf polyf it . pdf12

Page 43: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

6.1 Linearer Fit mit wlinfit 39

13 tau = −1/c (2 ) ;14 dtau = ce r r (2 ) /c (2 ) ^2;1516 U0 = exp( c (1 ) ) ;17 dU0 = exp( c (1 ) ) ∗ c e r r (1 ) ;18 fpr intf ( ’ tau=%1.3e +− %1.3e\n U_0=%1.3e +− %1.3e\n ’ , [ tau dtau U0 dU0 ] ) ;

Zeile 1: Zunächst sollte man alle im Speicher befindlichen Variablen mit clear lö-schen um möglichen Fehlern vorzubeugen.

Zeile 3: In Zeile 3 werden mit dem Befehl load die Daten, die in einem ASCIIfile (Listing 6.2) hinterlegt sind, unter dem Namen linfit in den Speichergeladen.

Zeile 5-7: In Zeile 5 bis 7 werden die 3 Spalten der Matrix linfit als eigene Variablenabgespeichert.

Zeile 9: Nun kann in Zeile 9 die eigentlich Routine wlinfit aufgerufen werden. Dabeiwerden gemäß Gl. 6.1.2 die x-Werte t, die y-Werte log(U) mit den Unsicher-heiten Uerr mit einem Polynom erster Ordnung gefittet, was mit der Option’polyfit’ spezifiziert wurde. Weiterhin wurde mit ’label’ die Beschriftung derAchsen und die Benennung der Variablen im Fit definiert. Dazu übergibt maneine Cell mit den entsprechenden Bezeichnungen in der Form {’x-achse’ ’y-achse’ ’1. Variable’ ’2.Variable’}. Wenn man wie hier keine Variablennamenspezifiziert, werden sie einfach c1, c2 usw. genannt. Die letzte Option ’header’definiert die Überschrift in der Legende. Mehr zu Optionen findet man in Ka-pitel 7Wichtig: Alle Strings müssen in Latex eingegeben werden. Dabei befindetman sich im Textmodus. Will man in den mathematische Modus, geht das wieüblich mit $$

Zeile 11: Mit print kann man Bilder als Dateien speichern. Die Option -dpdf spe-zifiziert das format (siehe help print für mehr Optionen) Dieses Programmist für das Produzieren von pdfs ausgelegt. Bei anderen Formaten (z.B. jpeg)treten gerne Bugs mit dem Latex-Compiler auf.

Zeile 13-17: Die Ergebnisse des Fits werden zur Berechnung der Größen τ und U0,sowie deren Unsicherheiten verwendet.

Zeile 18: Anzeigen der Ergebnisse für τ und U0

Matlab eignet sich nun ausgezeichnet um schnell und automatisch weitere Rechnun-gen durchzuführen.

Listing 6.2: Daten in einem ASCII file (linfit.dat). e-4 steht hierbei für ×10−4

1 0 .000 e+00 1 .015 0 .0102 5 .000 e−05 0 .946 0 .0103 1 .000 e−04 0 .896 0 .0104 1 .500 e−04 0 .858 0 .0105 2 .000 e−04 0 .825 0 .0106 2 .500 e−04 0 .770 0 .010

Page 44: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

40 6 Numerik: Lineare Regression

0 0.5 1 1.5 2 2.5 3

x 10−3

−3.5

−3

−2.5

−2

−1.5

−1

−0.5

0

Zeit t [s]

Ln(Spannung[V

])

ln(U (t)) = lnU0 + βtln(U0) = (-2.9 ± 4.3) × 10−3

β = (-9.970 ± 0.064) × 102

χ2/doF= 0.95Q = 0.59

Abbildung 6.1.1: Fit des Logarithmus der Spannung eines Kondensators bei Entladung

7 3 .000 e−04 0 .729 0 .0108 3 .500 e−04 0 .703 0 .0109 4 .000 e−04 0 .670 0 .010

10 4 .500 e−04 0 .642 0 .01011 5 .000 e−04 0 .601 0 .01012 5 .500 e−04 0 .575 0 .01013 6 .000 e−04 0 .544 0 .01014 6 .500 e−04 0 .521 0 .01015 7 .000 e−04 0 .512 0 .01016 7 .500 e−04 0 .466 0 .01017 8 .000 e−04 0 .436 0 .01018 8 .500 e−04 0 .432 0 .01019 9 .000 e−04 0 .398 0 .01020 9 .500 e−04 0 .387 0 .010

Page 45: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

7 Zusätzliche Optionen undEinstellungen

Optionen sind ein nützliches Hilfsmittel um in Matlab optionale Werte an Funktio-nen zu übergeben. Dazu gibt man zunächst in einem String an, für welche Optionder nachfolgende Wert gelten soll. Nach einem Komma folgt dann der eigentlicheWert. Für wnonlinfit heißt das z.b.

1 wnon l i n f i t (x , y , yerr , f i t f u n c , c0 , ’ p l o t ’ , f a l s e )

wodurch die Option plot auf false gesetzt wird und somit keine Plots ausgegebenwerden. Jede Option besitzt intern einen Standardwert, der verwendet wird, wennnichts spezifiziert wird. Im folgenden werden alle Optionen für wlinfit und wnonlinfitaufgelistet und beschrieben.

Optionen

plot: Variablentyp: Boolean. Legt fest, ob Plots ausgegeben werden. Da plotten beiweitem die meiste Zeit kostet, lohnt es, wenn man keine Plots benötigt dieOption auf false zu setzen. Standard: true.

label: Variablentyp: Cell of Strings. Legt die Beschriftungen der Achsen und Be-nennung der Variablen in der Legende fest. Bsp: ’x-achse’ ’y-achse’ ’name1’’name2’. Standard: ’x-axis’ ’y-axis’ ’c0’ ’c1’ ....

position: Variablentyp: 1× 2 Matrix of double. Legt die Position der Legende fest.Dabei wird die Position der linken oberen Ecke angegeben. Standard: kompli-ziert, hängt von der Funktion und den Achsen ab.

chitol: Variablentyp: double. Gibt die Toleranz für χ2

dof an. Standard: 2 (nur fürwnonlinfit).

grid: Variablentyp: Boolean. Legt fest, ob ein Grid in die Plots gelegt werden soll.Standard: false.

print: Variablentyp: Boolean. Legt fest, ob etwas in die Matlab ausgegeben werdensoll. Standard: true.

header: Variablentyp: Cell of Strings. Definiert die Überschrift in der Legende. Je-des Element der Cell legt eine Zeile fest. Bsp.: siehe Listing 4.1. Standard:{’(Non)linear Fit’}.

printchi: Variablentyp: Boolean. Legt fest, ob χ2

dof und Q in der Legende aufgeführtwerden.

Page 46: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

42 7 Zusätzliche Optionen und Einstellungen

errprec: Variablentyp: integer. Legt fest, wie viele signifikante Stellen in der Legendedargestellt werden sollen. Standard: 2.

axis: Variablentyp: 1×4 Matrix of double. Wie der normale axis Befehl. Standard:Kompliziert, hängt von den Daten ab.

contourplot: Variablentyp: Cell of 1× 2 matrices. Hiermit können Konturplots derWahrscheinlichkeitsverteilung der Fitparameter, die in dem Vektor festgelegtwerden, erzeugt werden. Daran können Korrelationen zwischen zwei Fitpara-metern erkannt werden. Standard: keine Ausgabe.

polyfit: Variablentyp: Integer. Fügt den zu fittenden Funktionen ein Polynom mitder angegebenen Ordnung hinzu. Wenn man nur mit einem Polynom fittenmöchte, kann man einfach als Cell in der die Funktionen übergeben werdeneine leere Cell übergeben und nur die Option polyfit verwenden.

Page 47: Jannick Weißhaupt Franziska Flegel Matlab für das ... · 1 Einführung in Matlab Matlab(MATrixLABoratory)isteinProgrammundgleichzeitigeineProgrammier-sprachezurLösungnumerischerProbleme.Dabeiistes,wiederNameschonsagt,

Literaturverzeichnis

[1] U. Wolff, P. Fritzsch, and T. Korzec, “Computational Physics I.”http://www.physik.hu-berlin.de/com/teachingandseminars/previousCPI.

[2] J. Beringer et al. (Particle Data Group) Phys. Rev. D86, p. 010001, 2012.

[3] A. R. Gallant, “Nonlinear regression,” The American Statistician, vol. 29, no. 2,pp. pp. 73–81, 1975.

[4] U. Müller, “Einführung in die Messung, Auswertung und Darstel-lung experimenteller Ergebnisse in der Physik.” http://gpr.physik.hu-berlin.de/Skripten/Einfuehrung/PDF-Datei/Einfuehrung.pdf.