La bibliothèque standard math.h
contient une dizaine de fonctions mathématiques usuelles comme
#include <math.h>
Toutes les fonctions qui font intervenir des angles utilisent le radian comme unité.
La liste des fonctions peut être trouvée sur la page Wikipedia de math.h. Voici quelques-unes des plus usuelles :
// Sinus de X
double sin(double X);
// Cosinus de X
double cos(double X);
// Tangente de X
double tan(double X);
// Arcsin(X) dans le domaine [-π/2, π/2], x[-1, 1]
double asin(double X);
// Arccos(X) dans le domaine [0, π], x[-1, 1]
double acos(double X);
// Arctan(X) dans le domaine [-π/2, π/2]
double atan(double X);
// Arc tangente du quotient de ses arguments (dans le bon quadran)
double atan2( double Y, double X);
// Exponentielle de X
double exp(double X);
// Logarithme naturel : ln(X), X>0
double log(double X);
// Logarithme en base 10 : log10(X), X>0
double log10(double X);
// X exposant Y (X puissance Y)
double pow(double X, double Y);
// Racine carrée de X, X>=0
double sqrt(double X);
// Valeur absolue de X : |X|
double fabs(double X);
// Arrondie à l'entier inférieur
double floor(double X);
// Arrondi à l'entier supérieur
double ceil(double X);
// Arrondi au plus proche
double round(double X);
Nous n'allons pas détailler chaque fonction, mais seulement la fonction atan2()
.
La fonction atan2()
calcule l'arc tangente sur la base de coordonnées
cartésiennes. En d'autres termes, atan2()
permet de calculer l'angle formé
par un vecteur x,y et l'axe des abscisses.
Notez l'ordre contre-intuitif des paramètres : y en premier, puis x.
La bibliothèque math.h
définie la constante symbolique M_PI
qui contient la
valeur de \( \pi \) :
#define M_PI 3.14159265358979323846
Dès lors que la bibliothèque math.h
est incluse, cette constante est accessible.
L'exemple suivant calcule l'angle formé par le vecteur x,y et l'axe des abscisses.
x = 1 y = 0 atan2(0.00, 1.00) = 0.0000 rad
x = 1 y = 1 atan2(1.00, 1.00) = 0.7854 rad
Écrire une fonction pythagore()
qui calcule la longueur de l’hypoténuse d'un
triangle à partir de la longueur des deux autres côtés. On rappelle ici le théorème de Pythagore :
Le carré de la longueur de l’hypoténuse, qui est le côté opposé à l'angle droit, est égal à la somme des carrés des longueurs des deux autres côtés.
Coté opposé = 4.0 Coté adjacent = 3.0 Hypoténuse = 5.00
Écrire un programme qui affiche les coordonnées des points d'un cercle unitaire avec un pas de 20 degrés. On rappelle que les coordonnées du cercle unitaire peuvent être calculées par les formules suivantes :
$$ \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} cos(\alpha) \\ sin(\alpha) \end{bmatrix} $$
Afficher les points conformément à cet exemple :
α=0.00 => [ 1.00 , y= 0.00] α=0.35 => [ 0.94 , y= 0.34] α=0.70 => [ 0.77 , y= 0.64] α=1.05 => [ 0.50 , y= 0.87] α=1.40 => [ 0.17 , y= 0.98] α=1.75 => [-0.17 , y= 0.98] α=2.09 => [-0.50 , y= 0.87] α=2.44 => [-0.77 , y= 0.64] α=2.79 => [-0.94 , y= 0.34] α=3.14 => [-1.00 , y= 0.00] α=3.49 => [-0.94 , y=-0.34] α=3.84 => [-0.77 , y=-0.64] α=4.19 => [-0.50 , y=-0.87] α=4.54 => [-0.17 , y=-0.98] α=4.89 => [ 0.17 , y=-0.98] α=5.24 => [ 0.50 , y=-0.87] α=5.59 => [ 0.77 , y=-0.64] α=5.93 => [ 0.94 , y=-0.34] α=6.28 => [ 1.00 , y=-0.00]
Écrire une fonction qui calcule la distance entre un point de l'espace (x,y,z) et l'origine :
// Calcule la norme d'un vecteur
double norme(double x, double y, double z);
Le programme principal demande à l'utilisateur de saisir les coordonnées d'un point du plan (X,Y) puis le programme affiche les coordonnées polaires de ce point :
X = 1. Y = 2. Argument = 1.11 Norme = 2.24
Pour calculer x², que peut-on utiliser ?
pow(x,2)
Essaie encore ...
Si l'on doit utiliser \( \pi \) dans un programme, comment procéder ?
M_PI
est déjà défini dans math.h.
Essaie encore ...
Si l'on souhaite arrondir un nombre à l'entier inférieur, quelle syntaxe doit-on utiliser ?
double x=-2.7;
floor
. Le cast pourrait fonctionner pour les nombres positifs, mais pas pour les négatifs.
Essaie encore ...