Verwenden Sie Fsolve in Python

Abid Ullah 21 Juni 2023
  1. die fsolve-Funktion in Python
  2. Verwenden Sie die Funktion fsolve, um Lösungen in Python zu finden
Verwenden Sie Fsolve in Python

Dieser Artikel wird untersuchen, wie wir fsolve verwenden können, um eine Lösung in Python zu finden. Wir werden auch die Szenarien untersuchen, in denen es verwendet wird, und einige Beispielcodes, um besser zu verstehen, wie und wann es verwendet werden kann, um ein bestimmtes Ergebnis zu erzielen.

Beginnen wir damit, zu verstehen, was fsolve ist und warum es verwendet wird.

die fsolve-Funktion in Python

Gleichungen sind die Wurzeln der Datenwissenschaft und helfen Datenwissenschaftlern, Mathematikern, Chemieingenieuren und Ärzten, die verschiedenen Szenarien, mit denen sie täglich zu tun haben, zu verstehen. Jetzt, da Computer in unser tägliches Leben eingebunden sind, wird es schwieriger, Gleichungen auf der Grundlage eines größeren Maßstabs sequentiell zu lösen.

Pythons fsolve erleichtert es diesen Fachleuten und anderen, diese Gleichungen mit verschiedenen Modulen zu lösen, die die Python-Bibliotheken anbieten. fsolve ist im Wesentlichen ein SciPy-Modul, das die Wurzeln nichtlinearer Gleichungen zurückgibt.

Es gibt verschiedene Parameter, die fsolve für verschiedene Szenarien anbietet. Diese können leicht direkt aus der online verfügbaren SciPy-Dokumentation gefunden werden.

So sieht die gesamte Parameterliste für fsolve aus:

Beispielcode:

scipy.optimize.fsolve(
    func,
    x0,
    args=(),
    fprime=None,
    full_output=0,
    col_deriv=0,
    xtol=1.49012e-08,
    maxfev=0,
    band=None,
    epsfcn=None,
    factor=100,
    diag=None,
)

Eine ausführliche Erklärung aller Parameter und ihrer jeweiligen Bedeutung finden Sie in der SciPy-Dokumentation. Wir werden jedoch eine kurze, aber leicht verständliche Zusammenfassung dieser Parameter durchgehen:

Parameter Beschreibung
func, aufrufbar f(x, *args) Dies ist im Wesentlichen die Beschreibung einer Funktion, die ein oder mehrere, möglicherweise vektorielle Argumente akzeptiert und einen Wert mit der gleichen Länge wie das Argument zurückgibt.
x0, ndarray Dieses Argument gibt an, was die Anfangsschätzung für die Wurzeln der Funktion f(x)=0 ist.
args, Tupel (optional) Dies sind alle zusätzlichen Argumente, die für die Funktion erforderlich sein können.
fprime, aufrufbares f(x, *args) (optional) Dies ist eine Funktion zum Berechnen des geschätzten Werts der Jacobi-Funktion der Funktion mit den Ableitungen über die Zeilen.
full_output, bool (optional) Dies gibt alle optionalen Ausgabewerte zurück, wenn eine Bedingung erfüllt oder wahr ist.
col_deriv, bool (optional) Über dieses Argument geben Sie an, ob die Jacobi-Funktion die Ableitungen nach unten durch die Spalten berechnet oder nicht. Laut der SciPy-Dokumentation ist dies schneller, da keine Transpose-Operation vorhanden ist.
xtol, Float (optional) Dieses Argument ermöglicht es der Funktion, eine Berechnung basierend auf dem größten xtol des relativen Fehlers zwischen zwei aufeinanderfolgenden iterierten Werten zu beenden.
maxfev, int (optional) Dies definiert die maximale Anzahl von Aufrufen der Funktion.
band, Tupel (optional) Dies gilt, wenn fprime auf None eingestellt ist. Die Jacobi-Matrix wird als gebändert angesehen, wenn das Argument auf eine Zweierfolge gesetzt ist, die die Anzahl der Unter- und Superdiagonalen innerhalb der Matrix enthält.
epsfcn, Float (optional) Wenn fprime auf None gesetzt ist, enthält dieses Argument die passende Schrittlänge für die Approximation der Vorwärtsdifferenz der Jacobi-Zahl. Die relativen Fehler in den Funktionen werden in der Größenordnung der Maschinenpräzision angenommen, wenn epsfcn kleiner als die Maschinenpräzision ist.
Faktor, Float (optional) Dieses Argument bestimmt die anfängliche Schrittgrenze und muss zwischen (0,1 und 100) liegen.
diag, Sequenz (optional) Diese N-positiven Einträge dienen als Skalierungsfaktor für die Variablen.

