Algorithme pour calculer le sinus d'un angle exprimé en radians
Lire un angle Rad exprimé en radians
L'utilisation des radians est obligatoire car on utilisera plus tard
un développement en série.
Mettre +1 dans Sign
"Enlever" un nombre entier de tours grâce à:
* Rad = Rad - 2 * pi * [Rad / (2*pi)] si rad<0
* Rad = Rad + 2 * pi * [-Rad / (2*pi)] + 2*pi si rad>=0
Les opérations précédentes ramènent l'angle au 1er tour (2 pi).
Si Rad>pi, le ramener entre 0 et pi en soustrayant pi et s'en souvenir en
mettant -1 dans Sign
Si l'angle est dans les 3ème et 4ème quadrants, on soustrait pi pour se
retrouver dans les 2 premiers quadrants. Mais le signe du sinus est changé.
Si Rad>pi/2, faire Rad = pi - Rad
Si on est dans le 3ème quadrant, on prend l'angle supplémentaire
dont le sinus a la même valeur.
Si Rad>pi/4, * faire Rad = pi/2 - Rad
* Sinus vaut 1 - Rad*Rad/2 + Rad*Rad*Rad*Rad/24
L'angle est plus grand qu'1/8 tour, pour diminuer la valeur utilisée
dans le développement en série, on prend l'angle complémentaire dont on
calcule le cosinus en prenant les 3 premiers termes du développement en série.
Pour une plus grande précision, on peut augmenter le nombre de termes.
Si Rad<=pi/4, Sinus vaut Rad - Rad*Rad*Rad/6 + Rad*Rad*Rad*Rad*Rad/120
On prend les 3 premiers termes du développement en série de la fonction sinus.
Pour une plus grande précision, on peut augmenter le nombre de termes.
Multiplier Sinus par Sign et afficher la réponse
On ajuste le signe
réel x, Rad, pi, Sinus
entier Sign
écrire "Introduisez l'angle (en radians):"
lire x
pi <-- 3.1416;
Rad <-- x
Sign <-- +1
si Rad>0 alors Rad <-- Rad - 2*pi * [Rad / (2*pi)]
sinon Rad <-- Rad + 2*pi * [-Rad / (2*pi)] + 2*pi
fsi
si Rad > pi alors Rad <-- Rad - pi
Sign <-- -1
fsi
si Rad > pi/2 alors Rad <-- pi - Rad
fsi
si Rad > pi/4 alors Rad <-- pi/2 - Rad
Sinus <-- 1 - Rad*Rad/2 + Rad*Rad*Rad*Rad/24
sinon Sinus <-- Rad - Rad*Rad*Rad/6 + Rad*Rad*Rad*Rad*Rad/120
fsi
Sinus <-- Sinus * Sign
écrire "sin(",x,")=",Sinus
PROGRAM Calcul_Sinus;
VAR x, Rad, pi, Sinus : REAL;
Sign : SHORTINT;
BEGIN
WRITELN('Calcul du sinus d''un angle.');
WRITE('Introduisez l''angle (en radians):');
READLN(x);
pi:=3.1416;
Rad := x;
Sign := +1;
IF Rad>0 THEN Rad := Rad - 2*pi * TRUNC(Rad / (2*pi))
ELSE Rad := Rad + 2*pi * TRUNC(-Rad / (2*pi)) + (2*pi);
IF Rad > pi THEN BEGIN
Rad := Rad - pi;
Sign :=-1
END;
IF Rad > pi/2 THEN Rad :=pi - Rad;
IF Rad > pi/4 THEN BEGIN
Rad :=pi/2 - Rad;
Sinus :=1 - Rad*Rad/2 + Rad*Rad*Rad*Rad/24
END
ELSE Sinus :=Rad - Rad*Rad*Rad/6 + Rad*Rad*Rad*Rad*Rad/120;
Sinus := Sinus * Sign;
WRITELN('sin(',x,')=',Sinus)
END.