Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.01.2009, 13:00

Wurzel Problem

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]

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

2

25.01.2009, 13:09

Wenn die Vorgabe ist: n e N (n ist Element von N) dann fängst du mit n bei 1 an.

3

25.01.2009, 13:11

Dann ist doch aber

C-/C++-Quelltext

1
2
aNull = 1.0;
bNull = 1.0;


Dann kommt der doch gar net inne Schleife, da |bNull-aNull| <= 0.001.

lg

4

25.01.2009, 16:54

Hat sich erledigt, der Lehrer hat nen Fehler gemacht :

es heißt

b0 = z;
und
b_n = z/ ( a_n )

:D

lg

Werbeanzeige