Section courante

A propos

Section administrative du site

En Delphi/Kylix/Lazarus, il existe déjà une fonction permettant de connaitre l'ArcTangente. Cependant, il peut être intéressant d'en reproduire une pour notre plaisir personnel. 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. 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