bisect#
- scipy.optimize.bisect(f, a, b, args=(), xtol=2e-12, rtol=np.float64(8.881784197001252e-16), maxiter=100, full_output=False, disp=True)[Quelle]#
Suche nach der Wurzel einer Funktion in einem Intervall mittels Bisektion.
Standardmäßige Bisektionsroutine zur Suche nach einer Wurzel der Funktion f zwischen den Argumenten a und b. f(a) und f(b) dürfen nicht dasselbe Vorzeichen haben. Langsam, aber sicher.
- Parameter:
- fFunktion
Python-Funktion, die eine Zahl zurückgibt. f muss stetig sein und
f(a)undf(b)müssen entgegengesetzte Vorzeichen haben.- aSkalar
Ein Ende des klammernden Intervalls [a,b].
- bSkalar
Das andere Ende des klammernden Intervalls [a,b].
- xtolZahl, optional
Die berechnete Wurzel
x0wirdnp.isclose(x, x0, atol=xtol, rtol=rtol)erfüllen, wobeixdie exakte Wurzel ist. Der Parameter muss positiv sein.- rtolZahl, optional
Die berechnete Wurzel
x0erfülltnp.isclose(x, x0, atol=xtol, rtol=rtol), wobeixdie exakte Wurzel ist. Der Parameter darf nicht kleiner sein als sein Standardwert von4*np.finfo(float).eps.- maxiterint, optional
Wenn die Konvergenz nicht in maxiter Iterationen erreicht wird, wird ein Fehler ausgelöst. Muss >= 0 sein.
- argstuple, optional
Enthält zusätzliche Argumente für die Funktion f. f wird mit
apply(f, (x)+args)aufgerufen.- full_outputbool, optional
Wenn full_output falsch ist, wird die Wurzel zurückgegeben. Wenn full_output wahr ist, ist der Rückgabewert
(x, r), wobei x die Wurzel und r einRootResults-Objekt ist.- dispbool, optional
Wenn wahr, wird eine RuntimeError ausgelöst, wenn der Algorithmus nicht konvergiert ist. Andernfalls wird der Konvergenzstatus in einem
RootResults-Rückgabeobjekt aufgezeichnet.
- Rückgabe:
- rootfloat
Wurzel von f zwischen a und b.
- r
RootResults(vorhanden, wennfull_output = True) Objekt, das Informationen über die Konvergenz enthält. Insbesondere ist
r.convergedTrue, wenn die Routine konvergiert hat.
Siehe auch
brentq,brenth,bisect,newtonfixed_pointSkalar-Fixed-Point-Finder
fsolven-dimensionale Wurzelsuche
elementweise.find_rooteffizienter elementweiser 1-D-Wurzelfinder
Hinweise
Wie in der Parameterdokumentation erwähnt, wird die berechnete Wurzel
x0np.isclose(x, x0, atol=xtol, rtol=rtol)erfüllen, wobeixdie exakte Wurzel ist. In Gleichungsform ist diese Abbruchbedingungabs(x - x0) <= xtol + rtol * abs(x0).Der Standardwert
xtol=2e-12kann zu überraschenden Ergebnissen führen, wenn man erwartet, dassbisectWurzeln immer mit einem relativen Fehler nahe der Maschinengenauigkeit berechnet. Es sollte darauf geachtet werden, xtol für den jeweiligen Anwendungsfall auszuwählen. Wennxtol=5e-324, die kleinste Subnormalzahl, gesetzt wird, wird die höchste Genauigkeitsstufe sichergestellt. Größere Werte von xtol können nützlich sein, um Funktionsauswertungen zu sparen, wenn eine Wurzel bei Null liegt oder nahe Null ist, in Anwendungen, bei denen die winzigen absoluten Unterschiede zwischen Gleitkommazahlen nahe Null nicht aussagekräftig sind.Beispiele
>>> def f(x): ... return (x**2 - 1)
>>> from scipy import optimize
>>> root = optimize.bisect(f, 0, 2) >>> root 1.0
>>> root = optimize.bisect(f, -2, 0) >>> root -1.0