Das Verständnis der inneren Funktionsweise der Näherungssuche ist entscheidend für die Lösung von Problemen im Zusammenhang mit der Anpassung von Polynomen, parametrischen Funktionen und transzendenten Funktionen Gleichungen. Mit diesem Ansatz können Sie Werte und Parameter effektiv schätzen, auch wenn Sie mit Funktionen arbeiten, die nicht streng monoton sind.
Die Approximationssuche ahmt das Konzept der binären Suche nach, tut dies aber auch Legen Sie nicht die Einschränkung fest, dass die gesuchte Funktion streng monoton sein muss. So funktioniert es:
Hier ist eine vereinfachte C-Implementierung der Näherungssuche:
class approx { public: void init(double a0, double a1, double da, int n, double *e) { a0 = min(a0, a1); a1 = max(a0, a1); // Ensure a0 < a1 da = abs(da); this->n = n; e = e; e0 = -1.0; i = 0; a = a0; aa = a0; done = false; stop = false; } void step() { if ((e0 < 0.0) || (e0 > *e)) { e0 = *e; aa = a; } // Better solution if (stop) { i++; if (i >= n) { done = true; a = aa; return; } // Final solution a0 = aa - fabs(da); a1 = aa + fabs(da); a = a0; da *= 0.1; a0 += da; a1 -= da; stop = false; } else { a += da; if (a > a1) { a = a1; stop = true; } // Next point } } };
Angenommen, Sie möchten den Wert von x ermitteln, sodass y = f(x) y0 am nächsten kommt. So verwenden Sie die Approx-Klasse:
approx aa; double ee, x, y, x0, y0 = your_target_value; for (aa.init(0.0, 10.0, 0.1, 6, &ee); !aa.done; aa.step()) { x = aa.a; y = f(x); ee = abs(y - y0); }
Das obige ist der detaillierte Inhalt vonWie kann die Approximationssuche effizient Werte und Parameter für nichtmonotone Funktionen finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!