Sinus und Co. im Taschenrechner

Von: , Frage gestellt am Do, 15. Mai 2003

Hallo Leute!

Wie errechnet denn der Taschenrechner zu jedem Winkel den entsprechenden Sinuswert und umgekehrt? Gibts dafür ne Formel? Wie ist denn die?

THX :)

greets
vince

8 Antworten zu dieser Frage

  1. Antwort von nach 10 Minuten 0 hilfreich
    Re: Sinus und Co. im Taschenrechner

    Hi Vince,

    das geht mit Potenzreihen: Die Funktionen werden angenähert durch Ausdrücke der Form "Sin x = 1/(sqrt x) + 1/x^3 + 1/x^5 + ..." (das ist jetzt keine echte Funktion!). Diese Funktionen sind sehr schnell und für die meisten Fälle genau genug. Unter "Potenzreihen" solltest du in Mathebüchern fündig werden.

    Gruß Ralf

    • Antwort von nach 4 Stunden 0 hilfreich
      Re^2: Potenzreihe Sinus

      Hi Drambeldier,

      die korrekte Potenzreihe des Sinus ist
      sin x = x - 1/3 x^3 + 1/5 x^5 +/- 1/n x^n für n ungerade mit alternierendem Vorzeichen, entsprechend
      cos x = 1 - 1/2 x^2 + 1/4 x^4 -/- 1/n x^n für n gerade und alternierendem Vorzeichen. das geht mit Potenzreihen: Die Funktionen werden angenähert
      durch Ausdrücke der Form "Sin x = 1/(sqrt x) + 1/x^3 + 1/x^5 +
      ..." (das ist jetzt keine echte Funktion!).
      Was ist bei Dir den eine "echte" Funktion? Die (vollständige) Potenzreihenentwicklung ist äquivalent zur Funktion selbst.

      Gruß,
      Ingo

      • Antwort von nach 16 Stunden 0 hilfreich
        Re^3: Potenzreihe Sinus

        Hi Ingo, Was ist bei Dir den eine "echte" Funktion?
        das war schlicht schlecht ausgedrückt: Mein Beispiel ist gewiss nicht die Sinusfunktion, auch wenn sie ihr formal ähnelt.

        Gruß Ralf

      • Antwort von nach 21 Stunden 0 hilfreich
        kleine Korrektur

        Hi Drambeldier,

        die korrekte Potenzreihe des Sinus ist
        sin x = x - 1/3 x^3 + 1/5 x^5 +/- 1/n x^n für n ungerade mit
        alternierendem Vorzeichen, entsprechend
        cos x = 1 - 1/2 x^2 + 1/4 x^4 -/- 1/n x^n für n gerade
        Hi, ich denke Du meinst 1/2!, 1/4!, 1/n! etc. (Fakultät unter dem Bruchstrich).

        Gruß
        Moriarty

    • Antwort von nach 8 Stunden 0 hilfreich
      Beste Approximation vs. Potenzreihen

      Hallo, ihr Sinussuchenden,

      mein Studium liegt zwar schon ein wenig zurück, jedoch meine ich mich zu entsinnen, dass Taschenrechner keine Potenzreihen (zu viele Multiplikationen) benutzen, sondern die bestmögliche Approximation eines Polynoms von einem festgelegten Grad, dessen Auswertung weniger Rechenleistung für eine für die Stellenzahl des Taschenrechners ausreichende Approximation benötigt.

      Man nimmt dazu eine Basis des entsprechenden Polynomraumes und kann die zugehörigen Koeffizienten durch ein lineares Gleichungssystem ermitteln.

      Kennt man die Sinusfunktion auf dem Intervall [0, Pi/2), so kennt man sie überall. (Vielleicht reicht auch ein kleineres Intervall, wie gesagt, ist alles schon eine Weile her!)

      Als Beispiel mal die Approximation für ein Polynom vom Grade 2:

      Eine Basis des zweidimensionalen Polynomraumes ist B={1, X, X^2}. Das Gleichungssystem für die Koeffizienten {m} lautet nun

      [A]*{m}={R}

      mit

      [A] = (a_ij) = Integral (Null bis Pi/2) b_i*b_j
      {R} = (r_i) = Integral (Null bis Pi/2) b_i*sin(x)

      Damit ist [A] = Integral (Null bis Pi/2) [[1,x,x^2],[x,x^2,x^3],[x^2,x^3,x^4]]=
      [[pi/2,pi^2/8,pi^3/24],[pi^2/8,pi^3/24,pi^4/64],[pi^3/24,pi^4/64,pi^5/160]]

      {R} = Integral (Null bis Pi/2) {SIN(x),x*SIN(x),x^2*SIN(x)}=
      = {1,1,pi-2}

      Löst man dieses Gleichungssystem nun, so erhält man als Koeffizienten näherungsweise:
      {m}= [-1321/54309,33312/27859,-3702/10945]

      Das Polynom

      f(x) = -1321/54309 + 33312/27859 *x -3702/10945 * x^2

      ist also unter allen Polynomen 2. Grades dasjenige, welches die Sinusfunktion im Bereich von 0 bin Pi/2 am besten approximiert. Wer Spaß daran hat, kann ja mal vergleichen, wie gut die Potenzreihe entsprechender Ordnung die Funktion annähert.

      Für übliche Taschenrechner (8 Stellen) reichen Polynome ca. 7. Grades völlig aus.

      Gruß
      Ted [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

  2. Antwort von nach 20 Stunden 0 hilfreich
    Re: Sinus und Co. im Taschenrechner

    Moin, Moin!
    Suche mal unter dem Begriff CORDIC-Algorythmus. [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

  3. Antwort von nach 23 Stunden 0 hilfreich
    Re: Sinus und Co. im Taschenrechner

    Tach Wie errechnet denn der Taschenrechner zu jedem Winkel den
    entsprechenden Sinuswert und umgekehrt? Gibts dafür ne Formel?
    Wie ist denn die?
    Entgegen der Meinungen meiner Vorredner bin ich eher der Meinung das ein Taschenrechner sin und cos über Tabellenwerte bestimmt. D.h. in einer (E)EPROM Tabelle liegen alle Werte für den sin und cos mit einer bestimmten Genauigkeit und Schrittweite. Sollte der angeforderte Wert zwischen zwei Tabellenwerten liegen wird eine lineare Interpolation durchgeführt.
    Ich denke das eine Umsetzung über eine Tabelle technisch einfacher umzusetzen ist und auch nur rudimentäre Bauteile benötigt. Während man bei einer Errechnung des Ergebnisses über Potenzreihen eine aufwendigere Schaltlogik und auch RAM benötigt.
    Wobei man aber unterschieden muß zwischen den "normalen" Taschenrechnern (Casio fx-?? etc.) und den kleinen Taschen-PCs (TI38?) !

    Aber das ist nur eine Vermutung.

    Unn wech, Ingo

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Sinus und Co. im Taschenrechner

      Hallo Apophes, Entgegen der Meinungen meiner Vorredner bin ich eher der
      Meinung das ein Taschenrechner sin und cos über Tabellenwerte
      bestimmt. D.h. in einer (E)EPROM Tabelle liegen alle Werte für
      den sin und cos mit einer bestimmten Genauigkeit und
      Schrittweite. Sollte der angeforderte Wert zwischen zwei
      Tabellenwerten liegen wird eine lineare Interpolation
      durchgeführt.
      Ich denke das eine Umsetzung über eine Tabelle technisch
      einfacher umzusetzen ist und auch nur rudimentäre Bauteile
      benötigt. Während man bei einer Errechnung des Ergebnisses
      über Potenzreihen eine aufwendigere Schaltlogik und auch RAM
      benötigt.
      Nein, diese Lösung wäre nicht praktikabel!

      Ein Taschenrechner möge mit 8-stelliger Genauigkeit rechnen, und wir wollen nur die Sinusfunktion betrachten. Es genügt, wenn man sin(x) für 0 <= x <= pi/2 berechnen kann, weil alle anderen Argumente x auf diesen Bereich zurückgeführt werden können. Zwischen 0 und pi/2 = 1.57 gibt es nun bei 8-stelliger Genauigkeit genau 157 000 000 verschiedene Werte, die das Argument x annehmen kann (der kleinste ist 0.0000000, der nächste 0.0000001, irgendwann kommt 0.6784934, der nächste ist 0.6784935 und so weiter...). Der Witz ist nun, daß der Taschenrechner sin(x) für jedes dieser x-Argumente ebenfalls auf 8 Stellen genau berechnen können soll. Um das zu erreichen, wäre jedoch eine sehr große Zahl von Stützstellen erforderlich. Bei linearer Interpolation ginge es vielleicht mit 1/5 oder 1/10 von 157 000 000 Stützstellen, aber das wären 31 400 000 bzw. 15 700 000 Stützstellen, von denen jede im Speicher ca. 4 Byte belegen würde. So viel Speicher kann man in einen Taschenrechner-Prozessorchip nicht integrieren.

      Man kann aber zeigen, daß sich die Anzahl der benötigten Stützstellen auf einen Bruchteil reduziert, wenn man nicht linear, sondern z. B. kubisch interpoliert. Da man dann aber eh mit Polynomen höherer Ordnung als "linear" rechnet, geht man letzten Endes den Weg, auf Stützstellen komplett zu verzichten, und den Sinus durch ein Polynom z. B. siebter Ordnung zu approximieren – mit der geforderten Genauigkeit von 8 Stellen und immer noch ausreichend schnell (bei einem Taschenrechner ist es ja ohnehin relativ egal, ob die Berechnung von "sin(0.94)" innerhalb von 0.0015 oder 0.08 Sekunden abgeschlossen ist).

      Wenn das Ergebnis sin(x) nicht so genau sein müßte (z. B. nur 3-stellige Genauigkeit), dann wäre die Tabellen-Methode mit linearer Interpolation zwischen Stützstellen in der Tat einfacher zu programmieren und schneller in der Ausführung.

      Mit freundlichem Gruß
      Martin

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!