2 Gnu Octave |
Der Befehl
[Ergebnis, Funktionswert, Info] = fsolve(Funktionsname, Startwert [ , Optionen]);
kann zur Suche nach Nullstellen einer Funktion verwendet werden.
Dabei wird ausgehend vom Startwert nach einer Nullstelle der Funktion gesucht. Als Ergebnis werden die gefundene Nullstelle und ein Informationscode geliefert. Nur wenn der Informationscode 1 ist, war die Nullstellensuche erfolgreich.
Anstelle des Funktionsnamen in Anführungszeichen kann auch eine Funktionsreferenz (dem Funktionsnamen ohne Anführungszeichen wird ein @ vorangestellt) verwendet werden.
Im Beispiel wird die Gleichung ex+2x=7 gelöst, indem die Nullstelle von f(x)=ex+2x-7 ausgehend vom Startwert x=1 gesucht wird:
function [y] = f(x) y = exp(x) + 2 * x - 7; endfunction [x, fval, info] = fsolve(@f, 1.0); if(1 == info) then printf("Nullstelle: x = %g\n", x); else printf("Keine Nullstelle gefunden!\n"); end
Für bessere Konvergenz der Nullstellensuche kann auch die erste Ableitung der Funktion mit angegeben werden:
# Zwei Rueckgabewerte: # - Funktionswert # - Erste Ableitung, nur berechnet, falls zwei Rueckgabewerte erwartet werden function [y, yabl] = f(x) y = exp(x) + 2 * x - 7; if (nargout > 1) yabl = exp(x) + 2; endif endfunction [x, fval, info] = fsolve(@f, 1.0, optimset("jacobian", "on")); if(1 == info) then printf("Nullstelle: x = %g\n", x); else printf("Keine Nullstelle gefunden!\n"); end
Die erste Ableitung (bzw. bei Gleichungssystemen die Jacobi-Matrix) wird nur berechnet, falls zwei Rückgabewerte erwartet werden. Der optimset-Befehl erzeugt einen Satz von Optimierungsoptionen, die Verwendung der Jacobi-Matrix aktiviert und für alle anderen Optionen Standardeinstellungen verwendet.