Wurzelbestimmung mit ...
Wisch Schmob
- java
Hallo wieder mal, Wischmob meldet sich zurück!
Hier ist ein kleiner Code, den ich grade geschrieben habe, der aber leider
nicht so richtig funzt:
public class sqrt{
public static void main(String[] args){
// Die Variablen deklarieren
double wert=Double.parseDouble(args[0]);
double epsilon = 0.00000000000001;
double step = 10;
double wurzel = 0;
if(wert >= 0){
// Ausführen, solange die Bedingung erfüllt ist
while(Math.abs(wurzel*wurzel-wert)>epsilon){
step = step/10;
while(wert>wurzel*wurzel){
wurzel = wurzel+step;
//System.out.println(wurzel);
}
wurzel = wurzel-step;
//System.out.println(" "+step);
}
// Wurzel "ausdrucken"
System.out.println(wurzel);
}
else{
System.out.println("Negative Werte sind ungültig!");
}
}
}
Funktioniert alles soweit, Wurzel 0 okay, Wurzel 2 okay, Wurzel 4 okay, Wurzel 1: Nicht Okay!
Herauskommen bei 1, 9, 16 und mehr kommen immer etwas kleinere Werte raus, bei Wurzel 1 z.b. 0.9999999999999999 und bei 9 und 16 ähnliches.
woran mag das wohl liegen?
weiß jemand, wie man das verbessern kann?
danke, euer Wischmob!
@@Wisch Schmob:
nuqneH
Herauskommen bei 1, 9, 16 und mehr kommen immer etwas kleinere Werte raus, bei Wurzel 1 z.b. 0.9999999999999999 und bei 9 und 16 ähnliches.
woran mag das wohl liegen?
Das steht schon auf der Startseite des Forums: „Lies unsere FAQ, dort sind häufig gestellte Fragen direkt beantwortet.“
Vielleicht fängst du hinten an zu lesen.
Qapla'
Hey Wischer! Probier mal das hier:
public class sqrt{
public static void main(String[] args){
// Die Variablen deklarieren
double wert=Double.parseDouble(args[0]);
double epsilon = 0.00000000000001; // Wenn immer ich hier 1e-15 geschrieben habe, kam immer bei Wurzel 4 1.99999999999998 oä raus
double step = 10;
double wurzel = 0;
if(wert >= 0){
// Ausführen, solange die Bedingung erfüllt ist
while(Math.abs(wurzel\*wurzel-wert)>epsilon){
step = step/10;
while(wert>wurzel\*wurzel){
wurzel = wurzel+step;
//System.out.println(wurzel);
}
if(Math.abs(wurzel\*wurzel-wert)>epsilon){
wurzel = wurzel-step;
}
//System.out.println(" "+step);
}
// Wurzel "ausdrucken"
System.out.println(wurzel);
}
else{
System.out.println("Negative Werte sind ungültig!");
}
}
}
Wenn das nicht klappt kannst du auch mal mit break ran!
Mfg Kieselnator
Hey cool, das funzt! Danke euch beiden...