Morgen,
Ich hab hier eine Aufgabe, bei der ich die arcsinh(x) Funktion, mithilfe der Potenzreihe, programmieren soll. Die Schleife soll solange durchlaufen werden, bis die Ergebnisse sich auf zehn Nachkommastellen nicht mehr unterscheiden können. Das wollte ich mit einer while-Schleife tun. Diese wird aber nur zweimal durchlaufen und auch nur die ersten zwei Nachkommastellen sind richtig. Die for Schleife mit zehn Durchläufen liefert das korrekte Ergebnis. Hier mal das bisherige Programm (Ist noch nicht fertig, ich will erst die while Schleife zum laufen bringen). eps soll durch die main übergeben werden, laut Aufgabenstellung:
Ich hab hier eine Aufgabe, bei der ich die arcsinh(x) Funktion, mithilfe der Potenzreihe, programmieren soll. Die Schleife soll solange durchlaufen werden, bis die Ergebnisse sich auf zehn Nachkommastellen nicht mehr unterscheiden können. Das wollte ich mit einer while-Schleife tun. Diese wird aber nur zweimal durchlaufen und auch nur die ersten zwei Nachkommastellen sind richtig. Die for Schleife mit zehn Durchläufen liefert das korrekte Ergebnis. Hier mal das bisherige Programm (Ist noch nicht fertig, ich will erst die while Schleife zum laufen bringen). eps soll durch die main übergeben werden, laut Aufgabenstellung:
Java:
public class MyArcSinh {
public static void main (String[] args) {
double x = 0.8;
final double eps = 1e-10;
MyArcSinh sh = new MyArcSinh();
sh.arcSinh(x, eps);
}
public static double arcSinh(double x, double eps) {
double produkt = x;
double result = x;
double resultAlt = 1; // willkürlich mit einer Zahl initialisiert
double zaehler = 1;
double nenner = 1;
int n = 1;
if (-1<x && x<1) {
while(resultAlt-result > eps) {
resultAlt=result;
zaehler*=n;
n+=2;
nenner*=n*(n-1.)/(n-2.);
produkt*=-x*x;
result+=(zaehler/nenner)*(produkt);
System.out.println("Arcsinh(x) = " + result);
}
}
else {
System.out.println("Fehler, Wert muss zwischen -1 und 1 liegen");
}
return result;
}
}