Accueil de Gladir.com Notes légales de Gladir.com Flux RSS des nouvelles du site Gladir.com - Langage de programmation - Ada - Atn/ATan/ArcTan Section du logiciel DOS «MonsterBook» Inventaire de la bibliothèque de Gladir.com Entrée administrateur

En Ada, il n'existe pas toujours une fonction «Atn», «ATan» ou «ArcTan» permettant de calculer le ArcTangente d'un cercle. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci avec un préalable la fonction de racine carrée :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE ArcTangente IS 
  4.    
  5.    USE TEXT_IO;
  6.    
  7.    R:Float;  
  8.    
  9.    FUNCTION Sqrt(X:in Float) RETURN Float IS 
  10.       A,B,M,XN:FLOAT;
  11.    BEGIN
  12.       IF X=0.0 THEN 
  13.          RETURN 0.0;
  14.       ELSE
  15.          M:=1.0;
  16.          XN:=X;
  17.          WHILE XN>=2.0 LOOP
  18.             XN:=0.25*XN;
  19.             M:=2.0*M;
  20.          END LOOP;
  21.          WHILE XN<0.5 LOOP
  22.             XN:=4.0*XN;
  23.             M:=0.5*M;
  24.          END LOOP;
  25.          A:=XN;
  26.          B:=1.0-XN;
  27.          LOOP
  28.             A:=A*(1.0+0.5*B);
  29.             B:=0.25*(3.0+B)*B*B;
  30.             EXIT WHEN B<1.0E-15;
  31.          END LOOP;
  32.          RETURN A*M;
  33.       END IF;
  34.    END;
  35.    
  36.    FUNCTION ArcTan(X:IN Float) RETURN Float IS 
  37.       A,B:Float;
  38.       N:Integer;
  39.    BEGIN
  40.       A := 1.0 / Sqrt(1.0 + (X * X));
  41.       B := 1.0;
  42.       
  43.       N:=1;
  44.       WHILE N<=11 LOOP
  45.          A := (A + B) / 2.0;
  46.          B := Sqrt(A * B);
  47.          N:=N+1;
  48.       END LOOP;
  49.  
  50.       RETURN X / (Sqrt(1.0 + (X * X)) * A);
  51.    END; 
  52.       
  53. BEGIN
  54.    R:=0.0;   
  55.    WHILE R<=1.1 LOOP      
  56.       PUT_LINE("ArcTan(" & FLOAT'IMAGE(R) & ")=" & FLOAT'IMAGE(ArcTan(R)));      
  57.       R:=R+0.1;      
  58.    END LOOP;      
  59. END ArcTangente;

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: Vendredi, le 25 mai 2012