# Sinus mit Taylor berechnen



## schmendrick (1. Nov 2006)

Hallo Zusammen

Ich soll den Sinus mit hilfe der Taylorreihe berechenen

wer die Taylorreihe nicht kennt -> http://de.wikipedia.org/wiki/Sinus#Definition_als_Taylorreihe

Jetzt habe ich es bisher geschafft, dass mir die Fakultät von (2n+1) ausgegeben wird und zwar so


```
public class Sinus {
	public static void main(String[] args) {
	
		int fakultaet = 1;//die fakultät ist 1, falls die "for" schleife nicht greift
        String a = JOptionPane.showInputDialog( "bitte Zahl eingeben" );
        int n=Integer.parseInt( a );
		int i;
		int b=n+n+1;
		for( i=2; i<=b; i=i+1 )
		{
		fakultaet *= i;
		}
		System.out.println(fakultaet);

	}

}
```

Dies ist jetzt nur der Nenner in meinem Bruch. Jetzt fehlt "nur" noch der Zähler und die Summe der einzelnen Schritte.

Nun das erste Prioblem, wie kann ich x hoch b für den Zähler schreiben (wie sage man in Java, dass b der Exponent von x ist?)

Das Problem, wie ich dann die einzelnen Summanden aufsummieren kann kommt dann später...

hat jemand nen Tip für mich?

grüße

Daniel


----------



## SlaterB (1. Nov 2006)

double erg = Math.pow(double, double);


----------



## schmendrick (1. Nov 2006)

SlaterB hat gesagt.:
			
		

> double erg = Math.pow(double, double);



Das ist die Antwort auf welche von meinen Fragen? ???:L


----------



## Wildcard (1. Nov 2006)

schmendrick hat gesagt.:
			
		

> wie sage man in Java, dass b der Exponent von x ist?


----------



## schmendrick (1. Nov 2006)

Wildcard hat gesagt.:
			
		

> schmendrick hat gesagt.:
> 
> 
> 
> > wie sage man in Java, dass b der Exponent von x ist?



Ah, ok 


```
double c = Math.pow(x, b);
```

gibt mir eine Zahl c=x hoch b ?


----------



## SlaterB (1. Nov 2006)

welches die einzige Frage in deinem Posting ist 

edit für neueste Antwort: ähm, ja?!
in der API nachschauen was Math.pow macht würde noch viel mehr helfen


----------



## schmendrick (1. Nov 2006)

SlaterB hat gesagt.:
			
		

> welches die einzige Frage in deinem Posting ist
> 
> edit für neueste Antwort: ähm, ja?!
> in der API nachschauen was Math.pow macht würde noch viel mehr helfen



Ich hab heute mit Programmieren begonnen und weiß noch nichtmal was du mit API meinst...

So, nun mein neues Problem

Hab es jetzt soweit, dass ich den Quotienten von c/fakultaet ausgeben lassen. Nur wie summier ich jetzt über n auf?




```
public class Sinus {
	public static void main(String[] args) {
	
		int fakultaet = 1;//die fakultät ist 1, falls die "for" schleife nicht greift
		String s = JOptionPane.showInputDialog( "an welcher Stelle soll der Sinus berechnet werden?" );
		String a = JOptionPane.showInputDialog( "bei welchem Glied soll die Taylorreihe abgebrochen werden? " );
        double sin;
		double x=Integer.parseInt( s );
		int n=Integer.parseInt( a );
        int i;
		int b=n+n+1;
		for( i=2; i<=b; i=i+1 )
		{
		fakultaet *= i;}
		double c=Math.pow(x, b);
		sin=c / fakultaet;
		
		System.out.println(sin);

	}

}
```

Bitte seid nachsichtig, ich muss alles ein wenig überstürzen, weil ich morgen den Sinus programmiert haben soll.


----------



## Wildcard (1. Nov 2006)

Mit API meint SlaterB die API-Docs, die Beschreibung der Java Programmierschnittstelle. http://java.sun.com/j2se/1.5.0/docs/api/
Du musst sin initialisieren, da die Variable keinen Wert hätte falls die Schleife nicht ausgeführt werden würde.


----------



## SlaterB (1. Nov 2006)

```
double summe = 0;
for (int n=0; n<max; n++) {
   summe += berechneGlied(x,n);
}


public static double berechneGlied(double x,int n) {
  ..
}
```

mit

double x=Integer.parseInt( s ); 

wirst du übrigens nicht weit kommen, falls auch x = 2.5 gewünscht ist,
eher
double x=Double.parseDouble( s );


----------

