Wie die Näherungssuche funktioniert
Um zu verstehen, wie die Näherungssuche funktioniert, betrachten wir die Analogie einer klassischen binären Suche. Bei der binären Suche suchen wir nach einem bestimmten Wert innerhalb einer sortierten Liste, indem wir das Suchintervall wiederholt halbieren. Die Näherungssuche unterscheidet sich jedoch von der binären Suche darin, dass die gesuchte Funktion nicht streng monoton sein muss, was bedeutet, dass sie sowohl steigende als auch fallende Werte verarbeiten kann.
Algorithmusübersicht:
-
Suchintervall definieren: Geben Sie das Anfangsintervall [a0, a1] an, innerhalb dessen wir die Lösung erwarten lügen.
-
Prüfpunkte: Punkte x(i) innerhalb des Intervalls [a0, a1] gleichmäßig verteilen, dabei eine Schrittweite da verwenden.
-
Fehler berechnen (ee): Berechnen Sie für jeden Punkt x(i) den Fehler oder Abstand ee zwischen der Funktionsausgabe y=f(x(i)) und dem Zielwert y0.
-
Lösungspunkt identifizieren: Verfolgen Sie den Punkt aa mit dem minimalen Fehler ee.
-
Rekursiv wiederholen: Stoppen Sie die Suche, wenn alle Punkte x(i) wurden abgetastet oder eine bestimmte Genauigkeit wurde erreicht. Wenn nicht, erhöhen Sie die Genauigkeit rekursiv, indem Sie das Suchintervall verengen und die Schrittgröße da verfeinern.
Beispielimplementierung:
In C können wir das verwenden Folgende Klasse zur Implementierung der Näherungssuche:
class approx {
public:
double a, aa, a0, a1, da, *e, e0;
int i, n;
bool done, stop;
};
Nach dem Login kopieren
Um dies zu verwenden Klasse:
approx aa;
double ee, x, y, x0, y0;
aa.init(0.0, 10.0, 0.1, 6, &ee);
while (!aa.done) {
x = aa.a;
y = f(x);
ee = fabs(y - y0);
aa.step();
}
Nach dem Login kopieren
Wichtige Überlegungen:
- Das Suchintervall [a0, a1] muss sorgfältig ausgewählt werden, um die Lösung zu umfassen und gleichzeitig ihre Breite zu minimieren.
- Die anfängliche Schrittgröße da sollte angemessen gewählt werden, um zu vermeiden, dass beim Auswuchten lokale Minima oder Maxima übersehen werden Geschwindigkeit.
- Approximationssuche kann zur Lösung einer Vielzahl von Problemen verwendet werden, einschließlich der Anpassung von Polynomen, der Suche nach unbekannten Parametern und der Lösung transzendenter Gleichungen.
Das obige ist der detaillierte Inhalt vonWie findet die Approximationssuche Lösungen ohne strikte Monotonie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!