Méthode de la fausse position 372412 31395731 2008-07-08T07:03:05Z 212.194.246.59 /* La méthode */ [[Image:Regula falsi method.png|thumb|250px|Étapes successives de la méthode ''regula falsi'' avec l'intervalle [a<sub>1</sub>;b<sub>1</sub>] comme point de départ. La racine de la fonction est le point en rouge.]] En [[analyse numérique]], la '''méthode de la fausse position''' ou '''méthode regula falsi''' est un [[algorithme de recherche d'un zéro d'une fonction]] qui combine les possibilités de la [[méthode de dichotomie]] et de la [[méthode de la sécante]]. ==La méthode == Comme la méthode de dichotomie, la méthode de la fausse position commence par deux points ''a''<sub>1</sub> et ''b''<sub>1</sub> tels que ''f''(''a''<sub>1</sub>) et ''f''(''b''<sub>1</sub>) soient de signes opposés, ce qui implique d’après le [[théorème des valeurs intermédiaires]] que la fonction ''f'' possède au moins un zéro dans l’intervalle [''a''<sub>1</sub>, ''b''<sub>1</sub>]. La méthode consiste à produire une suite décroissante d’intervalles [''a''<sub>''k''</sub>, ''b''<sub>''k''</sub>] qui contiennent tous un zéro de ''f''. À l’étape ''k'', le nombre :<math> c_k = a_k - \frac{a_k-b_k}{f(a_k)-f(b_k)} f(a_k) </math> est calculé. Comme expliqué ci-dessous, ''c''<sub>''k''</sub> est l’abscisse de l’intersection de la droite passant par (''a''<sub>''k''</sub>, f(''a''<sub>''k''</sub>)) et (''b''<sub>''k''</sub>, f(''b''<sub>''k''</sub>)) avec l'axe des abscisses, que nous appelerons pour simplifier ''zéro de la sécante''. Si f(''a''<sub>''k''</sub>) et f(''c''<sub>''k''</sub>) sont de mêmes signes, alors nous posons ''a''<sub>''k''+1</sub> = ''c''<sub>''k''</sub> et ''b''<sub>''k''+1</sub> = ''b''<sub>''k''</sub>, sinon nous posons ''a''<sub>''k''+1</sub> = ''a''<sub>''k''</sub> et ''b''<sub>''k''+1</sub> = ''c''<sub>''k''</sub>. Ce procédé est répété jusqu’à ce que le zéro soit approché de suffisamment près. La formule ci-dessus est également employée dans la méthode de la sécante, mais la méthode de la sécante retient systématiquement les deux derniers points calculés, alors que la méthode de la fausse position retient deux points qui encadrent certainement un zéro. D'autre part, la seule différence entre la méthode de la fausse position et la méthode de dichotomie est l’utilisation la relation ''c''<sub>''k''</sub> = (''a''<sub>''k''</sub> + ''b''<sub>''k''</sub>) / 2. ===Recherche du ''zéro de la sécante'' === Étant donnés ''a'' et ''b'', nous construisons la droite passant par les points (''a'', ''f''(''a'')) et (''b'', ''f''(''b'')), comme dans la figure ci-contre. Remarquons que cette droite est une [[sécante]] ou une corde du graphe de la fonction ''f''. En utilisant la [[pente]] et un point, l’équation de la droite peut s’écrire :<math> y - f(b) = \frac{f(b)-f(a)}{b-a} (x-b). </math> Nous déterminons maintenant, ''c'' l’abscisse du point d’intersection de cette droite avec l’axe des abscisses (zéro de la sécante) donnée par :<math> f(b) + \frac{f(b)-f(a)}{b-a} (c-b) = 0. </math> La résolution de l’équation précédente donne ''c''<sub>''k''</sub>. ==Analyse== Si les valeurs initiales ''a''<sub>0</sub> et ''b''<sub>0</sub> sont prises telles que ''f''(''a''<sub>0</sub>) et ''f''(''b''<sub>0</sub>) soient de signes opposés, alors la méthode de fausse position convergera vers un zéro de ''f''. La [[vitesse de convergence]] sera typiquement « super-linéaire », ainsi plus rapide que la méthode de dichotomie, mais plus lente que la méthode de la sécante. ==Exemple de programme== Le programme suivant en [[langage C]] a été écrit en privilégiant la clarté au dépens de l’efficacité. Il a pour objectif de résoudre le même problème que résolvaient les programmes écrits pour illustrer les [[méthode de Newton|méthodes de Newton]] et de la [[méthode de la sécante|sécante]] et cherche un nombre strictement positif ''x'' vérifiant cos(''x'') = ''x''<sup>3</sup>. Ce problème est transformé en un problème de recherche de zéro de la fonction ''f'' définie par ''f''(''x'') = cos(''x'') - ''x''<sup>3</sup> = 0. '''#include''' <stdio.h> '''#include''' <math.h> &nbsp; '''double''' f('''double''' x) { '''return''' cos(x) - x*x*x; } &nbsp; '''double''' FalsiMethod('''double''' s, '''double''' t, '''double''' e, '''double''' m) { '''int''' n; '''double''' r; '''for''' (n = 1; n <= m; n++) { r = t - f(t) * (s - t) / (f(s) - f(t)); '''if''' (f(r) < e) '''return''' r; '''if''' (f(s) * f(r) < 0) t = r; '''else if''' (f(r) * f(t) < 0) s = r; } '''return''' r; } &nbsp; '''int''' main('''void''') { printf("%0.15f\n", FalsiMethod(0, 1, 5E-11, 100)); '''return''' 0; } Après l’exécution de ce programme, le résultat final est d’approximativement 0,865474032979005. == Histoire == Les documents les plus anciens ayant résisté au temps et témoignant de la connaissance et de la compréhension de la méthode de la fausse position remontent à une date estimée entre [[200 av. J.-C.]] et [[100]]. La méthode a été trouvée dans un texte chinois antique intitulé [[les neuf chapitres sur l'art mathématique]] (九章算術). Dans ce texte, cependant, les exemples de problèmes posés appliquent la méthode de la fausse position aux équations linéaires uniquement, et les solutions sont atteintes en seulement une étape. En Occident, cette méthode a été beaucoup utilisée par les mathématiciens [[Fibonacci]], [[Pacioli Luca]] et [[Recorde Robert]], [[Évariste Galois|Galois]]. == Références == * Steven C. Chapra, Raymond P. Canale, ''Numerical methods for Engineers (fifth edition)'', 2006 * Richard L. Burden, J. Douglas Faires (2000), ''Numerical Analysis, (7th Ed)'', 2000, Brooks/Cole. ISBN 0534382169 ==Lien externe== [http://serge.mehl.free.fr/anx/fauss_pos.html Article de ChronoMath sur la méthode de la fausse position] {{Méthodes de résolution}} [[Catégorie:Algorithme de recherche d'un zéro d'une fonction]] {{portail mathématiques}} [[de:Regula Falsi]] [[en:False position method]] [[es:Método de la regla falsa]] [[fi:Regula falsi -menetelmä]] [[it:Metodo di falsa posizione in Fibonacci]] [[nl:Regula falsi]] [[pl:Regula falsi]]