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.
 
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)
 
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
 
Lass Dir doch einfach bei Deinen Berechnungsschritten die Werte einzelner Variablen ausgeben, dann siehst Du, dass und wo einzlene Variabelen falsche Werte annehmen.
 
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
 
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.
 
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.

Zurück
Oben