Wann verwende ich FindRoot anstatt NSolve?
Wie Solve ist NSolve in erster Linie für das Lösen von Polynomgleichungen gedacht.
In[1]:= NSolve[4 - r^2 == r, r]
Out[1]= {{r -> -2.56155}, {r -> 1.56155}}
Die in NSolve verfügbaren algebraischen Methoden können keine allgemeinen Gleichungen mit transzendenten Funktionen behandeln – zum Beispiel:
In[2]:= NSolve[4 Cos[r] == r, r]
NSolve::nsmet: This system cannot be solved with the methods available to NSolve.
Out[2]= NSolve[4 Cos[r] == r, r]
FindRoot verwendet numerische Methoden, um bei einem Anfangswert für die unabhängige Variable zu beginnen und eine Lösung zu finden:
In[3]:= fr = FindRoot[ 4 Cos[r] == r, {r, 1}]
Out[3]= {r -> 1.25235}
Überprüfen Sie, ob der zurückgegebene Wert die Gleichung löst:
In[4]:= (4 Cos[r] - r) /. fr // Chop
Out[4]= 0
FindRoot findet eine Lösung pro Auswertung. Um weitere Lösungen mit FindRoot zu erhalten, müssen die Anfangswerte nahe genug an den anderen Nullstellen gewählt werden:
In[5]:= Plot[ 4 Cos[r] - r, {r, -2 Pi, 2 Pi}]
In[6]:= FindRoot[ 4 Cos[r] == r, {r, -4}]
Out[6]= {r -> -3.5953}
In[7]:= FindRoot[ 4 Cos[r] == r, {r, -2}]
Out[7]= {r -> -2.13333}
Beachten Sie dazu auch das Tutorial zum numerischen Lösen von Gleichungen.
[English]
Support kontaktieren
Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.
1-800-WOLFRAM (+1-217-398-0700 für internationale Anrufer)
Kundendienst
Montag–Freitag
8:00–17:00 US Central Time
- Produktregistrierung oder Aktivierung
- Kaufinformationen und Bestellung
- Hilfe beim Installieren und Starten
Erweiterter technischer Support (für berechtigte Kunden)
Montag–Donnerstag
8:00–19:00 US Central Time
Freitag
8:30–10:00 & 11:00–17:00 US Central Time
- Technischer Priority-Support
- Produktassistenz von Wolfram-Experten
- Hilfe beim Programmieren mit der Wolfram Language
- Erweiterter Support beim Installieren