Section courante

A propos

Section administrative du site

En Free Pascal, 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. Function SquareRoot(X:Real):Real;
  4. Var
  5.  A,B,M,XN:Real;
  6. Begin
  7.  If X=0.0Then Begin
  8.   SquareRoot:=0.0;
  9.  End
  10.   Else
  11.  Begin
  12.   M:=1.0;
  13.   XN:=X;
  14.   While XN>=2.0 do Begin
  15.    XN:=0.25*XN;
  16.    M:=2.0*M;
  17.   End;
  18.   While XN<0.5 do Begin
  19.    XN:=4.0*XN;
  20.    M:=0.5*M;
  21.   End;
  22.   A:=XN;
  23.   B:=1.0-XN;
  24.   Repeat
  25.    A:=A*(1.0+0.5*B);
  26.    B:=0.25*(3.0+B)*B*B;
  27.   Until B<1.0E-15;
  28.   SquareRoot:=A*M;
  29.  End;
  30. End;
  31.  
  32. Function Atn(X:Real):Real;
  33. Var
  34.  A,B:Real;
  35.  N:Integer;
  36. Begin
  37.  A := 1.0 / SquareRoot(1.0 + (X * X));
  38.  B := 1.0;
  39.  For N:=1 to 11 do Begin
  40.   A := (A + B) / 2.0;
  41.   B := SquareRoot(A * B);
  42.  End;
  43.  Atn:=X/(SquareRoot(1.0+(X*X))*A);
  44. End;
  45.  
  46. Var
  47.  R:Real;
  48.  
  49. BEGIN
  50.  R:=0.0;
  51.  While R<=1.1 do Begin
  52.   WriteLn('ArcTan(',R:0:5,')=',ArcTan(R):0:5,' ',Atn(R):0:5);
  53.   R:=R+0.1;
  54.  End;
  55. 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 : Jeudi, le 29 décembre 2011