Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

algorithme

Posté par
inezer
01-04-16 à 17:03

Bonjour je suis en 1re S et j'ai un DM pour Lundi mais je n'arrive pas à faire un exercices pouvez vous m'aider ?
voici le problème:

On souhaite créer un algorithme qui permet de déterminer les décimales successives de solutions de f(x)=0
1) Quelles conditions doivent vérifier deux images successives du tableau de valeur pour que leurs antécédents encadrent la solution de f(x)=0
2) ecrire un algorithme qui permet de trouver l'arrondi par défaut à 10^-8 près de la solution
3)le faire fonctionner et donner votre proposition (penser à vérifier) Vous pouvez l'écrire en français ou avec le vocabulaire de votre calculatrice

prière de répondre le plus vite possible et merci d'avance de votre aide

Posté par
mathafou Moderateur
re : algorithme 01-04-16 à 17:39

Bonjour,

question 1 : du simple bon sens pour quiconque a seulement fait dans sa vie des tableaux de valeurs

question 2 :
le principe de cet algorithme est de faire une boucle imbriquée.
une boucle à l'intérieur d'une boucle

une boucle pour des pas de plus en plus petits (divisé par 10 à chaque fois)
qui contient une boucle cherchant parmi les 10 valeurs du tableau avec ce pas là la condition de la question 1

exemple de ce que devra faire en interne l'algorithme :

avec une fonction f(x) = x^3 - 2x² - 5
cherchons les racines entre 0 et 9 (par pas de 1)

x = 0 f(x) = -5
x = 1 f(x) = -6
x = 2 f(x) = -5
x = 3 f(x) = 4 terminé, changement de signe

il va donc chercher entre 2 et 3 pour obtenir le chiffre suivant, donc par pas de 0.1 :
x = 2.0 f(x) = -5
x = 2.1 f(x) = -4.559
x = 2.2 f(x) = -4.032
x = 2.3 f(x) = -3.413
x = 2.4 f(x) = -2.696
x = 2.5 f(x) = -1.875
x = 2.6 f(x) = -0.944
x = 2.7 f(x) = 0.1030 terminé, changement de signe

il va donc chercher entre 2.6 et 2.7, donc par pas de 0.01
x = 2.60 f(x) = -0.944
x = 2.61 f(x) = -0.844619
x = 2.62 f(x) = -0.744072
x = 2.63 f(x) = -0.642353
x = 2.64 f(x) = -0.539456
x = 2.65 f(x) = -0.435375
x = 2.66 f(x) = -0.330104
x = 2.67 f(x) = -0.223637
x = 2.68 f(x) = -0.115968
x = 2.69 f(x) = -0.007091
x = 2.70 f(x) = 0.1030 terminé, changement de signe

il va donc chercher entre 2.69 et 2.70 par pas de 0.001

etc

la division du pas par 10 est à faire par le programme bien entendu
par la boucle externe, ici j'ai en tout exécuté 3 fois cette boucle externe
et pas exécuté trois fois un programme qui génére un seul tableau
et à l'intérieur de chacune un nombre variable de fois la boucle interne qui a généré le tableau de valeurs

à la fin quand on sera arrivé au pas de 0.00000001 (10-8) on aura l'encadrement voulu pour la solution.

nota : il doit y avoir un collègue à toi, de ta classe, qui a le même exo ici
mais essaye de chercher par toi même avec ces indications avant d'aller copier sur lui ..
ce sera bien plus formateur, vu que les algorithmes on apprend à les faire en se battant avec, pas en les recopiant.


question 3 :
je doute qu'avec une calculette, ou avec Algobox, on puisse atteindre une telle précision
se limiter à 10-6 sera déja pas mal ...

pour atteindre les 10-8 il serait nécessaire d'utiliser un langage de programmation plus puissant, voire d'utiliser des astuces.
en effet rien que le nombre 0.5 ne tombe déja pas juste en binaire (à l'intérieur des machines) et donc des erreurs d'arrondi insurmontables si on laisse faire la machine
il faut gérer soi même ces histoires d'arrondi (pour éviter qu'il affiche 0.5 comme le peu lisible 0.4999999999998 par exemple)
ou qu'il arrondisse intempestivement en donnant la suite (pour mon exemple au dessus) :
...
2.690647 < x <= 2.690648
2.6906474 < x <= 2.6906475
2.6906474 < x <= 2.6906475 Algobox arrondit ça de sorte que le 8ème chiffre après la virgule sera à jamais inconnu
il aurait dû donner :
...
2.690647 < x <= 2.690648, à 10-6 près
2.6906474 < x <= 2.6906475 à 10-7 près
2.69064744 < x <= 2.69064745 à 10-8 près
il a arrondi ces deux valeurs d'office en affichant faux ce qu'il a juste en interne

