Comment fonctionnent les fonctions trigonométriques ?

Donc en mathématiques de l'école secondaire et, probablement, Collège, nous ont appris comment utiliser des fonctions trigonométriques, ce qu'ils font et quels types de problèmes ils résoudre. Mais ils ont toujours été présente pour moi comme une boîte noire. Si vous devez le sinus ou le cosinus de quelque chose, vous cliquez sur le bouton sin ou cos sur votre calculatrice et que vous avez définie. Qui est très bien.

Ce que je demandais, c'est ce qui se passe réellement à l'intérieur de cette boîte noire.

Merci

répondre #1

Tout d'abord, vous devez faire une sorte de réduction de la gamme. Les fonctions trigonométriques sont périodiques, vous devez réduire les arguments jusqu'à un intervalle standard. Pour commencer, vous pourrait réduire les angles entre 0 et 360 degrés. Mais vous vous rendez compte à l'aide de quelques identités, que vous pourriez obtenir avec moins. Si vous calculez des sinus et cosinus des angles entre 0 et 45 degrés, vous pouvez bootstrap votre façon de calculer des fonctions trigonométriques tout pour tous les angles.

Une fois que vous avez réduit votre argument, la plupart des puces utilisent un algorithme CORDIC pour calculer le sinus et le cosinus. Vous peut entendre des gens dire que les ordinateurs utilisent des séries de Taylor. Cela semble raisonnable, mais il n'est pas vrai. Les algorithmes CORDIC sont beaucoup mieux adaptés à la mise en œuvre efficace de matériel . (Bibliothèques delogiciels peuvent utiliser la série de Taylor, dire sur le matériel qui ne supporte pas les fonctions trigonométriques). Il y a peut-être un traitement supplémentaire, à l'aide de l'algorithme CORDIC d'obtenir des réponses assez bons mais alors quelque chose d'autre pour améliorer la précision.

Il y a quelques améliorations à ce qui précède. Par exemple, pour thêta de très petits angles (en radians), sin(theta) = thêta à tous la précision que vous avez, il est plus efficace de thêta simplement retour celui de certains autre algorithme. Si dans la pratique, il y a beaucoup de logique cas spécial pour évincer le rendement et de la précision possible. Puces avec plus petits marchés ne peuvent pas aller autant effort d'optimisation.

répondre #2

Edit : Jack Ganssle a une discussion honnête dans son livre sur les systèmes embarqués, « The Firmware Handbook ».

FYI: Si vous avez des contraintes de performance et de précision, série de Taylor doit pas être utilisé pour approximer les fonctions fins numérique. (Sauvegarder pour votre cours de calcul). Ils font l'utilisation de l' analyticité d'une fonction en un point unique, par exemple le fait que tous ses dérivés existent à ce moment-là. Ils ne convergent nécessairement dans l'intervalle d'intérêt. Souvent, ils font un travail médiocre de la distribution de précision de l'approximation fonction afin d'être « parfait » droit près du point d'évaluation ; l'erreur est généralement zoome vers le haut comme vous s'évader. Et si vous avez une fonction avec un dérivé séparé (par exemple carrés vagues, des vagues de triangle et leurs intégrales), une série de Taylor vous donne la mauvaise réponse.

La solution plus « facile », lors de l'utilisation d'un polynôme de degré maximal n pour approximer une fonction donnée f sur un intervalle de 0 x < x < x 1, est de l' approximation de Chebyshev; voir les recettes numériques pour une bonne discussion. Notez que les Tj(x) et les Tk(x) dans l'article de Wolfram à que je lié utilisé le cos et cosinus inverse, ce sont des polynômes et dans la pratique, vous utilisez une formule de récurrence pour obtenir les coefficients. Encore une fois, voir recettes numériques.

