Section courante

A propos

Section administrative du site

Dans QuickBASIC, la fonction ATN est déjà intégrée au langage et permet de calculer directement l'arc tangente d'une valeur donnée. Cette fonction est largement utilisée dans les domaines de la trigonométrie, de la géométrie analytique, de la physique et de l'infographie, où il est souvent nécessaire de déterminer un angle à partir d'un rapport de longueurs ou de coordonnées. Pour la plupart des applications, l'utilisation de la fonction intégrée est amplement suffisante. Toutefois, il peut être particulièrement instructif, et même amusant d'un point de vue mathématique, de chercher à reproduire soi-même son fonctionnement. En effet, reconstruire une fonction trigonométrique à partir de principes numériques permet de mieux comprendre les mécanismes cachés derrière les bibliothèques mathématiques fournies par un langage de programmation. Cette démarche constitue également un excellent exercice pour explorer différentes techniques de calcul numérique et approfondir ses connaissances sur les méthodes d'approximation employées par les logiciels scientifiques.

Le programme QuickBASIC présenté ci-dessous illustre une implémentation complète de l'arc tangente reposant sur une fonction auxiliaire de calcul de racine carrée. L'algorithme utilise une méthode itérative permettant d'obtenir progressivement une approximation de plus en plus précise du résultat recherché. Pour y parvenir, il exploite notamment la moyenne arithmético-géométrique, une technique numérique reconnue pour sa rapidité de convergence et sa grande précision. Avant même de calculer l'arc tangente, le programme doit être capable de déterminer efficacement des racines carrées, ce qui explique la présence d'une fonction spécialisée dédiée à cette tâche. Une fois ces éléments en place, la fonction ArcTan peut produire des résultats très proches de ceux obtenus avec la fonction ATN intégrée du langage. L'exemple fourni calcule l'arc tangente pour différentes valeurs comprises entre 0 et 1, permettant de visualiser l'évolution progressive des résultats. On constate notamment que pour la valeur 1, la fonction retourne approximativement 0,785398, ce qui correspond à π/4 radians, soit un angle de 45 degrés. Cet exemple démontre comment des concepts mathématiques relativement avancés peuvent être implémentés dans QuickBASIC à l'aide de quelques fonctions bien conçues, tout en offrant un aperçu fascinant des techniques utilisées pour construire les bibliothèques mathématiques modernes.

Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci avec un préalable la fonction de racine carré :

  1. DECLARE FUNCTION SquareRoot! (X!)
  2. DECLARE FUNCTION ArcTan! (X!)
  3.  
  4. R! = 0!
  5. WHILE R! <= 1.1
  6.  PRINT USING "ArcTan(#.#####)="; R!;
  7.  PRINT USING "#.######"; ArcTan(R!)
  8.  R! = R! + .1
  9. WEND
  10.  
  11. FUNCTION ArcTan (X)
  12.  DIM A AS DOUBLE
  13.  DIM B AS DOUBLE
  14.  DIM N AS INTEGER
  15.  A = 1! / SquareRoot(1! + (X * X))
  16.  B = 1!
  17.  N = 1
  18.  WHILE N <= 11
  19.   A = (A + B) / 2!
  20.   B = SquareRoot(A * B)
  21.   N = N + 1
  22.  WEND
  23.  ArcTan = X / (SquareRoot(1! + (X * X)) * A)
  24. END FUNCTION
  25.  
  26. FUNCTION SquareRoot (X)
  27.  IF X = 0! THEN
  28.   SquareRoot = 0!
  29.   EXIT FUNCTION
  30.  END IF
  31.  M = 1!
  32.  XN = X
  33.  WHILE XN >= 2!
  34.   XN = .25 * XN
  35.   M = 2! * M
  36.  WEND
  37.  WHILE XN < .5
  38.   XN = 4! * XN
  39.   M = .5 * M
  40.  WEND
  41.  A = XN
  42.  B = 1! - XN
  43.  DO
  44.   A = A * (1! + .5 * B)
  45.   B = .25 * (3! + B) * B * B
  46.  LOOP UNTIL B < .000000000000001#
  47.  SquareRoot = A * M
  48. END FUNCTION

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 : Mercredi, le 14 septembre 2016