Verwenden Sie die Funktion fsolve, um Lösungen in Python zu finden

Wie Sie wahrscheinlich bereits erkennen können, kann fsolve für verschiedene nichtlineare Gleichungen in verschiedenen Szenarien verwendet werden. Sehen wir uns einige einfache Codebeispiele an, um besser zu verstehen, wie fsolve verwendet werden kann:

Finden Sie die Wurzeln der Gleichung x+2cos(x) mit einem Startpunkt von -0,2

Beispielcode:

from math import cos
import scipy.optimize


def func(x):
    y = x + 2 * cos(x)
    return y


y = scipy.optimize.fsolve(func, 0.2)
print(y)

In diesem Code importieren wir die cos-Funktion aus der riesigen math-Bibliothek in Python und optimize aus scipy (Quelle von fsolve). Als nächstes definieren wir unsere Gleichung und speichern sie in y in der func-Methode.

Nachdem unsere Gleichung korrekt initialisiert ist, rufen wir mit fsolve lediglich die Methode (func) auf, die die Gleichung enthält. Im zweiten Argument definieren wir den Startpunkt für die Gleichung.

Das Ergebnis wird dann in einer Variablen y gespeichert und zur Ausgabe ausgegeben.

Die Ausgabe des Codes:

[-1.02986653]

Lösen Sie eine Gleichung mit den Startpunkten 0 und 2

Beispielcode:

from math import cos
import scipy.optimize


def func(x):
    y = [x[1] * x[0] - x[1] - 6, x[0] * cos(x[1]) - 3]
    return y


x0 = scipy.optimize.fsolve(func, [0, 2])
print(x0)

In diesem Code folgen wir denselben Schritten wie in Code 1, indem wir cos und scipy.optimize aus Pythons math- und scipy-Bibliotheken importieren. Wir fahren mit dem nächsten Schritt fort, indem wir eine Gleichung in einer Methode namens func definieren.

Wir nennen diese Methode dann ein Argument in der Funktion fsolve und versehen sie mit den beiden Startpunkten 0 und 2, die dann in einer Variablen namens x0 gespeichert und ausgegeben werden.

Die Ausgabe des Codes:

[6.49943036 1.09102209]

Finden Sie die Wurzeln der Gleichung 4sin(y)-4 mit dem Startpunkt 0.3

Beispielcode:

from math import sin
import scipy.optimize


def func(y):
    x = 4 * sin(y) - 4
    return x


x = scipy.optimize.fsolve(func, 0.3)
print(x)

In diesem Beispielcode importieren wir statt cos sin aus der math-Bibliothek. Die Struktur des Codes bleibt die gleiche wie in den obigen Beispielen, wo wir auch scipy.optimize für fsolve importieren und dann eine Gleichung innerhalb einer Methode func definieren.

Wir nennen diese Methode ein Argument in fsolve mit einem Startpunkt von 0.3. Der resultierende Wert wird in der Variablen x gespeichert und zur Ausgabe gedruckt.

Die Ausgabe des Codes:

[1.57079633]

In diesem Artikel haben wir gelernt, dass fsolve verwendet wird, um die Wurzeln nichtlinearer Gleichungen zu finden, über die verschiedenen Arten von Parametern, die fsolve annehmen kann und was jeder davon mit sich bringt. Darüber hinaus sind wir einige Arbeitsbeispiele von fsolve durchgegangen und haben untersucht, wie es in Ihrem Code verwendet werden kann.

Nachdem Sie nun die Theorie und die praktischen Codebeispiele zur Verwendung von fsolve zum Ableiten einer Lösung durchgegangen sind, ist es an der Zeit, eigenen Code zu erstellen, um die Funktionsweise von fsolve weiter zu erkunden.

Wir hoffen, dass Sie diesen Artikel hilfreich finden, um zu verstehen, wie Sie fsolve verwenden, um Probleme in Python zu lösen.

Autor: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn