die Quadratwurzel durch sukzessive Approximation Bestimmen des folgenden Algorithmus implementiert:Implementieren die Quadratwurzel Methode durch sukzessive Approximation
Begin durch Erraten, daß die Quadratwurzel x/2. Anruf, die g erraten.
Die tatsächliche Quadratwurzel muss zwischen g und x/g liegen. Erzeugen Sie bei jedem Schritt in der sukzessiven Approximation eine neue Schätzung durch Mittelwertbildung von g und x/g.
Wiederholen Sie Schritt 2, bis die Werte von g und x/g so nah beieinander liegen, wie es die Präzision der Hardware zulässt. In Java ist der beste Weg, um nach dieser Bedingung zu suchen, zu testen, ob der Durchschnittswert gleich einem der Werte ist, die verwendet wurden, um ihn zu erzeugen.
Was mich wirklich verwirrt, ist die letzte Anweisung der Stufe 3. ich es wie folgt interpretiert:
private double sqrt(double x) {
double g = x/2;
while(true) {
double average = (g + x/g)/2;
if(average == g || average == x/g) break;
g = average;
}
return g;
}
Dies scheint nur eine Endlosschleife zu verursachen. Ich folge dem Algorithmus genau, wenn der Durchschnitt entweder g oder x/g ist (die zwei Werte, die verwendet wurden, um ihn zu erzeugen), dann haben wir unsere Antwort?
Welche Eingabe verwenden Sie? Es scheint für mich zu beenden ... – kevmo314
@ kevmo314 sqrt (5) –
Beendet für mich mit 2.23606797749979 – kevmo314