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é :
- DECLARE FUNCTION SquareRoot! (X!)
- DECLARE FUNCTION ArcTan! (X!)
-
- R! = 0!
- WHILE R! <= 1.1
- PRINT USING "ArcTan(#.#####)="; R!;
- PRINT USING "#.######"; ArcTan(R!)
- R! = R! + .1
- WEND
-
- FUNCTION ArcTan (X)
- DIM A AS DOUBLE
- DIM B AS DOUBLE
- DIM N AS INTEGER
- A = 1! / SquareRoot(1! + (X * X))
- B = 1!
- N = 1
- WHILE N <= 11
- A = (A + B) / 2!
- B = SquareRoot(A * B)
- N = N + 1
- WEND
- ArcTan = X / (SquareRoot(1! + (X * X)) * A)
- END FUNCTION
-
- FUNCTION SquareRoot (X)
- IF X = 0! THEN
- SquareRoot = 0!
- EXIT FUNCTION
- END IF
- M = 1!
- XN = X
- WHILE XN >= 2!
- XN = .25 * XN
- M = 2! * M
- WEND
- WHILE XN < .5
- XN = 4! * XN
- M = .5 * M
- WEND
- A = XN
- B = 1! - XN
- DO
- A = A * (1! + .5 * B)
- B = .25 * (3! + B) * B * B
- LOOP UNTIL B < .000000000000001#
- SquareRoot = A * M
- END FUNCTION
on obtiendra le résultat suivant :
ArcTan(0.00000)= 0.000000ArcTan(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