Sinuswerte mit simplen Rechenmethoden

Neue Frage »

MvBruesewitz Auf diesen Beitrag antworten »
Sinuswerte mit simplen Rechenmethoden
Hier ein Vorschlag, wie man Cosinus-, Sinus- und Tangenswerte
mit einfachen Methoden berechnen kann.

Die Berechnung erfolgt per Reihenberechnung (Iteration) mit einem Startwert x(1).



Diese Reihenberechnung erzeugt eine nichtlineare und unstete Zahlenfolge,
mit der sich die Cosinus-, Sinus- und Tangenswerte darstellen lassen.







Bin kein Studierter, also 'Fachsprachlich' nicht so gebildet.
Je genauer der Startwert x(1), um so genauer die Ergebnisse, ... das ist klar.

Habe hier zunächst einen sehr genauen Startwert übernommen: x(1)=-114,588650129332. (entspricht 1°)
(Auch hierfür hätte ich eine simple Herleitung, .. anderes Thema)

Die Formeln sehen kryptisch aus und man sieht nicht,
dass sich das Ganze sehr anschaulich aus geometrischen Erkenntnissen ableitet.

Diese Veranschaulichung wird später nachgeliefert.

Die Formel klappt, probierts aus.



Gruß MvBruesewitz
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von MvBruesewitz
Habe hier zunächst einen sehr genauen Startwert übernommen: x(1)=-114,588650129332. (entspricht 1°)

Loriot würde sagen: "Ah... ja."


Zitat:
Original von MvBruesewitz
Die Formel klappt, probierts aus.

Ich habe es ausprobiert, und sie klappt nicht. unglücklich


Falls du mit bei irgendeinem Grundteilungswinkel arbeitest, dann ist tatsächlich





.

Die Iteration lautet wegen Additionstheorem dann aber abweichend von deiner obigen Gleichung einfach



mit Startwert , im Fall von ist das dann tatsächlich ungefähr .


EDIT: Ich hab nochmal scharf hingeschaut - mit



lässt sich deine Formel "retten", denn im Nenner steht dann nix anderes als , und den Zähler kann man ja zu umformen. smile
MvBruesewitz Auf diesen Beitrag antworten »

Ach HAL9000 alten Wemser,

hab den Tippfehler entdeckt,
hab' bei und bei ein Vorzeichern vergessen !

es muss also heißen:





Danke für den Hinweis, jetzt sollte es auch auf deinem HAL klappen ;- )

Der ominöse Wert 'x' beschreibt die Steigung aus

und ja, das Ganze beruht auf dem Additionstheorem per Iteration,
allerdings nach 'x' umgestellt, (so dass man in der Reihenberechnung nur einen veränderlichen Wert hat, nicht zwei.)

Gruß MvB
willyengland Auf diesen Beitrag antworten »

Nehmen wir an, ich möchte den Sinus von 30° haben, wie mache ich das dann?
HAL 9000 Auf diesen Beitrag antworten »

Ich sage es ein letztes Mal: Die auf der Iterationsgleichung

Zitat:
Original von MvBruesewitz

basierende Folge hat nicht die von dir behaupteten Eigenschaften, auch nicht mit deinen Vorzeichenmodifikationen bei sin(n), tan(n).
MvBruesewitz Auf diesen Beitrag antworten »

Hallo Willy,

Ich weiß nicht wie gut du dich auskennst, also verzeih, falls ich zu tief aushole:

Die Formel ist eine Reihenberechnung, eine Iteration, das heißt:

Wenn man sin(30) berechnen will, muss man die Formel 30mal durchführen,
und das jeweils voran gegangene Ergebnis (x(n) im nächsten Durchlauf einbeziehen.

Mit heutigen Tabellenprogrammen z.B. 'MS-Excel', oder 'LibreOffice-Calc' geht das relativ schnell.

Auf meinem schlichten Linux-Rechner bekomme ich eine schöne Sinuskurve mit genau dieser Formel,
auf dem HAL scheint sie nicht zu laufen.

ich hab irgendwann mal gegrübelt, was denn ein Taschenrechner macht,
wenn man sin(30) eingibt.

Der entsprechende Wiki-Artikel war mir zu kryptisch,
... habe angefangen selber rumzuprobieren mit einfachen Rechenmethoden,
diese Formel hier ist das Ergebnis.

Ich bleib noch ne Weile am Rechner und mach mal ein paar 'post-bare' Bilder,
die das ganze Veranschaulichen....

Gruß MvB

PS-edit, Hallo HAL 9000, hab dein edit erst jetzt entdeckt, ..
 
 
MvBruesewitz Auf diesen Beitrag antworten »
Noch ein Tippfehler
... jaja, sowas passiert, wenn man die Sache erst auf seinem System erfolgreich testet,
und dann mal eben das ganze in einem Forum posten will, ...


@Willy and HAL 9000:

SORRY, die korrekte Formel lautet:



.. wie man sieht: Im Nenner werden x1² und xn² addiert nicht multipliziert, (wie in der ersten Darstellung),
So konnte sie nicht funktionieren.

HAL, ...ich hoffe die Formel findet nun deine Zustimmung.

Gruß MvB
HAL 9000 Auf diesen Beitrag antworten »

Ja, jetzt stimmt's, wenn auch überkompliziert geschrieben: Gekürzt (s.o.) ist das einfach

.

Ich hatte oben in dem Bemühen, deine vergurkte Formel zu retten, aber auch einen Blackout: Natürlich ist statt . Na egal, hat sich jetzt sowieso erledigt. Augenzwinkern

-----------------------------------------------------------------------

Generell würde ich aber einschätzen, dass folgende Methode effizienter ist: Start und Iteration



liefert , und das mit weniger Rechenoperationen als oben, insbesondere keiner (rechentechnisch vergleichsweise teuren) Division. smile
MvBruesewitz Auf diesen Beitrag antworten »
Danke
... für die weitere "Verkürzung" der Formel,
da ich nur Hobby-mäßig Zeit habe für solche Überlegungen,
hätte es wahrscheinlich noch ne Weile gedauert, bis ich das Rauskürzen entdeckt hätte.

Deine klassiche Formel ohne Division, war auch meine bisherige,
a(n+1)=a(n)*a(1)-b(n)*b(1)
b(n+1)=a(n)*b(1)+b(n)*a(1)

(a,b =cos, sin)

Wenn man mein x als Steigung der Sehne m(S) im Dreieck (im Einheitskreis) nimmt,
dann läßt sich a und b Wurzelfrei mit dieser Steigung darstellen:

a=(x²-1)/(x²+1)
b=-2x/(x²+1)

Ich wollte die klassische Iteration so umstellen, dass es nur noch eine Unbekannte gibt,
so dass man tatsächlich mit einfachen Methoden einen Sinus-verwandten Zahlenstrang erzeugt
(nichtlinear und unstet und was Sinus noch so alles kann).

Das sieht jetzt mit der gekürzten Fassung noch überschaubarer aus,
mit dem Nachteil, dass sie eine Division enthält.

Ich finde wenn man die geometrischen Zusammenhänge mal gesehen hat,
dann ist der Einstieg in das Sinus-Thema verständlicher (an Schulen und so).

Danke und Gruß, MvB

(die geometrische Darstellung kommt noch)
HAL 9000 Auf diesen Beitrag antworten »

Wenn du "Wurzelfreiheit" willst und zudem nur einen trigonometrischen Startwert berechnen willst, dann kann man ja dein heranziehen, um damit und zu berechnen, wie in deinen obigen Formeln.

Zitat:
Original von MvBruesewitz
Ich wollte die klassische Iteration so umstellen, dass es nur noch eine Unbekannte gibt,

Mag sein, aber wenn es darum geht, ob ein paar Bytes Speicherbedarf mehr oder aber vielfache Rechenzeit akzeptabler ist, dann fällt die Entscheidung i.d.R. zugunsten ersterer - zumindest dann, wenn die Iterationsrechnung millionenfach geschieht.

Ich weiß wovon ich rede, denn ich habe

Zitat:
Original von HAL 9000
Start und Iteration



liefert

schon mal in einer Microcontroller-Anwendung verwendet, wo die Winkelfunktionsberechnung in jeder Schleife zu teuer gewesen wäre. Augenzwinkern
MvBruesewitz Auf diesen Beitrag antworten »
Bildliche Darstellung
Bin noch nicht sicher,
ob ich ein kleines jpg von meinem Rechner hier hochladen kann.

Mal sehen:, .... .... ....

hm. ging nur als Anhang, hätte es gerne direkt hier im Kasten dargestellt.
(krieg ich nocjh raus)

Gruß, MvB

edit, hat ja doch geklappt
MvBruesewitz Auf diesen Beitrag antworten »
Winkel berechnen Grundrechenarten
Hier nochmal ein zusammenfassendes Bild:
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »