Recherche de zero d'une fonction MARMAD ANAS MPSI -2.

Slides:



Advertisements
Présentations similaires
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Advertisements

APPROXIMATION DE PI   : Battre 3,14 ?. LE SUJET Trouver des méthodes permettant de trouver des valeurs approchées de pi les plus fines possibles et.
Chapitre 4 la représentation des nombres. Chapitre 4 : La représentation des nombres 1 - Introduction 1.1 – Notion de mot 2 - La représentation des entiers.
IDENTITÉS REMARQUABLES
Leçon 59 Problèmes conduisant à la résolution d'équations différentielles.
Algorithme de recherche
Outils de Recherche Opérationnelle en Génie MTH 8414
Continuité Montage préparé par : André Ross
Pierre Joli Cours de Mathématique Pierre Joli
Deuxième partie : La courbe d’indifférence
CHAPITRE 3 Calcul numérique et puissances
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Techniques de décomposition
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Représentation de l’information en binaire:
chapitre 11 Fonctions inverse et homographiques.
chapitre 9 Fonctions carré et polynômiale degré 2.
Les inégalités et les inéquations
L’ algorithme de dichotomie réalisait cela :
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
3°) Décomposition d’un nombre entier en produit d’entiers :
Techniques d’Optimisation Chapitre 2: Problème de flôt
Fonctions affines.
Information, Calcul, Communication
2°) Déterminez l’organigramme pour déterminer les diviseurs d’un nombre ( premier ou pas ). Méthode : on va …
Algorithme de Dichotomie
Chapitre 2 Vecteurs et Repérage dans le plan
Exercice 2 Soit la série statistique
Algorithme de Dichotomie
Exercice 7 : résoudre sin x + cos x = (√6)/2
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Chapitre 2: Les équations et les inéquations polynômes
Exercice 6 : Soit la pyramide suivante : 1000 Ligne 1
C1 – Interpolation et approximation
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
4.2 Estimation d’une moyenne
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
3g2 Théorème de Thales cours mathalecran d'après
BONNE SOIREE année HARIRI Saïd PANIER Stéphane DEMOUVEAU
Formules de calculs et Fonctions. Structure des formules de calcul Commencez toujours votre calcul par le signe =, ensuite sans laisser d’espaces, placez.
Exercice 4 : Soit la fonction f définie sur un ensemble Df
Filtre en traitement du signal entrée filtre sortie e s h
CHAPITRE 3 Calcul numérique et puissances
OPTIMISATION 1ère année ingénieurs
I Définition : Elle est définie ...
SIMPLIFICATION D’UNE RACINE CARREE.
Généralités sur les fonctions
2.4 La loi de vitesse d’une réaction chimique
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus.
MATHÉMATIQUES FINANCIÈRES I
CHAPITRE 6 Stabilité des SA.
l’algorithme du simplexe
chapitre 9 Fonctions carré et polynômiale degré 2.
PROGRAMMATION SCIENTIFIQUE EN C
Flowchart Itération Cours 04.
Nombres premiers : ce sont des nombres entiers positifs, qui ne sont divisibles que par 1 et eux- mêmes. Exemples : 24 est divisible par 2, par 3, par.
Travaux Pratiques de physique
PROGRAMMATION SCIENTIFIQUE EN C
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
Question 1 Développer 5(x + 3).
PROGRAMMATION SCIENTIFIQUE EN C
2°) Déterminez l’organigramme pour déterminer les diviseurs d’un nombre ( premier ou pas ). Méthode : on va …
Chapitre I Modélisation optimisation
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
II Fonctions polynômes degré 2
Tableaux : Algorithmes de recherches
Outils de Recherche Opérationnelle en Génie MTH 8414
Dérivation – Fonctions cosinus et sinus
La programmation dynamique
Transcription de la présentation:

Recherche de zero d'une fonction MARMAD ANAS MPSI -2

Définition d’ un algorithme de recherche d'un zéro d’une fonction Dichotomie Principe de la méthode  Preuve de la méthode dichotomique  Terminaison  La complexité Graphiquement Algorithme Programmation en Python Exemple

Un algorithme de recherche d'un zéro d’une fonction est une méthode numérique ou un algorithme de recherche d’une valeur approchée d’un x vérifiant f(x) = 0, pour une fonction donnée d. Ici, x est un nombre réel appelé zéro de f ou lorsque f est polynomiale, racine de f.

La méthode de dichotomie ou méthode de la bissection est l'algorithme le plus simple pour trouver des zéros d'une fonction continue : commencer avec deux points a et b qui encadrent un zéro de la fonction, et à chaque itération, choisir l’un des deux intervalles [a, c] ou [c, b], c = (a + b) ⁄ 2 étant le milieu de a et b. L’algorithme repose sur le choix du sous- intervalle de [a, b] qui contient un zéro. Dans la plupart des cas, la méthode de dichotomie garantit la convergence vers un zéro lorsque la fonction est continue. Sa progression dans la recherche est plutôt lente, puisque sa vitesse de convergence est linéaire

On considère deux nombres réels a et b et une fonction réelle f continue sur l'intervalle [a, b] telle que f(a) et f(b) soient de signes opposés. Supposons que nous voulions résoudre l'équation f(x) = 0. D'après le théorème des valeurs intermédiaires, f a au moins un zéro dans l’intervalle [a, b]. La méthode de dichotomie consiste à diviser l’intervalle en deux en calculant m = (a+b) / 2. Il y a maintenant deux possibilités : ou f(a) et f(m) sont de signes contraires, ou f(m) et f(b) sont de signes contraires. L’algorithme de dichotomie est alors appliqué au sous- intervalle dans lequel le changement de signe se produit, ce qui signifie que l’algorithme de dichotomie est récursif.

L’erreur absolue de la méthode de dichotomie est au plus b-a /2 n+1, après n étapes car l'erreur est diminuée de moitié à chaque étape. Ainsi, la méthode converge linéairement, ce qui est très lent par comparaison avec la méthode de Newton. L'avantage par rapport à cette dernière est son domaine d'application plus vaste : il suffit seulement que f(a) et f(b) soient de signes opposés et qu'on puisse déterminer le signe de f(m) à chaque itération. De plus, si l'on se donne la tolérance relative ε, on sait majorer le nombre d'itérations nécessaires pour satisfaire cette tolérance : 2 n+1 ≤ 1/ε

Soit [a, b] l’intervalle de recherche et f continue sur [a, b] :  f (a k )f (b k ) < 0 est un invariant de boucle (démonstration par récurrence)  ∀ k, ∃ un zéro de f dans [a k, b k ]  En particulier, en sortie de boucle x 0 ∈ [a n, b n ] avec b n − a n < ε soit x 0 − ε < x < x 0 + ε

Montrons que l’algorithme termine toujours :  Soit u k = (b k − a k )  Par récurrence : u k = (b-a) / 2 k  Donc (u k ) décroissante et en +∞ : u k → 0  Donc ∀ ε > 0, ∃ n 0 ∈ N tel que u n0 < ε et l’algorithme termine.

La complexité de la méthode dichotomique est : 0 (log 2 (b-a/ε))  Pour démontrer ca, soit n le nombre d’itérations effectuées à la sortie de la boucle or (b n − a n ) ≤ ε, avec (b n − a n ) =(b 0 - a 0 )/2 n donc [(b 0 - a 0 )/2 n ] ≤ ε d’ou la complexité est dominé par n =log 2 (b-a/ε)

 On cherche le zéro d’une fonction sur un intervalle ]a,b[, c’est-à-dire on cherche x tel que f (x ) = 0.  On va faire des hypothèses : on sait calculer f en tout point ; la fonction f est continue ; f (a) et f (b) sont de signes différents,

Par exemple : y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b)

y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b)

Ou encore : y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b)

Mais pas : y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b)

Principe de la méthode y = f (x )y = f (x ) x a b

y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b)

y = f (x )y = f (x ) x a f (a)f (a) b f ( b ) f ( a ) et f ( b ) sont de signes opposés : on est surs qu’il existe un zéro dans ] a,b [.

y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b) 2 On regarde au milieu, au point m = a + b pour voir le signe de f (m).f (m).

y = f (x )y = f (x ) x a f (a)f (a) b f (b)f (b) m 2 f (m).f (m).

x a b f (b)f (b) m y = f (x )f (m)f (a)y = f (x )f (m)f (a) 2 f (m).f (m).

x a b m y = f (x )f (m)f (a)y = f (x )f (m)f (a) f ( b ) Ici, f ( m ) et f ( a ) sont de même signe, on n’est pas surs qu’il y ait un zéro entre a et m

x a b m y = f (x )f (m)f (a)y = f (x )f (m)f (a) f ( b ) par contre, on est surs qu’il y a en a un entre m et b.

x a b m y = f (x )f (m)f (a)y = f (x )f (m)f (a) f ( b ) par contre, on est surs qu’il y a en a un entre m et b.

