Hallo,
ich muss mit Java die Wurzel von der Zahl z berechnen.
Das sind die Vorgaben :
a-tief-0 = 1;
b-tief-0 = n;
a-tief-n = (a-tief-(n-1) + b-tief-(n-1) ) / 2;
b-tief-n = z / (a-tief-(n-1) + b-tief-(n-1) );
Das Verfahren bricht ab wenn |b-tief-(n-1) - a-tief-(n-1)| <= 0.001.
Ich habe das so gemacht :
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class Wurzel
{
double aNull, bNull, an, bn, d;
public Wurzel()
{
d = 0.001;
}
public double WurzelVon( double Wurzel )
{
aNull = 1;
bNull = 0;
while(Math.abs (bNull-aNull) >= d )
{
an = (aNull + bNull) / 2.0;
bn = Wurzel / (aNull + bNull);
aNull = an;
bNull = bn;
}
System.out.println(""+an+"\n"+bn);
return an;
}
}
|
Doch als Lösung von z = 9.0 bekomme ich 2.212 irgendwas
Ich glaube das :
|
C-/C++-Quelltext
|
1
|
bNull = 0;
|
ist falsch. Doch wenn b-tief-0 = n ist, und n der "Tiefwert" von bNull, dann ist doch bNull am Anfang logischerweise 0 ?
Bin auch zig mal mit Debugger durch, doch ich find den Fehler net.
Danke schonmal für Hilfestellungen =)
lg[/code]