Look Up Table für Tangens ???



  • 2Atlantis schrieb:

    Schwierig (und der Grund weshalb ich nicht weiterkomme): Ich kann den Wertebereich nicht einschränken. y = tan(x) wobei x einen absolut beliebigen Wert (Fliesskommazahl) annehmen kann ...

    Der Tangens ist periodisch. Du musst x nur auf ein passendes Intervall runter rechnen (-Π/2 bis Π/2 IIRC) und dann die Werte in der Lookuptable nachschauen. Schau dir am besten mal den Graph der Tangensfunktion an, dann weißt du was ich meine.



  • DarthZiu schrieb:

    Na wenn du keine in C++ hast, dann bau dir doch selbst eine.

    Entweder du rechnest sie beim Aufruf des Programmes einmal komplett durch und speicherst sie in einem globalen Array, so dass du immer darauf zugreifen kannst.

    Oder du schreibst ein anderes Tool, dass diese Aufgabe einmal übernimmt und die Ergebnisse in ner Datei speichert. Dann musst du beim Start deines Hauptprogrammes nur diese Werte in ein Array einlesen und hast sie so immer da.

    ja, ich kann doch aber vor Programmstart nicht die Genauigkeit kennen, mit der die Tangenswerte abgerufen werden. Von daher ist diese Lösung eher ungenau.

    MaSTaH schrieb:

    2Atlantis schrieb:

    Schwierig (und der Grund weshalb ich nicht weiterkomme): Ich kann den Wertebereich nicht einschränken. y = tan(x) wobei x einen absolut beliebigen Wert (Fliesskommazahl) annehmen kann ...

    Der Tangens ist periodisch. Du musst x nur auf ein passendes Intervall runter rechnen (-Π/2 bis Π/2 IIRC) und dann die Werte in der Lookuptable nachschauen. Schau dir am besten mal den Graph der Tangensfunktion an, dann weißt du was ich meine.

    Hast Du dafür mal ein Programmcode-Beispiel? Ich habe im Netz leider keins gefunden...



  • 2Atlantis schrieb:

    Hast Du dafür mal ein Programmcode-Beispiel? Ich habe im Netz leider keins gefunden...

    Wofür jetzt genau?
    Wie MaSTaH schon geschrieben hat, ist die Tangensfunktion periodisch, d.h. du kannst das Intervall auf [\text{-}\frac {\Pi} 2,\frac \Pi 2] beschränken. Nutzt du jetzt noch aus, daß in diesem Bereich tan(-x)=-tan(x) gilt, brauchst du nur noch Werte für [0,\frac \Pi 2]. Also einmal ein paar (äquidistante) Punkte im Intervall durchlaufen und in einem Array speichern.



  • Ein Beispiel such ich, in dem der tangens mal als lookup realisiert ist .. und eine sehr geringe schrittweite bestitzt ...



  • MaSTaH schrieb:

    Der Tangens ist periodisch.

    👎
    bist du sicher?



  • ssm schrieb:

    MaSTaH schrieb:

    Der Tangens ist periodisch.

    👎
    bist du sicher?

    👍
    Ja!

    ( http://de.wikipedia.org/wiki/Bild:GraphTangensfunktion.png )



  • ja klar ist der Tangens periodisch mit π



  • @fubar and 2Atlantis
    danke 👍

    @MaSTaH
    entschuldige, du hatest Recht 😞



  • entweder du erstellst ne lookuptable, die für deine gewünschte genauigkeit eingerichtet ist, oder du hast keine chance. Es wird im zweifesfall immer werte geben, die du nicht vorberechnet hast.



  • otze schrieb:

    entweder du erstellst ne lookuptable, die für deine gewünschte genauigkeit eingerichtet ist, oder du hast keine chance.

    Warum? Man kann auch einfach ein paar Punkte weniger nehmen und dann sinnvoll interpolieren ...

    Edit: Oder meinst du die Werte der tan-Fkt.? Vielleicht habe ich dich nur falsch verstanden.



  • Hey das mit der Interpolation ist eine coole Idee ... Hast du ein Beispiel ???



  • Naja, es gibt sehr viele Möglichkeiten: Willst du die komplette tan-Fkt. auf dem Intervall (rationale Interpolation wäre vielleicht sinnvoll) oder stückweise die Werte der Tabelle linear, kubisch (,...) interpolieren?
    Du könntest z.B. eine Tabelle anlegen, und die Werte dazwischen stückweise linear interpolieren, d. h. du legst einfach Geraden durch die berechneten Werte und approximierst so den Wert der tan-Fkt.
    Vielleicht hilft auch http://de.wikipedia.org/wiki/Interpolation .
    Ein fertiges Beispielprogramm habe ich allerdings nicht. Aber mit Google müßte da einiges zu finden sein ...


Anmelden zum Antworten