Bonsoir,
en classe nous avons fait 2 séances en salle info mais seulement je ne pense pas avoir totalement saisi la manière d'effectuer un programme pour trouver la solution d'une fonction par dichotomie et par balayage, de plus j'ai très peu de notions en algorithmique donc j'aurais besoin de quelques bases.
J'ai seulement compris que par dichotomie, dans le cas d'une fonction continue dans un intervalle [a;b] où on souhaite trouver x tel que f(x)=0, il faut calculer f(a)*f(b) et selon le signe on en déduit que la solution est dans l'intervalle puis on fait f(a)*f((a+b)/2) et f((a+b)/2)*f(b), puis on fait de même pour le résultat négatif si j'ai bien compris ?
Comment faut-il écrire l'algorithme dans ce cas ?
J'ai fait un programme qui ressemble à peu près à ça, néanmoins il ne marche pas, peut-être parce qu'on ne peut pas mettre de "Si" sous une commande "Si" ou "Sinon" (de même que sous une boucle "tant que" je suppose ?)
Variables : a, b
Lire a,b
Si f(a)*f(b)>0 :
|Afficher "pas de sol"
Sinon :
|Si que f(a)*f((a+b)/2)<=0 :
|| b prend la valeur (a+b)/2
|Sinon :
|| a prend la valeur (a+b)/2oui, il faut pouvoir continuer l'itération tant que a et b ne sont pas assez proches. Donc une petite boucle tantQue s'impose. si on veut une précision de 1/100 par exemple :
tantQue (b-a) > 1/100
m prend la valeur (a+b)/2
si f(m)*f(b) < = 0 alors
a = m
sinon
b = m
finTantQue
afficher a
afficher b
Balayage ? là aussi une boucle Tantque la fonction ne change pas de signe on continue
donc essaye quelque chose dans le genre :
h prend la valeur 0.01
Lire a
Lire b
x prend la valeur a
Tant que x < b ET f(x)*f(a) >0 Faire
x prend la valeur x + h
fin Tantque
afficher x
évidemment si on voit que x a dépassé b c'est qu'il n'a pas trouvé de racine
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :