Section courante

A propos

Section administrative du site

Bien qu'en Pascal, il n'existe pas de fonction «ArcCos» ou «ArCos» permettant de calculer l'Arc Cosinus d'un cercle, mais il peut être intéressant d'en reproduire une pour notre plaisir personnel:

  1. Program ArcCosinus;
  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 ArcTan(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.  ArcTan:=X/(SquareRoot(1.0+(X*X))*A);
  44. End;
  45.  
  46.  
  47. Function ArcCos(a:Real):Real;
  48. Const
  49.  PI=3.141592653589793;
  50. Begin
  51.  If Abs(a)=1.0 Then ArcCos := (1-a)*PI/2.0
  52.                Else ArcCos := Arctan(-a/SquareRoot(1-a*a))+2*Arctan(1);
  53. End;
  54.  
  55. BEGIN
  56.  WriteLn('ArcCos(0.5)=',ArcCos(0.5));
  57. END.

on obtiendra le résultat suivant:

ArcCos(0.5)= 1.047197551196598

Dernière mise à jour : Mardi, le 25 octobre 2016