Seite 1 von 1

Sinus Reihenentwicklung

Verfasst: Do Okt 31, 2013 11:15 pm
von Ginojack
Hi Leute,

ich beschäftige mich in der freizeit mit etwas programmieren und hab mir ein literaturbuch ausgeliehen welches als aufgabe die reihenentwicklung einer sinusfunktion in c erfordert. nun bin ich noch gar nicht so gut mit der sprache vertraut und würde mich über ratschläge freuen wie man denn an die sache rangehen soll

sin(x)= x-(x³/3!)+(x^5/5!)+...

- Übernahme des eingabewertes in grad
- umrechnung des eingabewertes ins bogenmaß
- schrittweise berechnen des ergebniswertes
- vorzeichenwechsel bei jedem schritt
- festlegung eines abbruckkriteriums
- ausgabe des rechnerergebnisses und der anzahl der durchgeführten iterationen

a) formulieren sie ihren algorithmus als c-quelle
b) erweitern sie nun ihr programm so, dass ein vergleich mit der in der standardbibliothek <math.h> verfügbaren realisierung von sin(x) möglich ist. realisieren sie dafür z.b. folgende ausgaben: Mein sin(90°)= 1.0000000; anzahl der schritte: 39

Liebe Grüße Miriam

Re: Sinus Reihenentwicklung

Verfasst: Fr Nov 01, 2013 9:34 am
von cloidnerux
Hi Leute,
Hallo und Willkommen im Forum :D
nun bin ich noch gar nicht so gut mit der sprache vertraut und würde mich über ratschläge freuen wie man denn an die sache rangehen soll
Die Methode "Teile und Herrsche" hat sich oft als Erfolgreich gezeigt. Teile dein Problem in kleinere auf, die du dann gezielt lösen kannst.
- Übernahme des eingabewertes in grad
Du willst eine Funktion, die eine gradzahl entgegen nimmt:

Code: Alles auswählen

double sin(double grad)
{
[...]
}
umrechnung des eingabewertes ins bogenmaß
Du hast nun also einen Gradwert in der Variable "grad".
Der Zusammenhang zwischen Grad und Bogenmaß ist der Folgende:

Code: Alles auswählen

360° = 2*Pi
bzw

Code: Alles auswählen

180° = Pi
Was du nun also machen musst, ist deine Gradzahl als Bruchteil von 180° zu berechnen und mit Pi zu multiplizieren, da die Winkel linear zueinender sind.
festlegung eines abbruckkriteriums
Das logischste Abbruchkriterium ist das erreichen einer gewissen Signifikanz. Wenn der gerade Berechnete Therm kleiner ist als eine Gewisse schwelle, z.B 10^-5, dann ist die Änderung am Gesamtergebnis so gering, dass weitere Iterationen nichts mehr bringen werden.
schrittweise berechnen des ergebniswertes
Das schreit nach einer Schleife. Da du hier eine Abbruchbedingung hast, empfiehlt sich eine do-while schleife:

Code: Alles auswählen

do
{
//Berechnen
}while(therm > SIGNIFIKANZ);
Wobei SIGNIFIKANZ eine Konstante mit deinem Abbruchwert ist, z.B 10^-5;
vorzeichenwechsel bei jedem schritt
Das kann man realisieren, indem man in einer Variable eine 1 speichert und in jedem Durchlauf mit -1 multipliziert und eben auch mit deinem berechneten Therm.

Dann zu deiner Reihenentwicklung

Code: Alles auswählen

sin(x)= x-(x³/3!)+(x^5/5!)+...
Es gibt in der math.h eine Funktion pow, für Potenzen. Es gibt aber keine Fakultät. Die kannst du aber gut in der Schleife mitberechnen, da sich ja bei jedem Durchlauf nur zwei zusätzliche Multiplikationen passieren.

Ich hoffe ich konnte dir weiterhelfen. Sollte irgendetwas nicht verständlich sein, bitte Meckern und Fragen :D

Mit freundlichen Grüßen

cloidnerux.

Re: Sinus Reihenentwicklung

Verfasst: Fr Nov 01, 2013 12:16 pm
von sebix
http://www.coding-board.de/showthread.p ... -mit-Sinus
Um inhaltsgleiche Posts zu verhindern...

Re: Sinus Reihenentwicklung

Verfasst: Fr Nov 01, 2013 1:32 pm
von cloidnerux
http://www.coding-board.de/showthread.p ... -mit-Sinus
Um inhaltsgleiche Posts zu verhindern..
Wir sollten einen Rang für Leute wie dich einführen, Post-Wächter oder so :D
Aber finde ich gut, dass jemand das nicht nur bemerkt sondern auch mitteilt, dass da in mehreren Foren gleichzeitig dieselbe Frage gestellt wird.

Re: Sinus Reihenentwicklung

Verfasst: Sa Nov 02, 2013 8:23 am
von Xin
Andererseits finde ich es auch nicht schlimm, dass man sich auf der Suche nach einer Antwort auf mehrere Foren verteilt. Kein Forum kann zum Beispiel garantieren, dass es auf alle Fragen eine sinnvolle Antwort liefern kann.

Re: Sinus Reihenentwicklung

Verfasst: Sa Nov 02, 2013 10:28 am
von sebix
Ich ja auch nicht. Aber potentielle Antworter könnten sich einen Post sparen, wenn sie sehen, dass nebenan der gleiche Ansatz schon gepostet wurde.

Re: Sinus Reihenentwicklung

Verfasst: Sa Nov 02, 2013 10:55 am
von Xin
sebix hat geschrieben:Ich ja auch nicht. Aber potentielle Antworter könnten sich einen Post sparen, wenn sie sehen, dass nebenan der gleiche Ansatz schon gepostet wurde.
Ich muss mal ein Daumen Hoch Smiley einfügen ;-)

Re: Sinus Reihenentwicklung

Verfasst: So Nov 03, 2013 10:08 am
von darksider3
Auf die gefahr hin, das dies einen Fetten Spoiler darstellt, aber dennoch für die Nachleser interessant sein dürfte, welche nicht so viel von Mathe verstehen...

http://www4.cs.fau.de/Lehre/SS06/V_SPIC ... /D2-A4.pdf