Edit : Wikipedia a un article de semi-decent sur la théorie de l'approximation. L'une des sources qu'ils citent (Hart, « Approximations de l'ordinateur ») est épuisé (& copies utilisées ont tendance à être coûteux) mais va dans beaucoup de détails sur les choses comme cela. (Jack Ganssle mentionne ce numéro 39 de son bulletin d'information The Muse embarqués.)

Edit 2: Voici quelques paramètres d'erreur tangible (voir ci-dessous) pour Taylor vs Tchebychev pour Sin. Quelques points importants à noter :

  1. que l'erreur maximale sur une approximation de série de Taylor dans une gamme donnée, est beaucoup plus grande que l'erreur maximale sur une approximation de Chebyshev de même degré. (Pour la même erreur, vous pouvez obtenir immédiatement avec un moins à terme avec Tchebychev, ce qui signifie des performances plus rapides)
  2. Réduction de l'aire de répartition est une victoire énorme. C'est parce que la contribution des polynômes d'ordre supérieurs se rétrécit vers le bas lorsque l'intervalle de l'approximation est plus petit.
  3. Si vous ne pouvez pas avec la réduction de la gamme, vos coefficients doivent être stockés avec plus de précision.

Ne vous méprenez pas : série de Taylor fonctionnera correctement pour les sinus et cosinus (avec une précision raisonnable pour la plage de-pi/2 à + pi/2 ; techniquement, avec suffisamment de termes, vous pouvez atteindre la précision souhaitée pour tous les intrants réels, mais essayez de calculer les cos(100) à l'aide de séries de Taylor et on ne peut le faire sauf si vous utilisez arbitraire précision arithmétique). Si j'étais coincé sur une île déserte avec un calculateur non, et j'avais besoin pour calculer des sinus et cosinus, j'utiliserais probablement série Taylor puisque les coefficients sont faciles à retenir. Les applications du monde réel pour écrire vos propres fonctions sin() ou cos() sont assez rares pour que vous seriez plus large à l'aide d'une implémentation efficace pour atteindre une précision désirée--qui est la série de Taylor, mais pas.

Gamme = - pi/2 à + pi/2, niveau 5 (3 modalités)

  • Taylor : max erreur autour de 4.5e-3, f = x-x36 + x5120
  • Tchebychev : max erreur autour de 7-5, f = 0.9996949x-0.1656700x3+ 0.0075134x5

Gamme = - pi/2 à + pi/2, degré 7 (4 termes)

  • Taylor : max erreur autour de 1.5e-4, f = x-x36 + x5/120-x75040
  • Tchebychev : max erreur autour de 6-7, f = 0.99999660x-0.16664824x3+ 0.00830629x5-0.00018363x7

Gamme = - pi/4 à + pi/4, niveau 3 (2 mandats)

  • Taylor : max erreur autour de 2.5e-3, f = x-x36
  • Tchebychev : max erreur autour de 1.5e-4, f = 0,999 x-0.1603x3

Gamme = - pi/4 à + pi/4, niveau 5 (3 modalités)

  • Taylor : max erreur environ 3-5, f = x-x36 + x5
  • Tchebychev : max erreur autour de 6-7, f = 0.999995x-0.1666016x3+ 0.0081215x5

Gamme = - pi/4 à + pi/4, degré 7 (4 termes)

  • Taylor : max erreur autour de 3e-7, f = x-x36 + x5/120-x75040
  • Tchebychev : max erreur environ 1.2-9, f = 0.999999986x-0.166666367x3+ 0.008331584x5-0.000194621x7
répondre #3

Je crois qu'elles sont calculées à l'aide de la Série de Taylor ou CORDIC. Certaines applications qui rendent l'utilisation lourde de fonctions trigonométriques (jeux, graphiques) de construire des tables trigonométriques lorsqu'ils démarrent donc ils peuvent chercher juste les valeurs plutôt que sur le recalcul.

répondre #4

Consultez l'article de Wikipedia sur les fonctions trigonométriques. Un bon endroit pour apprendre réellement leur mise en œuvre dans le code est Recettes numériques.

Je ne suis pas beaucoup d'un mathématicien, mais ma compréhension de l'endroit où sin, cos et tan « venir de », c'est qu'ils sont, en un sens, a observé lorsque vous travaillez avec des triangles à angle droit. Si vous prenez les mesures des longueurs des côtés d'un tas de différents triangles à angle droit et tracer les points sur un graphique, vous pouvez obtenir sin, cos et tan qui. Comme le souligne Harper Shelby, les fonctions sont définies simplement comme propriétés de triangles à angle droit.

Une compréhension plus sophistiquée est réalisée par comprendre comment ces rapports portent sur la géométrie du cercle, ce qui conduit à radians et de la bonté. Tout y dans l'entrée de Wikipedia.

répondre #5

Définition des fonctions trigonométriques. Désolé d'entendre que vous avez le goût de la « le bouton juste punch » mathématique « instruction ». J'ai eu à traiter que dans un cours sur l'algèbre linéaire, et je crois que c'est la pire forme du monde de l'enseignement en mathématiques (ou tout autre sujet d'ailleurs).

répondre #6

http://groups.google.com/Group/Geometry.College/browse_thread/thread/232409f942bea3af

répondre #7

Si votre demande pour une explication plus physique de sin, cos et tan examiner comment ils se rapportent à des triangles à angle droit. On peut trouver la valeur numérique réelle du cos(lambda) en formant un angle droit triangle avec un des angles étant lambda et en divisant la longueur du côté triangles adjacent à lambda par la longueur de l'hypoténuse. Même pour le péché utiliser le côté opposé, divisé par l'hypoténuse. Pour la tangente utiliser le côté opposé, divisé par le côté adjacent. Le memonic classique pour s'en souvenir est SOHCAHTOA (prononcé socatoa).


Tags lesen

   
 
logo_banner