Section courante

A propos

Section administrative du site

En C# (C Sharp), il existe déjà une méthode permettant de connaitre l'ArcTangente (Math.Atan). 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. using System;
  2.  
  3. namespace ArcTanSamples
  4. {
  5.      class Program
  6.      {
  7.           public static double SquareRoot(double X) 
  8.           { 
  9.                double A,B,M,XN;  
  10.                if(X==0.0) 
  11.                { 
  12.                     return 0.0;  
  13.                } 
  14.                else 
  15.                { 
  16.                     M=1.0;  
  17.                     XN=X;  
  18.                     while(XN>=2.0) 
  19.                     { 
  20.                          XN=0.25*XN;  
  21.                          M=2.0*M;  
  22.                     } 
  23.                     while(XN<0.5) 
  24.                     { 
  25.                          XN=4.0*XN;  
  26.                          M=0.5*M;  
  27.                     } 
  28.                     A=XN;  
  29.                     B=1.0-XN;  
  30.                     do 
  31.                     {  
  32.                          A=A*(1.0+0.5*B);  
  33.                          B=0.25*(3.0+B)*B*B;  
  34.                     } while(B>=1.0E-15);  
  35.                     return A*M;  
  36.                } 
  37.           } 
  38.    
  39.           public static double ArcTan(double X) 
  40.           {
  41.                double A = 1.0 / SquareRoot(1.0 + (X * X)),B = 1.0;
  42.                int N = 1;
  43.                while(N<=11) 
  44.                {
  45.                     A = (A + B) / 2.0;
  46.                     B = SquareRoot(A * B);
  47.                     N++;
  48.                }
  49.                return X / (SquareRoot(1.0 + (X * X)) * A);
  50.           } 
  51.  
  52.           static void Main(string[] args)
  53.           {
  54.                double R=0.0;
  55.                while(R<=1.1) 
  56.                {
  57.                     Console.WriteLine("ArcTan(" + R + ")=" + ArcTan(R)); 
  58.                     R+=0.1;      
  59.                } 
  60.           }
  61.      }
  62. }

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 : Samedi, le 16 août 2014