Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem bei der Sinus und co. - Programmierung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.04.2005, 00:32 Uhr
McDude



Also neulich habe ich mir eine Mathematik-Datei geschrieben, die ich für ein anderes Projekt nutzen wollte.
Als ich sie aber heute verwendet habe, bekam ich einen Laufzeitfehler.
Sicherlich denke ich falsch, aber ich beschreibe mal, wie ich an das Problem herangegangen bin.

Da ich bis zu diesem Zeitpunkt keine Ahnung hatte, wo die ganzen mathematischen Funktionen in C++ versteckt sind, musste ich mir erst einmal die Potenzfunktion und Fakultätsfunktion programmieren - Das ging auch recht flott und hier dürfte noch kein Fehler sein.
Das ist ja die Grundlage für die Programmierung der Sinus-, Cosinus-, Sinushyperbolicus- usw. funktion.
Ich nehme jetzt einfach mal den Sinus.

Nun zur Mathematik:
-> Hier benutze ich ja als Algorithmus die Potenzreihenentwicklung der Sinusfunktion, um genau zu sein, die Mac Laurinsche Reihe (Spezialfall der Taylorschen Reihe) von f(x) = sinx.

Schließlich kommt man ja auf:

sinx = Summe(n=0 -> oo) ((-1)^n * (x^(2*n+1) / (2*n+1)))

An dieser Stelle habe ich dann eine Sinus-Funktion programmiert, die mit Hilfe einer for-Schleife das n bis 10 (nur probehalber) durchlaufen lässt.
Hier liegt auch das Problem - Ich muss einen großen Wert für n einsetzen, damit die Berechnung genau wird.
Aber heute kam ich durch dieses andere Programm, wo ich meine header-Datei nutzen wollte, an die Grenze, da enorme x-Werte entstehen.
Normalerweise würde ja das n gegen unendlich laufen, aber das kann ich ja nicht realisieren.

Gibt es noch eine andere Möglichkeit außer die Reihenentwicklung für die Sinusprogrammierung?

Gruß und Danke im Voraus
McDude
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2005, 01:48 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


guckst du hier
www.fun-soft.de/showtopic.php?threadid=2823

an sonsten andere möglichkeit um die berechnung zu beschleunigen sind lookuptables
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 23.04.2005 um 01:49 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2005, 13:26 Uhr
0xdeadbeef
Gott
(Operator)


Mach nen Epsilon-Vergleich. Wenn die Differenz zwischen dem Ergebnis des letzten Durchgangs und des neuen Ergebnisses kleiner als ein gegebenes Epsilon ist, biste fertig.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.04.2005, 15:00 Uhr
Bruder Leif
dances with systems
(Operator)


Bastel Dir ne kleine Lookup-Tabelle mit, sagen wir, 1024 vorberechneten Werten, und ermittel die "genauen" Werte durch Interpolation...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: