En Delphi, les bibliothèques mathématiques standards offrent déjà une fonction «Sin» permettant de calculer rapidement et avec une grande précision le sinus d'un angle exprimé en radians. Cette fonction est l'une des plus utilisées dans le domaine des mathématiques appliquées et de la programmation scientifique. Toutefois, même lorsqu'une solution est directement disponible dans le langage, il peut être particulièrement intéressant de chercher à en comprendre le fonctionnement interne et de tenter d'en réaliser sa propre version. Cet exercice permet non seulement de mieux maîtriser les concepts trigonométriques, mais également de découvrir certaines techniques de calcul numérique employées dans les bibliothèques spécialisées.
Le sinus est une fonction fondamentale de la trigonométrie. Il intervient dans une multitude de domaines tels que la géométrie, la physique, l'électronique, le traitement du signal, l'astronomie et l'infographie. Les phénomènes périodiques, les vibrations, les ondes sonores, les mouvements circulaires et les rotations utilisent fréquemment cette fonction pour modéliser leur comportement. Grâce à ses propriétés mathématiques bien définies, le sinus constitue l'un des outils les plus importants pour représenter des variations cycliques dans le temps ou dans l'espace.
L'exemple présenté dans cette page démontre qu'il est possible de reconstruire une fonction sinus à partir d'une méthode d'approximation numérique relativement compacte. Plutôt que d'utiliser directement la fonction intégrée du compilateur, l'algorithme repose sur une série de calculs intermédiaires permettant d'obtenir une excellente précision sur un large intervalle de valeurs. Cette approche met en évidence le fait que de nombreuses fonctions mathématiques avancées peuvent être reproduites à l'aide d'opérations élémentaires soigneusement organisées.
Au-delà de son aspect pédagogique, cet exercice permet également de mieux comprendre les mécanismes utilisés dans les bibliothèques mathématiques modernes pour fournir des résultats rapides et fiables. Le programme Delphi présenté ci-dessous calcule ainsi les valeurs du sinus pour différents angles compris entre 0 et environ 3,14 radians. Les résultats obtenus reproduisent fidèlement la courbe classique du sinus, qui débute à zéro, atteint progressivement un maximum proche de 1 vers π/2 radians, puis redescend graduellement vers zéro à mesure que l'angle se rapproche de π radians. Cette démonstration illustre parfaitement le comportement de cette fonction trigonométrique essentielle tout en montrant qu'il est possible d'en réaliser soi-même une implémentation efficace :
- Program SinSource;
-
- {$APPTYPE CONSOLE}
-
- Uses SysUtils;
-
- Function Sinus(X:Real):Real;
- Var
- R,S:Real;
- I:Byte;
- Begin
- R:=X*X;
- S:=42.0;
- For I:=10 downto 1 do S:=4.0*I-2.0+(-R)/S;
- Sinus:=2.0*X*S/(R+S*S);
- End;
-
- Var
- I:Real;
- BEGIN
- I:=0;
- While I<3.14 do Begin
- WriteLn('Sinus ',I:0:1,' ',Sinus(I):0:10);
- I:=I+0.1;
- End;
- END.
on obtiendra le résultat suivant :
Sinus 0.0 0.0000000000Sinus 0.1 0.0998334166
Sinus 0.2 0.1986693308
Sinus 0.3 0.2955202067
Sinus 0.4 0.3894183423
Sinus 0.5 0.4794255386
Sinus 0.6 0.5646424734
Sinus 0.7 0.6442176872
Sinus 0.8 0.7173560909
Sinus 0.9 0.7833269096
Sinus 1.0 0.8414709848
Sinus 1.1 0.8912073601
Sinus 1.2 0.9320390860
Sinus 1.3 0.9635581854
Sinus 1.4 0.9854497300
Sinus 1.5 0.9974949866
Sinus 1.6 0.9995736030
Sinus 1.7 0.9916648105
Sinus 1.8 0.9738476309
Sinus 1.9 0.9463000877
Sinus 2.0 0.9092974268
Sinus 2.1 0.8632093666
Sinus 2.2 0.8084964038
Sinus 2.3 0.7457052122
Sinus 2.4 0.6754631806
Sinus 2.5 0.5984721441
Sinus 2.6 0.5155013718
Sinus 2.7 0.4273798802
Sinus 2.8 0.3349881502
Sinus 2.9 0.2392493292
Sinus 3.0 0.1411200081
Sinus 3.1 0.0415806624