# Näherungswert berechnen



## chillerStudent (23. Nov 2010)

Brauche dringend Hilfe bei der folgenden Hausaufgabe:

Sinh.java Für x > 0 kann sinh x nach der Formel

sinhx= x + (x³/3!) + x^5/5! + ... + (x^2n+1) / (2n+1)!

näherungsweise berechnet werden. Schreiben Sie ein Java-Programm, das vom Nutzer eine
Zahl x abfragt und einen Näherungswert für sinh x sowie Zwischenergebnisse (für jedes n)
am Bildschirm ausgibt. Die Berechnung soll abbrechen, sobald sich die Näherungswerte der
aktuellen und vorigen Iteration (also die Werte für n + 1 bzw. n Summanden) um weniger als
10−5 unterscheiden. Überlaufprobleme müssen nicht behandelt werden, d.h., es genügt, wenn
das Programm für kleine Werte von x korrekt arbeitet.
In der Lösung dürfen nur die bereits behandelten Sprachkonstrukte von Java verwendet
werden; prüfen Sie jedoch die Korrektheit Ihres Ergebnisses durch Aufruf der Funktion
Math.sinh(double).


Meine Frage: Kann mir bitte jemand einen Ansatz geben. Ich möchte wissen, was ich für Methoden/Funktionen dafür brauche oder z.b welche schleifen ich da am besten benutzen soll...


----------



## XHelp (23. Nov 2010)

als Methode würde sich 
	
	
	
	





```
ownSinh(double x, int n)
```
 o.ä. anbieten und mit einer for-Schleife solltest du eigentlich auskommen.
Du kannst aber im Grunde jede Schleifenart durch eine andere ersetzen, deswegen ist die Frage eigentlich irrelevant.


----------



## SlaterB (23. Nov 2010)

> was ich für Methoden/Funktionen dafür brauche 
->
> die bereits behandelten Sprachkonstrukte von Java

liste diese doch auf als alternative Übung bzw. Schleifen, +, -, * / sollten es sein


----------



## chillerStudent (23. Nov 2010)

Die wir bisher behandelt haben sind: for, while, dowhile


----------



## Landei (23. Nov 2010)

Ungefähr so:


```
public class Aufgabe {

public static final double epsilon = 10e-5;

public static void main(String[] args) {
    System.out.println("x eingeben");
    double x = //wie geht eine Nutzereingabe?
    System.out.println("Nährungswert: " + sinh(x));
}

public static double sinh(double x) {
   double letzterWert = 4711; 
   double wert = 0; 
   for(int n = 1; Math.abs(wert - letzterWert) > epsilon; n++) {
       wert += //n-tes Folgeglied
       System.out.println("Zwischenergebnis Schritt " + n + " ist " + wert);
       letzterWert = wert; 
   }
   return wert;
}
}
```

Aber auf Dauer wirst du um ein bisschen mehr Eigeninitiative nicht herumkommen...


----------



## chillerStudent (23. Nov 2010)

Wie soll ich das n verstehen?
Muss man das n auch eingeben können?


----------



## XHelp (23. Nov 2010)

Nö, steht doch in der Aufgabenstellung, dass du zuerst 1, dann 2,3,4 usw nimmst, bis sich der Wert der Funktion auf weniger als 10^-5 ändert.


----------



## chillerStudent (23. Nov 2010)

Boahh Landei, Danke dir, ABER ich versteh nur bahnhof von der zweiten Funktion, sorry
Kannst du mir das vill Schritt für Schritt erklären?


----------



## chillerStudent (23. Nov 2010)

Muss ich diesen n-ten Wert noch ausrechnen?


----------



## XHelp (23. Nov 2010)

Ja


----------

