15

Click here to load reader

Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Embed Size (px)

Citation preview

Page 1: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Funktionen in Matlab

Vorlesung

Computergestutzte Mathematik zur Linearen Algebra

Lehrstuhl fur Angewandte MathematikSommersemester 2009

14. und 21. Mai 2009

Page 2: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Funktionen in Matlab

Wir kennen schon diverse Matlab-Funktionen:

I sin, cos, diag, size, . . .

diese wurden meist durch y = funktion(x) aufgerufen, wobei xeine Eingabevariable und y eine Ausgabevariable war.

I was in der Funktion passiert, ist fur uns unsichtbar (black box)

I der Funktionsaufruf hinterlasst im Unterschied zu Skriptenkeine Spuren (z.B. Hilfsvariablen) im Arbeitsspeicher.

Matlab kann nicht nur durch Skripte sondern auch durchFunktionen erganzt werden!

Page 3: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Matlab-eigene Funktionen

In Matlab gibt es so genannte built-in Funktionen, die besondersschnell laufen und nicht in Matlab programmiert sind.

Beispiel: type diag

Es gibt aber auch viele in Matlab programmierte Funktionen:

Beispiel: type flipud

Funktionen sind wie Skripte Textdateien, deren Name mit .mendet.

Page 4: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Funktionen

Aufbau einer Funktion:

1. Definition der Funktion (abgespeichert in funname.m)

function [out_1,out_2,...,out_k] = ...funname(in_1,in_2,...,in_m)

Die Listen der Ein- oder Ausgabevariablen konnen auch leersein.

2. Kommentarzeilen (was tut die Funktion, welche Ein- undAusgabevariablen muss der Benutzer verwenden).

I Der erste zusammenhangende Block von Kommentarzeilenwird bei help funname angezeigt.

I Die erste Zeile der Kommentarzeilen wird bei lookfordurchsucht.

Page 5: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Funktionen, Fortsetzung

3. Haufig folgt dann die Uberprufung der Eingabedaten:I sind genugend Eingabevariablen vorhanden?I sind die Eingabedaten vernunftig?I sind hochstens k Ausgabevariablen gefragt?

Falls dies nicht der Fall ist: Fehlermeldung und Ausstieg

4. Matlab-Befehle fur die eigentliche Funktion

Die Variablen in_1,...,in_m und out_1,...,out_k und alle inder Funktion neu definierten Variablen sind lokal, also nicht imMatlab-Workspace vorhanden.

Aufruf: (es darf x ≤ k und y ≤ m sein)[out_1,...,out_x]=funname(in_1,in_2,...,in_y)

Page 6: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Beispiel

ggt als Funktion, gespeichert in ggt.m

function g = ggt(m,n);% function g = ggt(m,n);% Berechnung des ggt zweier ganzer Zahlen

if (m > 0 & n > 0)while m ~= n...endg = m;

elseerror(’fehlerhafte Eingabedaten’);

end

Aufruf: x=3; y=5; f=ggt(x,y); whos

Page 7: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Arbeitsspeicher

Aufruf: f=ggt(x,y)

Funktion g=ggt(m,n)

Matlab-Workspace ggt-Workspace

vorher: x , y

nachher: x , y , f

Input: m, n

Output: g

x −→ my −→ n

f ←− g

Der Workspace kann mit whos angezeigt werden (amMatlab-Prompt bzw. innerhalb der Funktion ggt)

Page 8: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Regeln fur Funktionen I

I Fur Funktionsnamen gelten dieselben Regeln wie fur Variablen

I Eine Funktion endet nachdem die letzte Zeile ausgefuhrtwurde oder durch ein return-Kommando

I Eine Funktion kann durch warning(’eine Warnung’) eineWarnung geben. Im Unterschied zu disp(’eine Warnung’)konnen durch warning on bzw. warning off Warnungenglobal an- bzw. ausgeschaltet werden

I Matlab-Funktionen konnen Skripte oder andereMatlab-Funktionen aufrufen.

Page 9: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Regeln fur Funktionen II

I In einem m-File konnen mehrere Funktionen abgespeichertwerden. Solche Unterfunktionen werden an die erste Funktion(die Hauptfunktion) angehangt. Sie beginnen mit einemStandard function-Kommando und genugen denselbenRegeln wie vorher.

I Unterfunktionen konnen durch die Hauptfunktion oder durchandere Unterfunktionen aus demselben m-File aufgerufenwerden, nicht aber aus anderen Funktionen oder Skripten.

I Unterfunktionen haben ihren eigenen lokalen Arbeitsspeicher.

I Die Reihenfolge von Unterfunktionen spielt keine Rolle.

Page 10: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Beispiel: Binomialkoeffizienten

Aufgabe: Gegeben sei eine Funktion f=fac(n) die f = n! liefertund in fac.m gespeichert ist. Mit dieser soll

(nk

)berechnet werden:

(n

k

)=

{1, n = k oder k = 0

n!(n−k)!k! , 0 < k < n

Losung:function b=bin(n,k)

Input: n, kOutput: b

Page 11: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

function b = bin(n,k);% function b = bin(n,k); Binomialkoeffizient

if (n == k | k == 0)b = 1;

elseif (0 < k & k < n)b = fac(n)/fac(n-k)/fac(k);

elseerror([’erster Eingabewert muss groesser ’,...

’als der zweite sein’]);end

Page 12: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Arbeitsspeicher

Matlab bin

fac

n, k

b

Page 13: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Beispiel: Approximation an ex

Aufgabe: Berechnen Sie so viele Folgenglieder

xn =(1 +

x

n

)n,

bis gilt|xn − xn−1| ≤ tol

Losung: while-Schleife

Page 14: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Berechnung von Funktionen

Aufgabe: Schreiben Sie eine Funktion function y=fun1(x), mitder Sie f (x) = sin(x)/x auswerten konnen. Falls x ein Vektor odereine Matrix ist, soll die Funktion fur jedes Element berechnetwerden.

Losung: Fallunterscheidung fur Elemente von x = 0 notig: Furx < 10−5 verwende Taylor-Entwicklung:

sin(x)

x= 1− 1

3!x2 +

1

5!x4 − 1

7!x6

Bestimme diese Elemente mit find.Achtung: find gibt Spaltenindizes zurueck, daher schreibe xzunachst als Vektor.

Page 15: Funktionen in Matlab Vorlesung Computergest¨utzte ...luo/de/lehre/matlabss09/.../funktionen.pdf · Matlab-eigene Funktionen In Matlab gibt es so genannte built-in Funktionen, die

Beispiel: Mandelbrot-Menge

Aufgabe: Bestimme alle z ∈ C, welche unter der Abbildungz 7→ z2 + c gestartet mit z = c beschrankt bleiben.

Losung:

1. Definition von Punkten zjk ∈ C in einem Rechteck

2. Funktion auf diesen Punkten, Startwert zjk = c fur alle j , k

3. Fuhre Iteration fur alle zjk gleichzeitig aus (for- oderwhile-Schleife)

4. Plotte alle Punkte zjk mit |zjk | < M (z.B. M = 106)