Calcul et technologies
Fermer ×

Les principes mathématiques dans la calculatrice

Calcul des fonctions mathématiques

Algorithme CORDIC

CORDIC signifie COordinate Rotation DIgital Computer (calcul numérique par rotation de coordonnées).
C'est un algorithme de calcul des fonctions trigonométriques et hyperboliques qui a été décrit pour la première fois par Jack E. Volder en 1959.
Il a été utilisé dans les premières calculatrices, comme la HP-35 qui utilisait la notation polonaise inverse, car il est parfaitement adapté aux faibles puissances de calcul et aux faibles capacités mémoires. Il a été également utilisés dans les premiers ordinateurs des années 1970.
Le calcul, qui utilise les formules de trigonométrie, est ramené dans un intervalle restreint en utilisant les propriétés des fonctions mathématiques.

  1. Ramener l'angle sur l'intervalle [ - π , π ]
  2. Réduire à l'intervalle [ 0 , π 2 ]
    • x ] π 2 , π ] : θ = π - x
    • x [ - π , - π 2 [ : θ = π + x
  3. Calcul de x = cos ( θ ) et y = sin ( θ ) sur [ 0 , π 2 ] :
    • On part de x = 1 et y = 0 , c'est à dire θ = 0
    • On ajoute γ i jusqu'à atteindre θ , en calculant à chaque étape les nouvelles valeurs de x et y avec γ i = arctan ( 2 - i ) i représente la précision du calcul, le choix de la puissance de 2 facilite les calculs en binaire.
    • Lorsqu'on atteint θ , on obtient x = cos ( θ ) et y = sin ( θ ) sur [ 0 , π 2 ]

Le principe mathématique de ce calcul est la rotation dans le plan.
Pour calculer x = cos ( θ ) et y = sin ( θ ) sur [ 0 , π 2 ] , on calcule les nouvelles valeurs x i + 1 = cos ( θ i + 1 ) et y i + 1 = sin ( θ i + 1 ) en fonction des valeurs précédentes x i = cos ( θ i ) et y i = sin ( θ i ) en appliquant : θ i + 1 = θ i + γ i , cela donne les équations :

{ cos ( θ i + 1 ) = cos ( θ i + γ i ) sin ( θ i + 1 ) = sin ( θ i + γ i ) { cos ( θ i + 1 ) = cos ( θ i ) cos ( γ i ) - sin ( θ i ) sin ( γ i ) sin ( θ i + 1 ) = cos ( θ i ) sin ( γ i ) + sin ( θ i ) cos ( γ i )
En posant x i = cos ( θ i ) , y i = sin ( θ i ) , x i + 1 = cos ( θ i + 1 ) , y i + 1 = sin ( θ i + 1 ) on obtient :
( x i + 1 y i + 1 ) = ( cos ( γ i ) - sin ( γ i ) sin ( γ i ) cos ( γ i ) ) ( x i y i ) ( x i + 1 y i + 1 ) = cos ( γ i ) ( 1 - tan ( γ i ) tan ( γ i ) 1 ) ( x i y i )
Dans une calculatrice, on fonctionne en binaire, on pose : tan ( γ i ) = 2 - i γ i = arctan ( 2 - i ) ce qui donne :
( x i + 1 y i + 1 ) = cos ( arctan ( 2 - i ) ) ( 1 - 2 - i 2 - i 1 ) ( x i y i ) ( x i + 1 y i + 1 ) = 1 1 + 2 - 2 i ( 1 - 2 - i 2 - i 1 ) ( x i y i )
Le coefficient 1 1 + 2 - 2 i converge rapidement vers sa limite, et peut donc être considéré comme constant et mémorisé dans la machine, il vaut : lim n k = 0 n - 1 1 1 + 2 - 2 k 0.6073

En 1971, J. Walther, ingénieur chez Hewlett Packard, généralisa l'algorithme CORDIC aux fonctions hyperboliques, ce qui permit de calculer le logarithme, l'exponentielle ainsi que la racine carrée, en utilisant toujours les propriétés des fonctions afin de réduire l'intervalle de calcul.

La relation généralisée est :
{ x k + 1 = x k - m σ k y k 2 - k y k + 1 = y k + σ k x k 2 - k z k + 1 = z k - σ k ϵ k
En utilisant les différents paramètres de ces équations, on réalise deux fonctionnements qui correspondent aux fonctions trigonométriques (mode circulaire : m=1) et aux fonctions hyperboliques (mode hyperbolique : m=-1). Ensuite pour chacun de ces deux fonctionnements on a deux modes qui sont le mode rotation et le mode vecteur. C'est à partir de ces différents modes et fonctionnement que l'on obtient les différentes fonctions scientifiques des calculatrices.

Mode rotation
La fonction σk est une fonction qui retourne le signe de zk.
Mode circulaire

  • On initialise les valeurs x0=1 et y0=0.
  • On assigne la valeur θ : z0.
  • Le résultat est obtenu avec les valeurs xn et yn.
  • Le mode circulaire donne les résultats xn=cos(θ) et yn=sin(θ).
Mode Hyperbolique
  • les résultats sont xn=cosh(θ) et yn=sinh(θ).
  • Le résultat est également l'exponentielle xn=exp(θ) si on initialise avec x0=1 et y0=1

Mode vecteur
La fonction σk est une fonction qui retourne l'opposé du signe de yk.
Mode circulaire

  1. On assigne les coordonnées du vecteur aux valeurs x0=xv et y0=yv.
  2. On initialise la valeur z0=0.
  3. Les résultats sont le module (xn) et l'argument (zn=arctan(y0/x0)) du vecteur.
Mode hyperbolique
  1. Les résultats sont zn=argtanh(y0/x0)
  2. a , si on utilise les valeurs x0=a+0.25 et y0=a-0.25 alors x n = a .
  3. Le logarithme ln(a) si on utilise les valeurs x0=a+1 et y0=a-1 alors zn=2log(a).

Constantes de calculs
Pour le mode circulaire, on a déjà la constante multiplicative à appliquer au resultat : lim n k = 0 n - 1 1 1 + 2 - 2 k 0.6073 .
Pour le mode hyperbolique, on a également une constante multiplicative à appliquer au résultat : lim n k = 0 n - 1 1 1 - 2 - 2 k 1.205 .

Domaine de définition ou de convergence
Les calculs de l'algorithme CORDIC convergent vers la fonction uniquement dans un intervalle fini et limité. Cette Limite vient des valeurs extrêmes possible de l'angle θ (valeurs maximales possibles de z). Dans le fonctionnement trigonométrique, cette limite vaut | θ | < k = 0 arctan ( 2 - k ) 1.7 , ce qui valide le fait de travailler entre 0 et π/2.
Dans le fonctionnement hyperbolique, cette limite vaut | θ | < k = 0 a r g t a n h ( 2 - k ) 1.055 , cette limite implique une limite sur x0 et y0 dans le mode vecteur qui vaut y 0 x 0 0.78 .

Cela signifie qu'il faut utiliser les propriétés des fonctions pour étendre le calcul en dehors de ces limites, comme par exemple pour l'exponentielle en utilisant la relation x = q log ( 2 ) + r avec q entier, les valeurs de q et r se calculent de la façon suivante : q = x log ( 2 ) et r = x - q log ( 2 ) ainsi l'exponentielle devient e x = 2 q e r .

Autes références web

On peut de référer aux nombreuses publications et ouvrages de Jean-Michel Muller, comme par exemple ce livre "arithmétique des ordinateurs" ou bien en consultant le chapitre 11 de digital arithmetic