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
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
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...
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...)
effectivement il tourne à vide à chaque dernier incrément de p qui est inutilement retiré .... mais il marche ....
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.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :