Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme sur Algobox

Posté par
NicoSpartiate
15-03-14 à 18:40

Bonjour, j'ai un problème avec un Exercice de DM à faire sur Algobox. En effet, la consigne est la suivante :
   Ecrire, à l'aide du logiciel Algobox, un programme prenant en entrée les coordonnées de 2 vecteurs, et retournant un message déclarant s'ils sont colinéaires ou non.
Mon problème est qu'en essayant avec mon algorithme un exemple ayant 2 vecteurs colinéaires, je me suis aperçu qu'il m'afficher qu'ils n'étaient pas colinéaires.
Pour info : je n'y connais pas grand chose en algorithme et mon exemple est u(4;7) et v(2,8;4,9) soit d'après la formule xy'-x'y=0, 4*4,9-7*2,8=0 donc les 2 vecteurs sont bien colinéaires.
Voici mon algorithme, merci d'avance pour votre aide pour savoir où est mon erreur.

VARIABLES
   x1 EST_DU_TYPE NOMBRE
   x2 EST_DU_TYPE NOMBRE
   y1 EST_DU_TYPE NOMBRE
   y2 EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
   LIRE x1
   LIRE x2
   LIRE y1
   LIRE y2
  Si(x1*y2)-(x2*y1)==0 ALORS
        DEBUT_SI
        AFFICHER "Les deux vecteurs sont colinéaires."
        FIN_SI
        SINON

           DEBUT_SINON
           AFFICHER "Les deux vecteurs ne sont pas colinéaires."
           FIN_SINON
FIN_ALGORITHME

Posté par
mathafou Moderateur
re : Algorithme sur Algobox 15-03-14 à 19:32

Bonjour,

raisons possibles ?
1) erreur sur la casse (majuscule/minuscule) des noms de variables

2) erreur lors de la saisie des valeurs (virgule au lieu du point décimal)

mais de toute façon en éliminant ces erreurs là il reste :

3) les nombres décimaux n'ont pas de représentation exacte en binaire, et donc provoquent une erreur d'arrondi
en effet 1/10 en binaire s'écrit
0.00011001100110011... avec "une infinité" de "0011" répétés
de même que 1/3 en décimal qui comporte une infinité de chiffres àprès la virgule 1/10 en binaire "ne s'arrète jamais"
la machine ne prend qu'un nombre fini de chiffres binaires pour faire ses calculs
c'est comme si on disait
X = 1/3 (en fait 0.3333333 et ça s'arrête là)

X+X+X ça devrait donner 1
or ça donne 0.3333333 + 0.3333333 + 0.3333333 = 0.9999999

et en fait c'est bien ce qui se passe ici, j'ai vérifié.
si au lieu de (2.8; 4.9) tu saisis (28; 49) il te répond bien "colinéaires"

c'est la raison pour laquelle en informatique on ne peut faire des test "égal à zéro" que sur des calculs sur des nombres entiers exclusivement

tous les calculs sur des nombres décimaux (ou équivallent avec des nombres non entiers à quelque étape du calcul que ce soit) sont interdits de test "égal"
il faut tester "à peu près égal à zéro" à la précision de la machine (qu'on ne connait pas toujours)
c'est à dire tester si - < calcul <
ou abs(calcul) <
étant "la précision de la machine"
tu peux fixer ici cette précision à |calcul|*10-15 par exemple.
ou va savoir combien.

conclusion : en dehors des nombres entiers, tous les calculs, même ceux qui tombent justes "à la main", seront sur machine uniquement des approximations.

Posté par
mathafou Moderateur
re : Algorithme sur Algobox 15-03-14 à 19:59

en lui demandant d'afficher la valeur calculée on a :
***Algorithme lancé***
Entrer X1 : 4
Entrer Y1 : 7
Entrer X2 : 2.8
Entrer Y2 : 4.9
non colinéaires, D = 3.5527137e-15
***Algorithme terminé***

qui confirme que les calculs sont bien à environ 10-15 près (multiplié par la plus grande valeur obtenue au cours du calcul = 4*2.8 = 11.2 soit 10-14 en fait)
pas terrible comme précision...

Posté par
deniscardan
re : Algorithme sur Algobox 16-03-14 à 12:47

Le résultat est conforme à la norme internationale qui est respectée par tous les langages standards comme java, c , python, javascript... et AlgoBox (où les calculs sont effectués via javascript)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !