Wurzeln

Status
Nicht offen für weitere Antworten.
S

schlydi

Gast
Hallo, ich habe eine Methode geschrieben, mit der ich durch den Mittelwertsatz die Wurzel ausrechnen möchte, funktioniert auch wunderbar bei ganzen Zahlen, sobald ich aber versuche Wurzel2 oder sowas auszurechnen, hängt mein Programm - ich vermute mal, daß es daran liegt, daß die Abbruchbedingung meiner Schleife nicht erfüllt werden kann, da sich die Zahlen, die ich verlgeiche, immer irgendwie unterscheiden werden. Die Frage ist, ob ich einen Vergleich bis auf die 10. oder sowas Nachkommastelle machen kann und wie das geht... der Code sieht so aus:

Code:
public static double radizieren(double zahl2, double zahl1)  {
  double h = zahl2;
  double i = 0; 
  double j = 0; 
  double e = potenzieren(h, zahl1);

  while (e != zahl2)  { 
    if (e > zahl2)  { 
      i = h;
      h = (i+j)/2.0;
    } 
    else  { 
      j = h; 
      h = (j+i)/2.0;
    }
    e = potenzieren (h, zahl1); 
  }
  zahl2 = h;
  return zahl2;
}
[/code]
 

Der Müde Joe

Top Contributor
schlydi hat gesagt.:
mein Programm - ich vermute mal, daß es daran liegt, daß die Abbruchbedingung meiner Schleife nicht erfüllt werden kann

Jop. da der Computer nur binär kennt, gibt es Zahlen, die er nicht darstellen kann.

Mach doch einfach ein Intervall...also ein gewisse ungenuigkeit rein...
Wenn die Lösung ca im Intervall liegt, kann er aufhören zu dampfen.
zB.

Code:
 while (!(e < x + 0.00000001 && e > x - 0.00000001))  {

musst du testen....aber sollte gehen.
(frei hingeschrieben)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben