Bonjour, j'aimerais savoir si ce que j'ai fait est juste pour cet exercice :
On considère l'algorithme suivant dans lequel f est une fonction numérique:
Variables :
a,b,c et p
Algorithme
Saisir a,b et p
Tant que b-a>p
c reçoit (a+b)/2
Si f(a)*f(c)<0, b reçoit c
Sinon a reçoit c
Fin Tantque
Sortie
Afficher c
Faites fonctionner l'algorithme avec: f(x)=x²-2, a=1, b=2, p=0.1
Indiquer les valeurs successives des variables a,b et c dans un tableau. Qu'obtenez vous à l'affichage ?
J'obtient le tableau suivant :
a b c
1 2 3/2
1 3/2 5/4
5/4 3/2 11/8
11/8 3/2 23/16
A l'affichage on obtient c = 23/16.
Merci d'avance pour vos réponses.
Quand, je programme cet algorithme avec algobox j'obtient c=1.9375 et je ne comprend pas pourquoi cette valeur n'est pas la même que celle que je trouve en faisant tourner l'algorithme à la main. Je ne trouve pas mon erreur.
D'accord, je viens de me rendre compte de mon erreur j'ai mal rentré la fonction. Est ce que je dois rajouter une ligne dans mon tableau qui est 11/8 23/16 23/16 ?
Oui, il est logique d'aller jusqu'à ce que b-a<0.1, c'est l'encadrement qui fait sortir de la boucle...
Dans la suite de l'exercice; j'ai la question suivante : Représenter graphiquement f sur l'intervalle [1;2] et placer successivement les valeurs des variables a, b et c calculées précédemment. Que constatez vous ? Quel est l'objectif de cet algorithme.
Pour cette question; je dois bien placer toute les valeurs de a, b et c que j'ai obtenues dans le tableau ?
Je voulais aussi savoir si je pouvais faire un graphique ou je peux "placer 1 au lieu de 0 à l'origine ? En fait, je ne vois pas trop comment faire ce graphique sachant que la fonction n'est définie que sur l'intervalle [1;2]
Bonjour blabla3,
Je pense que tu peux démarrer à 1 sur l'axe des abscisses et prendre 16 cm comme unité de longueur sur l'axe horizontal.
Ce sera plus facile pour placer les réels a n , b n , c n avec précision. ( n correspond aux étapes successives de l'algorithme )
L'algorithme donné est un algorithme de dichotomie.
Au fur et à mesure des étapes, on garde la moitié de l'intervalle qui contient la racine de f.
Ci-dessous un graphique qui représente les points ( n , a n ) en rouge et les points ( n , b n ) en bleu pour n entier compris entre 0 et 4.
La droite rose est la droite d'équation y = 2.
L'algorithme a pour but de donner une valeur approchée de 2 à l'aide d'encadrements de plus en plus précis dont l'amplitude est divisée par deux à chaque étape.
Cordialement.
D'accord et sur mon graphique je dois bien placer uniquement les petits a b et c sur l'axe des abscisses et non les grands A,B et C que vous avez placer sur votre graphique ?
Effectivement pour un seul graphique :
tu dois placer a 0 , a 1 , etc ...
tu dois placer b 0 , b 1 , etc ...
tu dois placer c 0 , c 1 , etc ...
Tu n'es pas obligée de parler des points A n , B n , C n mais " why not " !
J'ai envoyé les deux graphiques pour t'aider mais tu peux bien sûr te contenter de ce que ton prof te demande.
Je n'avais pas encore eu ton dernier message.
Tu peux effectivement commencer à n = 1 au lieu de n = 0 comme je l'ai fait.
Il n'y a rien dans ton énoncé qui l'empêche !
D'accord, mais je vais quand même mettre a1, b1... car sans cela on ne se rend pas trop compte de qui est quoi et je trouve ça plus clair !
Dans la suite de l'exercice, on me demande quel est le rôle de la variable p; je sais que quand nous rentrons p =0.1 on a une valeur approchée de racine de 2 à 0.1 près mais je ne vois pas comment justifier cela. Pouvez vous m'aider ?
La boucle tant que b - a > p va s'arrêter la première fois qu'on aura b - a p
Appelons r la racine de f dans [ 1 , 2 ] .
On aura a r
b qui sera un encadrement de r d'amplitude inférieure ou égale à p .
c étant le centre de [ a , b ] , c sera une valeur approchée de r à p / 2 près .
p est un majorant de l'amplitude de l'encadrement de r par a et b.
D'accord, merci pour votre explication. Pour la question d'après qui est déterminer une valeur approchée à 10^-3 près de la solution positive de l'équation -x^3 -3x + 2 = 0; il faut que j'utilise le même algorithme que le précédent en remplaçant la fonction f(x) = x^2-2 par -x^3-3x +2 et p par 0.001 ?
Cherche d'abord par exemple à trouver un encadrement de cette solution positive que j'appelle z entre deux entiers consécutifs si on ne te dit rien sur elle.
Tu auras les valeurs initiales de a et b .
A priori , pour que c soit une valeur approchée de z à 0,001 près , il suffit que p = 2 * 0,001 .
Lorsque b - a p , a
z
b :
on dit que a est une valeur approchée par défaut de z à p près .
on dit que b est une valeur approchée par excès de z à p près .
Lorsque b - a p , a
z
b , c = ( a + b ) / 2 alors on a | z - c |
p / 2.
On dit que c est une valeur approchée de z à p / 2 près .
Ce vocabulaire des approximations ne doit plus être étudié au lycée.
Je pense cependant que ton prof voudra que p = 0,001 afin d'obtenir un encadrement de z d'amplitude inférieure à 0,001 grâce aux deux derniers nombres a et b obtenus grâce à l'algorithme .
Si tu programmes avec Algobox, je te conseille d'aller dans utiliser une fonction numérique , cocher utiliser la fonction F1 , compléter F1 ( x ) = - x * x * x - 3 * x + 2 .
Dans l'algorithme , la condition f ( a ) * f ( c ) s'écrira sur Algobox F1 ( c ) * F1 ( a ) ce qui évite d'avoir une écriture très lourde
et pour un autre exercice , il te suffit de changer F1 ( x ) .
D'accord, merci de votre réponse.
J'ai encore une question à vous poser concernant le principe de l'algorithme.
J'ai compris le principe globalement mais il y a une chose que je comprend pas.
Je vois l fait que si f(a)*f(c)<0 alors f(a) et f(c) sont de signes contraires et 0 est compris entre les 2; donc on donne à b la valeur c pour avoir un intervalle plus précis. Ce que je ne comprend pas c'est pourquoi quand le produit de f(a) et f(c) est positif et donc que f(a) et f(c) sont de même signe on donne à a la valeur c; je sais que c'est pour pouvoir poursuivre l'algorithme mais je ne vois pas pourquoi.
Il est plus facile de raisonner en supposant que f est strictement croissante sur [ a , b ] . Je suppose que f s'annule en z sur [ a , b ] .
Dans ce cas , f ( a ) < 0 < f ( b ).
Quand le produit f ( a ) * f ( c ) est positif , on a obligatoirement f ( c ) < 0 .
a < c < b donc f ( a ) < f ( c ) < f ( b ) vu la stricte croissance de f .
On a aussi f ( c ) < 0 < f ( b ) donc la racine z est dans [ c , b ] .
On remplace donc a par c .
Quand le produit f ( a ) * f ( c ) est négatif , on a obligatoirement 0 < f ( c ) .
a < c < b donc f ( a ) < f ( c ) < f ( b ) vu la stricte croissance de f .
On a aussi f ( a ) < 0 < f ( c ) < 0 donc la racine z est dans [ a , c ] .
On remplace donc b par c .
Regarde les graphiques 1 et 2 que je t'avais envoyés , ils doivent pouvoir t'aider .
A toi de voir ce qui se passe quand f est strictement décroissante sur [ a , b ] .
D'accord merci pour votre réponse j'ai mieux compris; seulement comment peut on être sur que l'on a f(c)<0<f(b) et non f(c)<f(b)<0 ?
Ah oui et n'avez vous pas rajouter un <0 en trop dans le deuxième paragraphe lorsque vous écrivez : f(a)<0<f(c)<0 ?
Tu as raison !
Erreur de ma part , due à un copier-coller mal rectifié !
f ( a ) < 0 < f ( c ) donc la racine z est dans [ a , c ] .
Le problème , c'est qu'une fois envoyé , on ne peut pas éditer le texte pour le corriger. En même temps , cela t'a permis de voir l'erreur donc tu as compris ce qui se passait.
D'accord,
mais je ne comprend toujours pas pourquoi dans le premier paragraphe on a f(c)<0<f(b) et non f(c)<f(b)<0 ?
Premier paragraphe
f ( a ) < 0 et f ( a ) * f ( c ) > 0 donc f ( c ) < 0 .
J'ai supposé que f est strictement croissante sur [ a , b ] et f ( a ) < 0 < f ( b ) .
On a donc f ( c ) < 0 < f ( b ) donc f ( c ) < f ( z ) < f ( b ) donc c < z < b vu la stricte croissance de f donc z appartient à [ c , b ] .
c < z < b est un " meilleur " encadrement de z que a < z < b car il est d'amplitude plus petite ( la moitié en fait ) .
On a b - c = ( b - a ) / 2 < b - a .
Donc on remplace a par c .
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :