Cours 8.9. Fonctions mathématiques en C

math.h

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é.

Liste des fonctions de math.h

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().

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.

Illustration de la fonction atan2() en C

Notez l'ordre contre-intuitif des paramètres : y en premier, puis x.

Pi

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.

Exemple

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

Exercices

Exercice 1

É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

Exercice 2

É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]

Exercice 3

É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

Quiz

Pour calculer x², que peut-on utiliser ?

Vérifier Bravo ! La multiplication est plus rapide que la fonction pow(x,2) Essaie encore ...

Si l'on doit utiliser \( \pi \) dans un programme, comment procéder ?

Vérifier Bravo ! 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;
Vérifier Bravo ! Il faut utiliser la fonction floor. Le cast pourrait fonctionner pour les nombres positifs, mais pas pour les négatifs. Essaie encore ...

Voir aussi


Dernière mise à jour : 21/11/2022