Section courante

A propos

Section administrative du site

Bien qu'en Delphi, Kylix ou Lazarus il existe déjà une fonction intégrée nommée Sqrt permettant de calculer rapidement la racine carrée d'un nombre, il peut néanmoins être très instructif et même amusant de réaliser ce calcul par soi-même. En effet, les bibliothèques mathématiques modernes cachent souvent des algorithmes complexes derrière une simple fonction, ce qui fait que la plupart des programmeurs utilisent ces outils sans réellement savoir comment les résultats sont obtenus. Pourtant, comprendre les mécanismes qui permettent de calculer une racine carrée constitue un excellent exercice de programmation numérique et de mathématiques appliquées.

La racine carrée est l'une des opérations fondamentales de l'arithmétique et de l'algèbre. Elle intervient dans une multitude de domaines tels que la géométrie, la physique, l'ingénierie, les statistiques ou encore l'informatique graphique. Par exemple, le calcul de distances, l'application du théorème de Pythagore ou certaines méthodes d'optimisation utilisent régulièrement cette opération. Il est donc particulièrement intéressant de découvrir comment un programme peut parvenir à calculer une valeur aussi importante sans faire appel directement aux fonctions standards du compilateur.

Depuis l'Antiquité, plusieurs méthodes ont été développées afin d'obtenir des approximations de plus en plus précises des racines carrées. Certaines reposent sur des divisions successives, d'autres sur des séries mathématiques ou encore sur des procédés itératifs permettant d'améliorer progressivement le résultat. Les ordinateurs modernes utilisent généralement des algorithmes très optimisés afin d'obtenir rapidement une précision élevée, même pour des nombres très grands ou très petits.

Le programme présenté ci-dessous démontre une approche numérique particulièrement élégante permettant de calculer la racine carrée d'une valeur réelle. L'algorithme commence par ramener le nombre dans une plage favorable aux calculs, puis applique une série d'itérations successives afin de converger vers la solution recherchée avec une excellente précision. Cette méthode permet d'obtenir des résultats comparables à ceux de la fonction Sqrt intégrée tout en offrant une meilleure compréhension des principes mathématiques sous-jacents. À l'aide de ce code source, vous pourrez ainsi explorer le fonctionnement interne du calcul des racines carrées et constater par vous-même l'efficacité de cette technique numérique :

  1. Program SqrtSource;
  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. Var
  36.  R:Real;
  37.  
  38. BEGIN
  39.  R:=2;
  40.  While R<=1000 do Begin
  41.   WriteLn('Sqrt(',R:0:5,')=',SquareRoot(R):0:5);
  42.   R:=R*R;
  43.  End;
  44. END.

on obtiendra le résultat suivant :

Sqrt(2)= 1.41421
Sqrt(4)= 2.0000
Sqrt(16)= 4.0000
Sqrt(256)= 16.0000


Dernière mise à jour : Dimanche, le 17 août 2014