FriconiX
Des milliers de pictogrammes gratuits dessinés avec amour!

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);
// Tangeante 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 à 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 tangeante 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

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

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'hypothénuse d'un triangle à partie 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.
Theta = 1.11
Rayon = 2.24

Quiz

Pour calculer x², que peut-on utiliser ?

Vérifier Bravo ! Essaie encore ...

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

Vérifier Bravo ! 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 ! Le cast d'un nombre négatif va arrondir à l'entier supérieur. Essaie encore ...

Voir aussi


Dernière mise à jour : 07/11/2020