Section courante

A propos

Section administrative du site

En RemObjects Chrome, il existe déjà une fonction permettant de connaître 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é:

NameSpace Atn;

INTERFACE

Uses 
 System.Text;

type
  Prog = class
    class method SquareRoot(X:Real):Real;
    class method ArcTan(X:Real):Real;
    class method Main(Args: array of String);
  end;

IMPLEMENTATION

class method Prog.Main(Args: array of String);
Var
 R:Real;
begin
 R:=0.0;
 While R<=1.1 do Begin
  Console.WriteLine('ArcTan('+Convert.ToString(R)+')='+Convert.ToString(ArcTan(R)));
  R:=R+0.1;
 End;
end;

class method Prog.SquareRoot(X:Real):Real;
Var
 A,B,M,XN:Real;
Begin
 If X=0.0Then Begin
  Result:=0.0;
 End
  Else
 Begin
  M:=1.0;
  XN:=X;
  While XN>=2.0 do Begin
   XN:=0.25*XN;
   M:=2.0*M;
  End;
  While XN<0.5 do Begin
   XN:=4.0*XN;
   M:=0.5*M;
  End;
  A:=XN;
  B:=1.0-XN;
  Repeat
   A:=A*(1.0+0.5*B);
   B:=0.25*(3.0+B)*B*B;
  Until B<1.0E-15;
  Result:=A*M;
 End;
End;

class method Prog.ArcTan(X:Real):Real;
Var
 A,B:Real;
 N:Integer;
Begin
 A := 1.0 / SquareRoot(1.0 + (X * X));
 B := 1.0;
 For N:=1 to 11 do Begin
  A := (A + B) / 2.0;
  B := SquareRoot(A * B);
 End;
 Result:=X/(SquareRoot(1.0+(X*X))*A);
End;

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 février 2008