Logarithmus

Status
Nicht offen für weitere Antworten.

evil

Aktives Mitglied
Hallo, ich hab ein Problem bei einer Aufgabe. Die Aufgabe hab ich mal hochgeladen

ImageBanana - Aufgabe.jpg

Nun hab ich versucht, dass in Java unzusetzen, bekomme aber beim ausführen immer 0.0 raus, obwohl das nicht sein kann. Finde aber leider nicht, wo mein Fehler sein könnte.
Die Werte für x sollen nahe an der 1 liegen.

[JAVA=1] class Logarithmus {

public static void main (String[] args) {

Out.print("Fuer x eine Zahl wo gilt x > 0: ");
double x = In.readInt();


int n = 1;
double ergebnis;
double diff = 1;
double zwisch = 1;
double zwisch2 = 1;
double a = 1;
while(diff > 0.0000001){
for (int i = 1; i <= n; i++) {
zwisch = (x - 1) * zwisch; //Zaehler
zwisch2 = (x + 1) * zwisch2; //Nenner
//zwisch = (((x-1)^n)/(n(x+1)^n))
zwisch2 = zwisch2 * n;
}

zwisch = zwisch / zwisch2;

diff = a - zwisch; //Differenz zwischen ersten Bruch und zweitem
a = zwisch;

zwisch = zwisch + a;
n++;
}
ergebnis = zwisch * 2;
Out.println("Ergebnis: " + ergebnis);



}
}
[/code]

Vielen Dank im vorraus.
 

Landei

Top Contributor
Keine Ahnung, ob es das ist, aber bei solchen Iterationsverfahren sollte man immer auf den Absolutbetrag des Fehlers testen:
Java:
while(Math.abs(diff) > 0.0000001)
 

evil

Aktives Mitglied
Bringt mich irgendwie alles nicht sehr viel weiter. Für Werte > 1 bekomm ich eine Zahl heraus, allerdings immer die selbe. Und bei < 1 kommt immer 0.0 heraus. Bin ziemlich ratlos...???:L
 

Michael...

Top Contributor
Lass Dir doch einfach bei Deinen Berechnungsschritten die Werte einzelner Variablen ausgeben, dann siehst Du, dass und wo einzlene Variabelen falsche Werte annehmen.
 

evil

Aktives Mitglied
Danke für den Tipp. Jetzt muss ich nur meinen (Rechen-)Fehler finden. Da mir schon in Zeile 17 einen falschen Wert geliefert wird. Wenn ich für x = 0.9 sage, müsste normal -0.1 herauskommen. Tut's aber nicht, angeblich ist das Ergenis für diese Zeile -1.0
 

Schumi

Bekanntes Mitglied
Was macht denn das readInt() aus 0,9? Vielleicht solltest Du Dir das schon mal ausgeben lassen.
 

Michael...

Top Contributor
Ich würde mal zwisch und zwisch2 in der while Schleife immer auf 1 zurücksetzen bzw. die Variablen nur in der while Schleife deklarieren.
 

evil

Aktives Mitglied
Bei einem x von 0.9 wird es = 0.0 gesetzt (habe andere Zahlen auch getestet) Anscheinend wird nach dem Komma die Zahlen weggeschnitten. Aber wie behebe ich sowas? Weil double x = In.readdouble(); gibt es nicht.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben