spreng-kopf
Grünschnabel
Hi.....ich habe ein kleines Problem mit meinem Programm.
Es handelt sich um die Wurzelberechnung nach Newton.
Ich möchte das die Zahl vom Benutzer eingegeben werden kann und nicht wie hier im Programm fest sitzt.
Wie ändere ich meine Main Methode um, damit eine Zahl übergeben werden kann?
Danke.
Es handelt sich um die Wurzelberechnung nach Newton.
Ich möchte das die Zahl vom Benutzer eingegeben werden kann und nicht wie hier im Programm fest sitzt.
Wie ändere ich meine Main Methode um, damit eine Zahl übergeben werden kann?
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Wurzel3 {
private int iterations; // Zähler für Iterationen
public Wurzel3() {
iterations = 0;
}
public int getIterations() {
return iterations;
}
double sqrt(double x) {
double ug = 1; // Untergrenze
double og = x; // Obergrenze
double approx = (ug + og) / 2; // Näherung
while (approx * approx != x) {
iterations++; // Wieder ein Durchgang mehr...
System.out.println("Iteration " + iterations + ": "
+ ug + " <= " + approx + " <= " + og);
double diff = approx * approx - x;
if (diff < 0) {
// approx ist zu klein => wird neue Untergrenze
ug = approx;
}
else {
// approx ist zu groß => wird neue Obergrenze
og = approx;
}
double saveApprox = approx; // Bisherige Näherung merken
approx = (ug + og) / 2; // Neue Näherung berechnen
// Gemäß Arithmetik sollte jetzt ug < approx < og gelten:
if (approx <= ug || approx >= og) {
iterations--; // Letzte Iteration rückgängig machen
System.out.println("Abbruch, da keine bessere Genaugigkeit "
+ "erzielt werden kann");
return saveApprox;
}
}
// approx * approx ist gleich x
System.out.println("Volltreffer!");
return approx;
}
public static void main(String[] args) {
Wurzel3 w = new Wurzel3();
double n = 4;
// Wert für n auf der Kommandozeile angegeben?
if (args.length > 0) {
// ... dann auswerten und n zuweisen
n = Double.parseDouble(args[0]);
}
double wurzel = w.sqrt(n);
double mathSqrt = Math.sqrt(n);
System.out.println("Wurzel von " + n
+ " ist naeherungsweise: " + wurzel
+ " (" + w.getIterations() + " Iterationen)");
System.out.println("Math.sqrt(" + n + ") = " + mathSqrt);
System.out.println("Differenz = " + Math.abs(wurzel - mathSqrt));
}
}
Danke.