Bonjour, je suis bloquée à une question de mon exercice car je ne sais pas faire d'algorithme, si vous pouviez m'aider ce serait gentil =)
On considère la fonction f(x)=-2^3-7x+4 défini sur [0;1]. Le but est d'obtenir une valeur approchée de la solution à l'équation f(x)=0
Ecrire un algorithme permettant de déterminer une valeur approchée de à 10^-1 près, puis à 10^-n près, où n est un entier naturel supérieur ou égal à 1.
Je ferai la dérivée, puis delta.
Un tableau de signe, de variations, et un balayage pour trouver alpha
tu y arriverais sans doute comme ça (dérivée, variation de f(x), etc..)
mais ce qui nous intéresse ici, c'est le balayage.
ton intervalle d'étude est [0;1] la fonction est continue et décroissante sur cet intervalle.
appellons ton intervalle [a;b]
f(a) = f(0) = 4 (positif)
f(b) = f(1) = -5 (négatif)
donc d'après le théorème des valeurs intermédiaires, il existe une valeur c telle que f(c)=0 (là ou la courbe coupe l'axe des abscisses), avec c compris entre a et b (entre 0 et 1 ).
Tu peux travailler par dichotomie : réduire ton intervalle par étape successives
tu regardes ce qui se passe au milieu de ton intervalle
ici : pour c=0.5
si f(c) est négatif (comme f(b) ) tu es allée 'trop loin' ==> tu gardes a comme borne, et tu places b à la place de c
si f(c) >0, tu gardes b comme borne, et tu places a à la place de c.
ainsi tu as réduit ton intervalle, et tu as toujours une valeur positive et une valeur négative.
Tu peux recommencer jusqu'à ce que l'intervalle soit très petit (par exemple à 10-1 près)..
tu vois ?
d'accord, oui je vois, mais c'est le fait d'écrire un algorithme qui me bloque, je ne comprends pas comment faire.
avant d'écrire l'algorithme, il faut etre d'accord sur ce qu'on va lui demander de faire..
Il faut donc que tu aies compris cette "histoire" de dichotomie.
pour l'algo, en langage naturel, on va d'abord préciser les variables :
a, b, c, fc, fb sont des nombres
initialisation :
a prend la valeur 0
b prend la valeur 1
c prend la valeur 0.5
fc prend la valeur (-2*(0.5)^3- 7*0.5 + 4)
fb prend la valeur -5
ensuite on va réduire l'intervalle
si f(c) < 0 alors
b prend la valeur c
sinon
a prend la valeur c
fin si
c prend la valeur (a+b)/2
fc prend la valeur (-2*(c)^3- 7*c + 4)
fb prend la valeur (-2*(b)^3- 7*b + 4)
ce pavé rouge, il faut l'executer tant que l'intervalle est trop grand
saurais tu ajouter l'instruction TANT QUE qui va bien ?
voici un algorithme en algobox qui me semble répondre à ton problème..
Je te laisse vérifier et le corriger au cas où...
dans p, on donne la précision souhaitée (si on donne p=2, la précision sera 10-2)
V A R I A B L E S
a , b, c sont des nombres
f c , fb et p sont des nombres
Debut
a P R E N D _ L A _ V A L E U R 0
b P R E N D _ L A _ V A L E U R 1
c P R E N D _ L A _ V A L E U R 0 . 5
f c P R E N D _ L A _ V A L E U R - 2 * ( c * c * c ) - ( 7 * c ) + 4
f b P R E N D _ L A _ V A L E U R - 2 * ( b * b * b ) - ( 7 * b ) + 4
L I R E p
p P R E N D _ L A _ V A L E U R p * ( - 1 )
p P R E N D _ L A _ V A L E U R p o w ( 1 0 , p )
A F F I C H E R p
T A N T _ Q U E ( a b s ( ( a - b ) / 2 ) > p ) F A I R E
D E B U T _ T A N T _ Q U E
S I ( ( f c * f b ) > 0 ) A L O R S
D E B U T _ S I
b P R E N D _ L A _ V A L E U R c
F I N _ S I
S I N O N
D E B U T _ S I N O N
a P R E N D _ L A _ V A L E U R c
F I N _ S I N O N
c P R E N D _ L A _ V A L E U R ( a + b ) / 2
f c P R E N D _ L A _ V A L E U R - 2 * ( c * c * c ) - ( 7 * c ) + 4
f b P R E N D _ L A _ V A L E U R - 2 * ( b * b * b ) - ( 7 * b ) + 4
F I N _ T A N T _ Q U E
A F F I C H E R c
A F F I C H E R f c
F I N _ A L G O R I T H M E
Est ce que ça te va ?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :