Sinus in Python selbst programmieren ohne Library?
Ich möchte in Python eine eigene Mathe-Library erstellen und arbeite gerade an Sinus. Ich nutze den Einheitskreis als Hilfe. Darin mache ich ein rechtwinkliges Dreieck. Durch die Eingabe erfahre ich einen zweiten Winkel und kann dadurch den dritten Winkel bestimmen. Auch weiß ich die Länge der Hypotenuse (c=1). Wie kann ich jetzt die Kathetenlängen berechnen, ohne irgendeine Library zu importieren und im Rechenweg Sinus Kosinus Tangens oder Kotangens zu verwenden?
4 Antworten
Am einfachsten ist es, wenn du die Taylor Reihe des Sinuses in dein Programm implementierst. Falls du dich nicht so gut mit diesen Summen auskennst, das große Summenzeichen kannst du dir als for-schleife vorstellen. k ist der Iterator der Schleife.

Übrigens ist es generell sehr kompliziert die Sinus Funktion selber ins Programm zu implementieren. Man muss ein hohes mathematisches Verständnis haben, um solche Funktionen selber beschreiben zu können. Es ist gut, dass du das selber machen möchtest aber lass dich dadurch nicht einschüchtern. Schließlich gibt es solche Funktionen schon und man muss das Rad ja nicht neu erfinden :)
Könnte sein, dass mich das nur noch mehr verwirren würde, trotzdem danke😅
naja - wenn dich DAS schon verwirrt 🤣 Das ist die Primitivversion
Funktionen wir sin(x) werden auf einem Computer näherungsweise mit der entsprechenden Taylor-Reihe näherungsweise berechnet. So gilt z.B.
Der Index in der Potenz läuft bis unendlich.
Die Addition wird abgebrochen, sobald ein Term unterhalb des möglichen Wertebereichs des verwendeten Zahlenformats liegt.
Bei sehr kleinen x kann man von sin(x) ~ x ausgehen, da bereits der zweite Term x³/3! digital nicht mehr darstellbar ist.
sin x = x, da spricht der Physiker :D
Meines Wissens ist das die Taylor-Entwicklung um x=0, es könnte also sinnvoll sein, x vorher noch in den Bereich (-π, π] abzubilden. Eventuell sogar nach (-π/2, π/2].
Schau mal hier:
https://en.wikipedia.org/wiki/Sine_and_cosine#Software_implementations
https://en.wikipedia.org/wiki/Lookup_table#Computing_sines
Gibt verschiedene Wege den Sinus zu berechnen.
Beispielsweise lässt der sich durch eine Reihe darstellen und über die kannst du den Sinus annähern.
Kannst du machen, darin sehe ich aber keinen Sinn. Es ist sinnvoller, wenn du dich mit vorhandenen Packages beschäftigst, denn die kannst du nützlich verwenden. Spaßhalber einmal eine sinus-Funktion schreiben (siehe Antworten...) ist schon ok; aber um eine wirklich performante und in jeder Hinsicht brauchbare Implemetierung zu erstellen, muss man sich schon sehr mit der Materie auseinandersetzen und tief einsteigen. Ich würde mir das nicht zutrauen, obwohl ich mathematisches Python täglich verwende.
so könnte das ganze in python aussehen