Sinus Funktion schreiben

Hallo ihr lieben,

ich habe mir aus Spaß einen „Rechner“ geschrieben alles ganz simpel, ein und ausgabe geschieht über die Konsole. Nun haben wir in Mathe die Reihendarstellung der Sinus- und Cosinusfunktion durchgenommen. Da dachte ich mir, die ist bestimmt nicht scher zu schreiben wenn man den Algorithmus schon hat, da war ich wohl etwas vorlaut :smile:

Dass ist meine Funktion:

public class Winkelfunktionen {

void sin() {
while (true) {

System.out.println(„Von welcher Zahl möchten Sie den Sinus berechnen? Bitte geben Sie eine Zahl ein.“);
long x = IO.readInt();
long l = 5;
double g = 0;
long exp = 1;
long eins = -1;
long Zaehler = 0;
long Nenner = 1;
long d = x;

for (int k = 0; k

Du könntest es dir einfacher machen indem du die Java interne Sinus-Funktion verwendest:

Math.sin(x);

Wenn du aber die Winkelfunktion wirklich selbst schreiben willst, könntest du es ja mit einer Taylorreihe versuchen (ein unendliches Polynom)
Hier mehr infos:
Taylorriehe
Sinus als Taylorreihe

Hi,

berechne mal den Quotienten aufeinanderfolgender Summanden. Dann sollte eine einfachere Berechnungsvorschrift ohne Potenz- und Fakultät-methode rauskommen.

Die Taylorreihe um 0 ist nur etwa im Bereich von -1 bis 1 richtig sinnvoll, außerhalb sammeln sich zuviele Rundungsfehler bei der erforderlichen Anzahl Summanden an.

Mit einfachen Verschiebungen um pi/2 kann man das ausgleichen, d.h. den Winkel auf das Intervall -pi/4 bis pi/4 reduzieren.

Was uns zum eigentlichen Problem bringt: Die Reihe nimmt den Winkel im Bogenmaß. Wenn Du also eine Eingabe im Gradmaß vornehmen willst, dann musst Du als erstes

x=pi/180*x

umrechnen.

Gruß Lutz

Hallo,

ok ich habs jetzt genau so gemacht, einfach die errechneten Reihenglieder bis zum Grad 3 aufsummiert, doch da habe ich gleich noch eine Frage, wenn man die Taylorentwicklung um den Grad n und dem entwicklungspunkt 0 von der Sinusfkt macht, dann ist es doch um die stelle Null am genausten und wird genauer je größer der Grad, wenn ich aber nun z.B. 90 eingebe, dann ist es doch eigentlich zufall wenn das ergebniss stimmt oder?

Ich habe das ganze mal bei Wolfram Alpha plotten lassen, dann versteht man es vielleicht besser
http://www.wolframalpha.com/input/?i=plot+x%2B%28x^3…

Jetzt interessiert es mich natürlich wie unsre Taschenrechner den sinus berechnen. Weiß dass jemand?

lg Matthias

Hey,

zum Thema Berechnen bin ich nach zwei Minuten Google auf die Taylorreihe gestoßen. Die Winkelfunktionen können offenbar über jene definiert werden, sieh mal rein:

http://de.wikipedia.org/wiki/Sinusfunktion#Definitio…

Gruß
Shisu

Dankeschön an alle owt
.

Jetzt interessiert es mich natürlich wie unsre Taschenrechner
den sinus berechnen. Weiß dass jemand?

Hi,

das macht jeder Taschenrechner anders, deshalb kann bzw. konnte man Taschenrechner daran erkennen, wie genau sie sin(22) berechnen, da 22/7 eine recht genaue Näherung für pi ist.

Ansonsten wie schon geschrieben wird der Winkel durch Verschieben auf -pi/4 bis pi/4 reduziert, dann durch mehrfaches Halbieren auf ein noch kleineres Intervall um 0. Dann werden mit den Taylorreihen die Werte von sin und cos berechnet, mit den Additionstheoremen die Halbierungen, und durch Vertauschen und Vorzeichenmanipulation die Verschiebung rückgängig gemacht.

Eine andere, mikroprozessorfreundlichere Variante ist der CORDIC-Algorithmus, ist aber nicht ganz so einfach zu verstehen.

Gruß Lutz