Bonjour,
J'ai établi un algorithme me permettant d'afficher les valeurs extrêmes d'un encadrement de c d'amplitude inférieur a 10^-n pour une fonction strictement croissante.
Ici ma fonction est F1(x) = pow(x,5) - 5*x+2
Sauf que mon algorithme m'annonce "interrompu ligne 23 : dépassement de la capacité autorisée pour les boucles"
Où est le soucis ?
Bonjour,
tu penses vraiment qu'un lien vers ton propre disque dur ( C: ) pourrait marcher ailleurs que chez toi ??? j'espère pour toi que non !! (que personne de l'extérieur n'a accès à ton disque dur)
il semblerait que ton algo soit en Algobox, tu peux exporter en fichier texte puis copier coller le texte ici même sans aucun lien externe (interdit de toute façon)
si tu es en mode editeur dans Algobox, c'est même encore plus simple : tu copies colles directement !
généralement ce genre d'erreur est dû au fait que tu t'es grossièrement trompé dans la condition du tant que (conduisant à une boucle sans fin)
Oui désolé je n'ai pas fait attention.
J'ai réussi a trouver mon problème, c'est juste que j'avais pas utilisé la fonction pow pour mettre 10^(-n).
Par contre lorsque je tape la fonction sur ma calculatrice, j'obtiens une solution comprise entre 0,40 et 0,41
Or quand je teste mon algo ici sur [0,1] avec n=-2 j'obtiens une solution comprise entre 0,99 et 1
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 k EST_DU_TYPE NOMBRE
5 m EST_DU_TYPE NOMBRE
6 n EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 LIRE a
9 LIRE b
10 LIRE n
11 LIRE k
12 TANT_QUE ((b-a)>pow(10,n)) FAIRE
13 DEBUT_TANT_QUE
14 m PREND_LA_VALEUR ((a+b)/2)
15 SI (F1(m)<k) ALORS
16 DEBUT_SI
17 a PREND_LA_VALEUR m
18 FIN_SI
19 SINON
20 DEBUT_SINON
21 b PREND_LA_VALEUR m
22 FIN_SINON
23 FIN_TANT_QUE
24 AFFICHER a
25 AFFICHER b
26 FIN_ALGORITHME
Fonction numérique utilisée :
F1(x)=pow(x,5)-5*x+2
cet algorithme ne fonctionne que pour trouver une solution de f(x) = 0 dans un intervalle [a; b] à la condition expresse que f(a)*f(b) soit négative et la fonction monotone dans cet intervalle
je ne comprends pas ton "k" ??
tu cherches à résoudre f(x) = k ?
c'est à dire en fait à résoudre f(x) - k = 0
tu dois donc obligatoirement t'assurer au préalable que (f(a)-k)(f(b)-k) < 0
(par le choix des valeurs de a, b, k)
ou plus précisément compte tenu de ton test sur k que
f(a) < k et f(b) > k et a < b, et la fonction monotone dans [a; b]
(ta fonction n'est pas monotone sur )
sinon ça ne marchera pas : la solution est en dehors de l'intervalle [a; b], ou ton test à l'envers ou résultat erratique car fonction non monotone)
Apparemment tu fournis k = 0 (et on se demande bien à quoi sert ce k si c'est pour résoudre f(x) = 0 !!) et [a; b] = [0; 1]
or f(0) = 2 et f(1) = -2
la condition f(a) < k et f(b) > k n'est donc pas satisfaite au départ
en fait ton test sur k est à l'envers : la fonction est décroissante et pas croissante dans [0; 1]
un algorithme général se fiche complètement de ce sens en utilisant les conditions "même signe" (quel qu'il soit) f(a)*f(m) > 0 ou "signe opposé" f(m)*f(b) < 0
remplacer le test SI (F1(m)
SI ((F1(m)-k)*(F1(a)-k) > 0) ALORS
(pour résoudre f(x) = k)
ou
SI (F1(m)*F1(a) > 0) ALORS
(pour résoudre f(x) = 0)
Oui j'ai essayé donc un autre algorithme :
e étant ma précision
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 TANT_QUE ((b-a)>e) FAIRE
10 DEBUT_TANT_QUE
11 m PREND_LA_VALEUR ((a+b)/2)
12 SI ((F1(a)*F1(m))<=0) ALORS
13 DEBUT_SI
14 b PREND_LA_VALEUR m
15 FIN_SI
16 SINON
17 DEBUT_SINON
18 a PREND_LA_VALEUR m
19 FIN_SINON
20 FIN_TANT_QUE
21 AFFICHER a
22 AFFICHER "< solution <"
23 AFFICHER b
24
25
26 FIN_ALGORITHME
Fonction numérique utilisée :
F1(x)=pow(x,5)-5*x+2
Ici en lançant a=0 b=1 et e =0,001, Algorithme interrompu ligne 9 suite à une erreur dans son exécution (un problème avec e ?)
J'ai rajouté 'Lire e' mais le problème reste le meme
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 ((F1(a)*F1(m))<=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 "< solution <"
24 AFFICHER b
25
26
27 FIN_ALGORITHME
Fonction numérique utilisée :
F1(x)=pow(x,5)-5*x+2
comment as tu fait pour mettre e = 0,001 ???
il n'y a aucune affectation de quelque valeur que ce soit à e dans ton algo
ni "Lire e" ni "e prend la valeur" !!
par ailleurs 0,001 "en français hexagonal" se traduit par 0.001 en informatique (en particulier sur Algobox)
ah si, tiens le "lire e" est réapparu entre temps
il reste le 0,001 qui doit être tapé obligatioiremant sous la forme 0.001
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :