Cours 8.8 Sommaire Cours 9.1
math.h
La bibliothèque standard math.h
contient une dizaine de fonctions mathématiques usuelles comme
- cosinus
- sinus
- tangente
- puissance
- racine carré
- exponentielle
- logarithmique
- ...
#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 Xdouble sin(double X);
// Cosinus de Xdouble cos(double X);
// Tangente de Xdouble 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 Xdouble exp(double X);
// Logarithme naturel : ln(X), X>0double log(double X);
// Logarithme en base 10 : log10(X), X>0double log10(double X);
// X exposant Y (X puissance Y)double pow(double X, double Y);
// Racine carrée de X, X>=0double sqrt(double X);
// Valeur absolue de X : |X|double fabs(double X);
// Arrondie à l'entier inférieurdouble floor(double X);
// Arrondi à l'entier supérieurdouble ceil(double X);
// Arrondi au plus prochedouble 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éescarté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.
Pi
La bibliothèque math.h
définie la constante symbolique M_PI
qui contient lavaleur 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 = 1y = 0atan2(0.00, 1.00) = 0.0000 rad
x = 1y = 1atan2(1.00, 1.00) = 0.7854 rad
Exercices
Exercice 1
Écrire une fonction pythagore()
qui calcule la longueur de l’hypoténuse d'untriangle à 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.0Coté adjacent = 3.0Hypoténuse = 5.00
Solution
Exercice 2
Écrire un programme qui affiche les coordonnées des points d'un cercleunitaire avec un pas de 20 degrés. On rappelle que les coordonnées du cercleunitaire 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]
Solution
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 vecteurdouble norme(double x, double y, double z);
Le programme principal demande à l'utilisateur de saisir les coordonnées d'un pointdu plan (X,Y) puis le programme affiche les coordonnées polaires de ce point :
X = 1.Y = 2.Argument = 1.11Norme = 2.24
Solution
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 ...
Cours 8.8 Sommaire Cours 9.1
Voir aussi
- Cours de programmation en C
- Cours 1.1. Histoire du C
- Cours 1.2. Premier programme
- Cours 1.3. Compilation
- Cours 1.4. Les directives de compilation
- Cours 1.5. Quel compilateur choisir ?
- Cours 1.6. Les organigrammes
- Cours 2.1. Les types de variables
- Cours 2.2. Les entiers
- Cours 2.3. Les nombres décimaux
- Cours 2.4. Les caractères
- Cours 2.5. Initialisation des variables
- Cours 2.6. Le vol 501 d'Ariane
- Cours 3.1. Les opérateurs arithmétiques
- Cours 3.2. Le modulo
- Cours 3.3. Le type dans les opérations
- Cours 3.4. Les conversion de type forcé
- Cours 3.5. Les opérateurs bit à bit
- Cours 3.6. Détail des opérateurs bit à bit
- Cours 3.7. Opérateurs de décalage
- Cours 3.8. Opérateurs d'affectation
- Cours 3.9. Opérateur d'incrémentation/décrémentation
- Cours 3.10. Les opérateurs de comparaison
- Cours 3.11. Opérateurs logiques
- Cours 3.12. Priorité des opérateurs
- Cours 4.1. printf
- Cours 4.2. scanf
- Cours 4.3. putchar
- Cours 5.1. Branchement conditionnel (if...else)
- Cours 5.2. if imbriqués et indentation
- Cours 5.3. Tester des intervalles
- Cours 5.4. Opérateur conditionnel ternaire ( ?: )
- Cours 5.5. L'instruction switch..case
- Cours 5.6. Le break dans les switchs
- Cours 6.1. La boucle do..while en C
- Cours 6.2. La boucle while en C
- Cours 6.3. La boucle for
- Cours 6.4. Comment choisir une boucle en C ?
- Cours 6.5. Exercices sur les boucles en C
- Cours 7.1. Masquages
- Cours 7.2. Masquage : forçage à zéro
- Cours 7.3. Forçage à un
- Cours 7.4. Inversion de bits
- Cours 7.5. Tester un bit
- Cours 7.6. Synthèse des masquages
- Cours 8.1. Syntaxe des fonctions en C
- Cours 8.2. L'appel des fonctions
- Cours 8.3. Le mot-clé void dans les fonctions
- Cours 8.4. Le mot-clé return dans les fonctions
- Cours 8.5. Portée des variables
- Cours 8.6. Les variables globales
- Cours 8.7. Les variables statiques
- Cours 8.8. Nombres aléatoires en C
- Cours 9.1. Syntaxe des tableaux en C
- Cours 9.2. Initialisation des tableaux en C
- Cours 9.3. Les tableaux multidimensionnels en C
- Cours 9.4. Comment les tableaux sont stockés en mémoire en C?
- Cours 9.5. Les tableaux dans les fonctions
- Cours 9.6. Exercices sur les tableaux en C
- Cours 10.1. Les chaines de caractères en C
- Cours 10.2. Le caractère de fin de chaîne
- Cours 10.3. La bibliothèque string.h
- Cours 10.4. Chaînes de caractères et fonctions
- Cours 11.1. Introduction aux pointeurs en C
- Cours 11.2. Syntaxe des pointeurs en C
- Cours 11.3. Allocation mémoire dynamique
- Cours 11.4. Incrémentation des pointeurs
- Cours 11.5. Passage de paramètres par pointeur
- Cours 12.1. Introduction aux structures en C
- Cours 12.2. Propriétés des structures en C
- Cours 12.3. Structures et pointeurs
- Cours 12.4. Structures et fonctions
- Cours 13.1. Fonctions récursives en C
- Cours 13.2. Profondeur des fonctions récursives
- Cours 13.3. Récursion croisée
- Cours 14.1. Exercices complémentaires
Dernière mise à jour : 21/11/2022