Je viens de commencais le cour sur les algos et j'ai un exercice que je ne comprends pas : pouvais vous maider SVP
1. e=input("e=");
2. a=1;b=2
3. while b-a>e
4 m=(a+b)/2;
5. if m^3/(1+m)>1 then
6.
7. else
8.
9. end;
10. end;
11. afficher ("a="+string(a));
12. afficher ("b="+string(b));
question: 1)quel est le rôle du programme?
2)Ecrire ligne 6 et 8 .
3)que représent e.
4) quelles sont les valeurs a et b affichées pour :
e=10^2 ? e= 10^4 ? e=10^6 ?
MERCI DE VOTRE AIDE
Bonjour Anthh,
Un indice : regarde bien la ligne 5 en pensant à la recherche de solution d'une équation.
il s'agit de l'algorithme de recherche par dichotomie d'une racine d'une équation réelle
on regarde ce que donne l'image du milieu du segment, et suivant son signe, on restreint le segment à la moitié gauche ou droite.
une solution commentée avec Algobox
--------------------------------------------------------------------------------
Algorithme de recherche de racine d'une équation par la méthode de la dichotomie
'a' et 'b' sont les bornes de l'intervalle initial
'e' est l'erreur acceptable
La fonction est définie dans l'onglet "Utiliser une fonction numérique"
--------------------------------------------------------------------------------
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 fa EST_DU_TYPE NOMBRE
7 fm EST_DU_TYPE NOMBRE
8 DEBUT_ALGORITHME
9 // Saisie des bornes initiales et de la marge d'erreur
10 LIRE a
11 AFFICHER "a="
12 AFFICHER a
13 LIRE b
14 AFFICHER "b="
15 AFFICHER b
16 LIRE e
17 AFFICHER "e="
18 AFFICHER e
19 // Initialisation de l'image de la borne inférieure
20 fa PREND_LA_VALEUR F1(a)
21 // On boucle tant que l'écart entre les bornes est supérieur à la marge d'erreur
22 TANT_QUE (abs(b-a)>e) FAIRE
23 DEBUT_TANT_QUE
24 // Calcul du milieu de l'intervalle et de son image
25 m PREND_LA_VALEUR (a+b)/2
26 fm PREND_LA_VALEUR F1(m)
27 // test si cette image est du signe de l'image de la borne inférieure ou du signe opposé
28 SI (fa*fm>0) ALORS
29 DEBUT_SI
30 // la racine est entre m et b, on déplace la borne inférieure
31 a PREND_LA_VALEUR m
32 fa PREND_LA_VALEUR fm
33 FIN_SI
34 SINON
35 DEBUT_SINON
36 // la racine est entre a et m, on déplace la borne supérieure
37 b PREND_LA_VALEUR m
38 FIN_SINON
39 FIN_TANT_QUE
40 AFFICHER "valeur approchée racine entre a et b : "
41 AFFICHER m
42 FIN_ALGORITHME
Fonction numérique utilisée : F1(x)=pow(x,3)/(1+x)-1
--------------------------------------------------------------------------------
exemple d'exécution avec ta fonction
--------------------------------------------------------------------------------
***Algorithme lancé***
a=1
b=2
e=1e-7
valeur approchée racine entre a et b : 1.3247179
***Algorithme terminé***
--------------------------------------------------------------------------------
et un graphe de ta fonction
que je suis déçu
je pensais que ça t'aiderait à comprendre ce qu'il fallait faire
et toi qui ne demandais qu'à obtenir la solution
mais à quoi te servirait-elle si tu n'apprends rien grâce à elle ?
non dsl maise je ne vois pas. peux tu me rééxpliquer stp je veux apprendre stp, sauf que je connais pas algobox mais python moi.
tu dis connaître le langage Python et tu te révèles incapable de compléter l'algo demandé ?
le langage hyper simple de Algobox est bien mieux adapté à une première approche de la programmation par des débutants.
et de toutes manières, un algorithme peut se décrire en un langage quelconque, le point important est que la séquence des instructions qu'il réalise soit comprise, justifiée.
l'algorithme de dichotomie fonctionne ainsi (je vais le faire sur ton exemple) :
on cherche une valeur approchée de s dans l'intervalle [1;2] telle que f(s)=0
le point important ici est que la fonction f soit monotone sur l'intervalle (la tienne est croissante) et que les signes de f(1) et f(2) soient opposés
alors, puisque f est continue sur cet intervalle, on a 1<s<2
on choisit alors le milieu de l'intervalle
et on calcule l'image de ce milieu
on compare les signes de f(1) et f(m) (c'est le produit de la ligne 28)
sont-ils de même signe ? s est entre m et 2, et alors on remplace 1 par m et f(1) par f(m)
sont-ils de signes opposés ? s est entre 1 et m, et alors on remplace 2 par m
et on recommence avec ces nouvelles bornes, [1;m] ou [m;2]
on sort de cette boucle lorsque la distance entre les bornes, qui se réduit de moitié à chaque boucle, est inférieure à une marge d'erreur acceptable.
tu me donneras ta solution en langage Python, ou quoi que tu veuilles, que je le connaisse ou pas, je saurai te dire s'il est conforme, à défaut de vérifier s'il est syntaxiquement correct.
Bonjours,
Je viens de commencer le cour sur les algos et j'ai un DM toute les semaines mais là je ne comprends pas.J'ai regardeé dans mons livre et je ne trouve rien .
Pouvais vous maider SVP.
1. e=input("e=");
2. a=1;b=2
3. while b-a>e
4 m=(a+b)/2;
5. if m^3/(1+m)>1 then
6.
7. else
8.
9. end;
10. end;
11. afficher ("a="+string(a));
12. afficher ("b="+string(b));
Question: 1)quel est le rôle du programme?
2)Ecrire ligne 6 et 8 .
3)que représent e.
4) quelles sont les valeurs a et b affichées pour :
e=10^2 ? e= 10^4 ? e=10^6 ?
MERCI POUR VOTRE AIDE
*** message déplacé ***
* Océane > le multi-post n'est pas toléré sur le forum ! *
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :