Bonjour,
J'ai un DM à rendre demain, mais je ne comprend rien, c'est comme du chinois pour moi x)
ÉNONCE:
[i]Soit f la fonction définie sur [1;2] par f(x) = x3+3x-5.
1.a. Par lecture graphique, vérifier que l'équation f(x) = 0 admet une unique solution appartenant à l'intervalle [1;2] ; on appele cette solution.
b. Calculer f(1.5) ; que peut-on en déduire pour l'encadrement de ?
2.a. Programmer l'algorithme de dichotomie présenté en cours avec la calculatrice
b. utiliser ce programme pour donner un encadrement de d'amplitude inférieure à 0.01.
3. Que faut-il modifier dans l'algorithme du cours pour que le traitement s'effectue jusqu'à ce que l'amplitude de l'encadrement devienne inférieure à un nombre e donné?
Algorithme du cours :
[ Voir image] (Désolé si j'ai scanné du texte, mais je ne savais pas comment écrire l'algorithme comme il est fait sur cette image. C'est l'algorithme de mon cours)
Je vous remercie beaucoup d'avance!
ElowDiva
Euh... la condition est
Si f(a) x f(m) = 0
Alors b prends la valeur m
Sinon a prends la valeur m
Fin si
Enfin il me semble......
Tout à l'heure tu as écrit, et c'était exact, que le traitement s'arrête à "Fin pour"
Justement, ce traitement... il est exécuté "pour...." et donc la condition de son arrêt et dans cette ligne "pour..."
Quelle est donc cette condition de l'arrêt du traitement ?
Voici l'algorithme de ton cours dans le langage d'Algobox
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 m EST_DU_TYPE NOMBRE
5 N EST_DU_TYPE NOMBRE
6 i EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 LIRE a
9 LIRE b
10 LIRE N
11 POUR i ALLANT_DE 1 A N
12 DEBUT_POUR
13 m PREND_LA_VALEUR (a+b)/2
14 SI ((a*a*a+3*a-5)*(m*m*m+3*m-5)<0) ALORS
15 DEBUT_SI
16 b PREND_LA_VALEUR m
17 FIN_SI
18 SINON
19 DEBUT_SINON
20 a PREND_LA_VALEUR m
21 FIN_SINON
22 FIN_POUR
23 AFFICHER "a = "
24 AFFICHER a
25 AFFICHER "b = "
26 AFFICHER b
27 FIN_ALGORITHME
"Pour..." quelle condition le traitement est-il arrêté ?
Désolé, mais je dois quitter l' pour ce soir...
Dommage car cet algorithme est très intéressant et peut être tout à fait utile !
J'ai fait le nouvel algorithme, modifié comme le demande l'énoncé, et il marche très bien !
Merci beaucoup de m'avoir aidé! Par contre, je ne saurai pas répondre à votre question... J'ai beau creuser dans ma tête, mais je trouve pas de solutions... enfin, j'espère que notre professeur sera indulgente Ce serait bien d'avoir quelques jours de plus lol.
Encore merci et à bientôt!
ElowDiva
Alors je réponds moi-même...
Dans ce que tu as posté :
"Pour i variant de 1 à N"
Dans ce que j'ai posté (ligne 11)
"Pour i allant de 1 à N"
Cela signifie que le traitement est exécuté N fois
une première fois pour i = 1
une deuxième fois pour i = 2
...
une Nème fois pour i = N
et que pour i = N + 1 le traitement n'est pas exécuté mais que le programme saute à la ligne "Fin Pour"
Donc, la condition d'arrêt du traitement est que ce traitement ait été exécuté N fois.
L'énoncé te demande une autre condition d'arrêt.
On ne demande plus au programme d'exécuter un nombre de fois défini à l'avance mais on demande au programme de s'arrêter quand un encadrement suffisamment petit aura été obtenu. C'est une autre manière d'arrêter le programme qui permet d'obtenir un résultat de "précision" souhaitée sans avoir à deviner avant de lancer le programme en combien de traitements cet encadrement sera obtenu. C'est donc une vraie amélioration du programme.
La modification du programme peut se faire ainsi (le programme n'est pas totalement "sûr" ; le minimum serait de vérifier que les nombres a et b conviennent, c'est-à-dire encadrent bien une solution)
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 m EST_DU_TYPE NOMBRE
5 e EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 LIRE a
8 LIRE b
9 LIRE e
10 TANT_QUE (b-a>e) FAIRE
11 DEBUT_TANT_QUE
12 m PREND_LA_VALEUR (a+b)/2
13 SI ((a*a*a+3*a-5)*(m*m*m+3*m-5)<0) ALORS
14 DEBUT_SI
15 b PREND_LA_VALEUR m
16 FIN_SI
17 SINON
18 DEBUT_SINON
19 a PREND_LA_VALEUR m
20 FIN_SINON
21 FIN_TANT_QUE
22 AFFICHER "a = "
23 AFFICHER a
24 AFFICHER "b = "
25 AFFICHER b
26 FIN_ALGORITHME
L'essentiel du changement est à la ligne 10
"Tant que b-a > e"
Cela signifie qu'aussi longtemps que la largeur de l'encadrement de la solution par a et b est supérieure à une petite valeur e décidée à l'avance, alors le traitement est continué (à chaque traitement la largeur de l'intervalle d'encadrement est divisé par deux). Quand la largeur de l'encadrement est inférieure ou égale à e alors ce traitement n'est plus continué et le programme passe à la ligne 21 "Fin Tant que" pour afficher les deux valeurs qui encadrent la solution
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :