Vous êtes sur la page 1sur 2

Travail Pratique #1

Les erreurs et précision des calculs par ordinateur


Contraintes:
Le projet programmé doit être remis le 18 octobre 2022 (sujet à changement selon
la progression du cours). Ce travail peut être fait en équipe de deux personnes. La
correction du travail est basée sur les critères suivants :
Fonctionnement de l’application 60 %
Programmes (programme principal (fonction main()), procédures/fonctions)
Style de programmation 40 %
(modularité, documentation, validation)
Documentation : Chaque fonction doit avoir une zone de commentaires dans son
entête qui comprend :
 Le titre de la fonction et sa description (dire ce qu’elle fait)
 Décrire les paramètres en entrée (INPUT : ) et en sortie (OUTPUT : ) en
spécifiant leur nom, type, type de passage

Les erreurs et précision des calculs par ordinateur


Objectifs:
Ce travail permet de faire l’apprentissage des diverses contraintes du calcul
numérique. Vous pourrez vous familiarisez plus particulièrement à la représentation des
nombres entiers et réels et à la précision des calculs impliquant ces nombres. Pour ce faire,
vous devez créer un projet console en C dont la fonction principale (main()) contient des
appels (directs ou dans un menu) aux fonctions décrites ci-dessous.
Énoncé:
1) Écrivez une fonction qui fait la somme de deux nombres entiers signés sur 16
bits. Cette fonction doit permettre de détecter les cas de débordements positifs et négatifs.
Cette fonction est appelée additionSINT(). À l’intérieur de cette fonction vous demandez
à l’utilisateur de fournir deux nombres entiers signés dont vous devez faire la validation.
Ces deux nombres lus, représentés par les variables locales short int n1, short int n2 sont
ensuite additionnés. Cette fonction devra afficher le résultat de la somme et indiquer si
ce résultat est correct ou est un débordement positif ou négatif.
2) En vous inspirant de l’algorithme présenté dans vos notes de cours, construisez
deux autres fonctions qui évaluent l’epsilon de l’architecture INTEL ainsi que le nombre de
chiffres binaires significatifs de la partie fractionnaire. Une fonction epsilonf() pour la
représentation réelle simple précision (SP) (float) et une epsilond() pour la représentation
double précision (DP) (double). Ces fonctions doivent afficher la valeur du epsilon ainsi
que le nombre de chiffres binaires significatifs.
3) En vous inspirant de l’algorithme de sommation successive, implantez deux
fonctions qui calculent la sommation successive de 1/n pour n itérations. Le nombre de
termes additionnés (n) devrait être un multiple de 100 (soit 100, 1000, ou 10000) que vous
demandez à l’utilisateur et dont vous devez faire la validation. Une fonction sommef()
dans le cas de nombres réels SP et sommed() pour les nombres réels DP doivent être
implantées. Ces fonctions doivent afficher la valeur de n, le résultat de la sommation
ainsi que l’erreur de calcul.
4) En vous inspirant des algorithmes de sommation ascendante et descendante
implantez une fonction sommeascf() qui permet de faire la sommation ascendante et
sommedescf() pour la sommation descendante de nombres réels SP. Implantez aussi les
fonctions sommeascd() et sommedescd() dans le cas de nombres réels DP. La suite
additionnée est:  (1/in) pour i allant de 1 à 32767 dans le cas ascendant et de 32767 à 1
dans le cas descendant. Vous devez calculer cette suite pour chaque valeur d’exposant n =
1, 2 et 3. Chaque fonction doit afficher la valeur de n et le résultat de la sommation.
5) En vous inspirant du fichier utilitaire util-Rtbis-Trajectoire.cpp disponible dans
le dossier Exemples du site ftp, faites appel à la fonction rtbis() tel que décrite en exemple
dans ce même fichier utilitaire, pour faire afficher la distance horizontale parcourue par une
balle (projectile) suivant une trajectoire parabolique (voir figure ci-dessous). Changer les
valeurs de précision (paramètres 6 et 7) lors de l’appel à la fonction rtbis() et observer
l’effet sur la vitesse de convergence (calcul de la distance parcourue en x). Les paramètres
6 et 7 interviennent dans la structure conditionnelle ci-dessous de la fonction rtbis().

Exemple d’appel à la fonction rtbis() :

Trajectoire d’une balle

(1)
Documents à remettre :
Veuillez déposer votre projet zippé sur le portail du cours à la date
convenue.

Vous aimerez peut-être aussi