Posté par
mathamore
re : algorithme 01-04-16 à 18:02

bonjour,

connais tu la méthode de dichotomie?

Posté par
mathafou Moderateur
re : algorithme 01-04-16 à 18:20

l'énoncé demande chiffre par chiffre :
déterminer les décimales successives

ce que ne fait pas la dichotomie
la dichotomie est certes beaucoup plus facile à programmer, mais le but de l'exo est d'apprendre à faire des boucles imbriquées, pas simplement de résoudre une équation...

Posté par
inezer
re : algorithme 01-04-16 à 19:10

merci beaucoup pour ton aide !!!

Posté par
carpediem
re : algorithme 01-04-16 à 20:19



....

Posté par
mathafou Moderateur
re : algorithme 01-04-16 à 20:49

c'est malheureusement faux là bas...

aucun des deux algorithmes proposés n'est correct, pour des détails, mais ils sont faux tous les deux
(même zygomatique, pourtant de bon conseil a fait une toute petite erreur ... conduisant à environ doubler le nombre de boucles exécutées, donnant certes un résultat juste, ce qui lui a donné l'impression que ça marche)


et "Vans1" ressemble étrangement à "Vans1" ici ...
créé sur mathforum à 13h32 et la même réponse fausse à 15h07 ici

il a dû avoir marre que je ne lui donne pas tout cuit l'algorithme ...

(ce qui a été finalement fait : c'est pour ça que je signalais à inezer qu'il y en avait un autre ici, sans lui donner le lien directement, luis laissant une chance de chercher un peu par lui-même plutôt que de regarder la solution toute cuite...)

Posté par
carpediem
re : algorithme 01-04-16 à 20:58

Citation :
(même zygomatique, pourtant de bon conseil a fait une toute petite erreur ... conduisant à environ doubler le nombre de boucles exécutées, donnant certes un résultat juste, ce qui lui a donné l'impression que ça marche)


je ne comprends pas :: donne-t-il la bonne réponse ou non (quel que soit le nombre de boucle) ?

Posté par
carpediem
re : algorithme 01-04-16 à 21:14

effectivement il tourne à vide à chaque dernier incrément de p qui est inutilement retiré .... mais il marche ....

Posté par
mathafou Moderateur
re : algorithme 01-04-16 à 21:22

vans1 ne marche pas du tout : son algorithme ne se termine jamais car il contient une boucle sans fin
pour n de 0 à 8
[..]
n prend la valeur 0
fin pour
sans parler d'autres erreurs.

zygomatique oui, il donne un algorithme qui donne la bonne réponse mais ça ne traduit pas la méthode employée

pour info c'est son a = a-p qui ne sert à rien, qui ne traduit pas ce qu'on fait réellement quand on applique cette méthode

avec mon exemple numérique cela voudrait dire :

x = 0 f(x) = -5
x = 1 f(x) = -6
x = 2 f(x) = -5
x = 3 f(x) = 4 terminé, changement de signe

il va donc chercher entre 1 et 3 pour obtenir le chiffre suivant, donc par pas de 0.1 :
x = 1.0 f(x) = -6 calculs inutiles
x = 1.1 ...
...
x = 1.9 ...

x = 2.0 f(x) = -5
x = 2.1 f(x) = -4.559
x = 2.2 f(x) = -4.032
x = 2.3 f(x) = -3.413
x = 2.4 f(x) = -2.696
x = 2.5 f(x) = -1.875
x = 2.6 f(x) = -0.944
x = 2.7 f(x) = 0.1030 terminé, changement de signe

il va donc chercher entre 2.5 et 2.7, donc par pas de 0.01
x = 2.50 idem
...
x = 2.59

x = 2.60 f(x) = -0.944
x = 2.61 f(x) = -0.844619
x = 2.62 f(x) = -0.744072
x = 2.63 f(x) = -0.642353
x = 2.64 f(x) = -0.539456
x = 2.65 f(x) = -0.435375
x = 2.66 f(x) = -0.330104
x = 2.67 f(x) = -0.223637
x = 2.68 f(x) = -0.115968
x = 2.69 f(x) = -0.007091
x = 2.70 f(x) = 0.1030 terminé, changement de signe

etc.

Posté par
mathafou Moderateur
re : algorithme 01-04-16 à 21:24

bon, tu avais compris entre temps.

Posté par
carpediem
re : algorithme 02-04-16 à 12:57

oui je savais que celui devans1 ne marchait pas ....

oui un mauvais encadrement de la solution ....

Posté par
mathafou Moderateur
re : algorithme 02-04-16 à 13:31

et d'ailleurs l'algorithme de zygomatique a été corrigé entre temps
(là bas on peut éditer ses messages à volonté ce qui rend parfois la discussion incompréhensible, vu que le message auquel on répondait a été modifié !!)



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 1694 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 !