Section courante

A propos

Section administrative du site

En Delphi, Kylix et Lazarus, les bibliothèques mathématiques standards proposent déjà une fonction permettant de calculer l'arc tangente, appelée «ArcTan». Cette fonction est largement utilisée dans les domaines de la géométrie, de la trigonométrie, de la physique et même de l'infographie pour déterminer un angle à partir d'un rapport entre deux longueurs ou coordonnées. Toutefois, comme pour de nombreuses fonctions mathématiques avancées, il peut être particulièrement enrichissant de chercher à en reproduire le fonctionnement soi-même afin de mieux comprendre les principes numériques et algorithmiques qui se cachent derrière son calcul.

L'arc tangente est la fonction réciproque de la tangente. Elle permet de retrouver l'angle correspondant à une valeur donnée de tangente. Cette opération intervient dans un très grand nombre d'applications pratiques, notamment dans les calculs de direction, la navigation, les systèmes de coordonnées cartésiennes, la robotique ou encore les moteurs graphiques tridimensionnels. Bien que son utilisation soit simple du point de vue du programmeur, son calcul interne repose sur des méthodes mathématiques beaucoup plus élaborées qu'il n'y paraît au premier abord.

L'exemple présenté dans cette page montre qu'il est possible de reconstruire une fonction ArcTan à partir d'autres outils mathématiques fondamentaux. Avant même d'aborder le calcul de l'arc tangente, il est nécessaire de disposer d'une fonction de racine carrée suffisamment précise, puisque celle-ci intervient directement dans les formules utilisées. Une fois cette base établie, il devient possible de mettre en ouvre une méthode numérique capable de produire une approximation très fidèle de l'arc tangente pour une large gamme de valeurs.

Au-delà de l'aspect pratique, ce type d'exercice constitue une excellente introduction aux techniques de calcul numérique utilisées dans les bibliothèques scientifiques modernes. Il permet de découvrir comment des fonctions mathématiques complexes peuvent être obtenues à partir d'opérations élémentaires répétées de manière intelligente. Le programme Delphi présenté ci-dessous calcule ainsi plusieurs valeurs d'arc tangente comprises entre 0 et 1, démontrant la précision de l'algorithme et illustrant concrètement le comportement de cette importante fonction trigonométrique :

  1. Program ArcTanSource;
  2.  
  3. {$APPTYPE CONSOLE} 
  4. Uses SysUtils;
  5.  
  6. Function SquareRoot(X:Real):Real;
  7. Var
  8.  A,B,M,XN:Real;
  9. Begin
  10.  If X=0.0Then Begin
  11.   SquareRoot:=0.0;
  12.  End
  13.   Else
  14.  Begin
  15.   M:=1.0;
  16.   XN:=X;
  17.   While XN>=2.0 do Begin
  18.    XN:=0.25*XN;
  19.    M:=2.0*M;
  20.   End;
  21.   While XN<0.5 do Begin
  22.    XN:=4.0*XN;
  23.    M:=0.5*M;
  24.   End;
  25.   A:=XN;
  26.   B:=1.0-XN;
  27.   Repeat
  28.    A:=A*(1.0+0.5*B);
  29.    B:=0.25*(3.0+B)*B*B;
  30.   Until B<1.0E-15;
  31.   SquareRoot:=A*M;
  32.  End;
  33. End;
  34.  
  35. Function _ArcTan(X:Real):Real;
  36. Var
  37.  A,B:Real;
  38.  N:Integer;
  39. Begin
  40.  A := 1.0 / SquareRoot(1.0 + (X * X));
  41.  B := 1.0;
  42.  For N:=1 to 11 do Begin
  43.   A := (A + B) / 2.0;
  44.   B := SquareRoot(A * B);
  45.  End;
  46.  _ArcTan:=X/(SquareRoot(1.0+(X*X))*A);
  47. End;
  48.  
  49. Var
  50.  R:Real;
  51.  
  52. BEGIN
  53.  R:=0.0;
  54.  While R<=1.1 do Begin
  55.   WriteLn('ArcTan(',R:0:5,')=',_ArcTan(R):0:5);
  56.   R:=R+0.1;
  57.  End;
  58. END.

on obtiendra le résultat suivant :

ArcTan(0.00000)= 0.000000
ArcTan(0.10000)= 0.099668
ArcTan(0.20000)= 0.197396
ArcTan(0.30000)= 0.291457
ArcTan(0.40000)= 0.380506
ArcTan(0.50000)= 0.463648
ArcTan(0.60000)= 0.540420
ArcTan(0.70000)= 0.610726
ArcTan(0.80000)= 0.674741
ArcTan(0.90000)= 0.732815
ArcTan(1.00000)= 0.785398


Dernière mise à jour : Dimanche, le 17 août 2014