x a b m y = f (x )f (m)f (a)y = f (x )f (m)f (a) f ( b ) On s’est ramenés au problème du début : il suffit de recommencer

x b m y = f (x )f (m)y = f (x )f (m) a f ( b ) On doit donc refaire pareil en mettant a en m

x b f (b)f (b) a y = f (x )f (a)y = f (x )f (a) m

x b a y = f (x )f (a)y = f (x )f (a) m f ( m ) f ( b ) f ( m ) est d’un autre signe que f ( a ), il y a avec certitude un zéro entre les deux.

x b a y = f (x )f (a)y = f (x )f (a) m f ( m ) f ( b ) f ( m ) est d’un autre signe que f ( a ), il y a avec certitude un zéro entre les deux.

x b a y = f (x )f (a)y = f (x )f (a) m f (m)f (b)f (m)f (b)

x b a y = f (x )f (a)y = f (x )f (a) f (m)f (b)f (m)f (b) mbmb

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b)

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) On s’est ramenés au problème du début encore une fois.

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) L’intervalle ] a,b [ étant plus petit, on a amélioré la précision.

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) Le zéro est à nouveau dans ] a,b [

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) La valeur approchée que l’on peut donner est...

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) a+b2a+b2 La valeur approchée que l’on peut donner est x 0 ≃ a + b 2

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) a+b2a+b2 Et l’erreur maximale (la précision) est

x a y = f (x )f (a)y = f (x )f (a) b f (b)f (b) a+b2a+b2 b−a b−a22b−a b−a222 Et l’erreur maximale (la précision) est b−a 2

y = f (x )y = f (x ) x

y = f (x )y = f (x ) x

y = f (x )y = f (x ) bbb x b

y = f (x )y = f (x ) bbb x b

 entrée de l’algorithme : a, b, f,ε ;  on suppose que l’utilisateur est intelligent et que on a bien f (b) et f (a) de signes différents (en pratique il faudrait le vérifier) ;  tant que l’on a pas atteint la précision souhaité faire :  m est le milieu de [a,b], puis  si f (m) est de même signe que f (a), alors il y a un zéro est  entre m et b, donc je prends a ← m et je recommence ;  sinon c’est qu’il y a un zéro est entre a et m et donc je  prends b ← m et je recommence ;  (il faut gérer le cas improbable mais possible où f (m) = 0) ;  J’ai atteint la précision souhaitée : je renvoie l’estimation de x 0 : ( a+b/2)

Si on veut préciser ε : ( par exemple ε = ) 1.def dicho (f, a, b, epsilon = 1e-8): 2. while b-a > 2*epsilon: 3. m = (a + b)/ 2 4. if f(m)==0: 5. return m 6. elif f(a)*f(m) < 0: 7. b = m 8. else : 9. a= m 10. return (a+b)/2

on va effectuer des calculs sur la fonction f(x)=x 2 – 5 et on va appeler cette fonction f. Pour se faciliter la suite, on va créer cette fonction : Def f(x): return x**2-5 Pour résoudre l'équation f(x)=0, on cherche un intervalle sur lequel on est certain que f s'annule. C'est le cas pour [1;3] parce que f(1) est négatif et f(3) est positif. La méthode de dichotomie vise à resserrer un tel intervalle. On constate ci-dessous que la fonction f est traitée comme une entrée de l'algorithme au même titre que les bornes a et b de l'intervalle :

La résolution de l'équation x 2 =0 n'est pas terminée, puisque le script ci-dessus n'a donné qu'une seule des deux solutions de cette équation. Par ailleurs, la solution trouvée n'est affichée qu'à près. def zero (f, a, b): if f(a)*f(b)>0 : print ('pas de solution entre '+str(a)+' et '+str(b)+'!') return 0 while ( abs (a-b)>1e-14): m=(a+b)/2. If f(m)*f(a)>0: a=m else : b=m print ('la solution de f(x)=0 est '+str(m)) return m print (zero(f,1,3))

1.import math 2.def f(x): 3. return x**2-5 4.Def dicho (f,a,b,epsilon) : 5. if (math.fabs(a-b)<=epsilon) : 6. return (a+b)/2 7. else : 8. if f(a)*f((a+b)/2)<=0 : 9. return dicho (a,(a+b)/2,f,epsilon) 10. elif f(b)*f((a+b)/2)<=0 : 11. return dicho (b,(a+b)/2,f,epsilon)