Main Content

Ausführungen für nicht lineare Funktionen

Function Handles

Sie können Handles für jede MATLAB® Funktion erstellen und diese Handles anschließend zum Referenzieren der Funktion verwenden. Ein Function Handle wird typischerweise in einer Argumentliste an andere Funktionen übergeben, die die Funktion anschließend mithilfe des Handles ausführen oder auswerten können.

Konstruieren Sie einen Function Handle in MATLAB und verwenden Sie das At-Zeichen, @, vor dem Funktionsnamen. Im folgenden Beispiel wird ein Function Handle für die Funktion sin erstellt und der Variablen fhandle zugewiesen:

fhandle = @sin;

Sie können eine Funktion mithilfe ihres Handles auf dieselbe Weise aufrufen wie Sie die Funktion mithilfe ihres Namens aufrufen würden. Die Syntax lautet wie folgt:

fhandle(arg1, arg2, ...);

Die unten abgebildete Funktion plot_fhandle erhält einen Function Handle und Daten, generiert y-Achsendaten mithilfe des Function Handles und plottet diese:

function plot_fhandle(fhandle, data)
plot(data, fhandle(data))

Wenn Sie plot_fhandle mit einem Handle zur Funktion sin und mit dem unten abgebildeten Argument aufrufen, erstellt die resultierende Auswertung einen Sinuswellenplot:

plot_fhandle(@sin, -pi:0.01:pi)

Function Functions

Eine Klasse von Funktionen mit dem Namen Function Functions kann mit nicht linearen Funktionen einer skalaren Variablen verwendet werden. Dies bedeutet, dass eine Funktion auf eine andere Funktion wirkt. Beispiele für Function Functions:

  • Nullstellensuche

  • Optimierung

  • Quadratur

  • Gewöhnliche Differenzialgleichungen

MATLAB stellt die nicht lineare Funktion mit der Datei dar, durch die sie definiert wird. Das folgende Beispiel veranschaulicht eine vereinfachte Version der Funktion humps aus dem Ordner matlab/demos:

function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Werten Sie diese Funktion an einer Punktmenge im Intervall 0 ≤ x ≤ 1 mit folgenden Werten aus:

x = 0:.002:1;
y = humps(x);

Anschließend plotten Sie die Funktion mit dem Befehl

plot(x,y)

Das Diagramm veranschaulicht, dass die Funktion ein lokales Minimum in der Nähe von x = 0,6 aufweist. Die Funktion fminsearch findet den Minimierer, den Wert von x, an dem die Funktion ihren Minimalwert aufweist. Das erste Argument für fminsearch ist ein Function Handle für die zu minimierende Funktion, während das zweite Argument eine grobe Schätzung an der Position des Minimums ist:

p = fminsearch(@humps,.5)
p =
    0.6370

Auswertung der Funktion am Minimierer:

humps(p)

ans =
   11.2528

Numerische Analytiker verwenden die Begriffe Quadratur und Integration, um zwischen der numerischen Approximation endlicher Integrale und der numerischen Integration gewöhnlicher Differenzialgleichungen zu unterscheiden. MATLAB Quadraturroutinen sind quad und quadl. Die Anweisung

Q = quadl(@humps,0,1)

berechnet den Bereich unter der Kurve im Diagramm und ergibt

Q =
   29.8583

Abschließend ist aus dem Diagramm ersichtlich, dass die Funktion in diesem Intervall niemals null ist. Wenn Sie also nach einem Nullwert mit

z = fzero(@humps,.5)

suchen, werden Sie einen außerhalb des Intervalls finden:

z =
   -0.1316