Revenir
Revenir

Algorithme et programmation

La méthode de la fausse position permet de déterminer une valeur approchée de la solution d'une équation...

Sommaire

Activité CAPYTALE : méthode de la fausse position
Étude théoriquePrincipe de la méthodeJustification de la méthodeExpression par récurrenceEt dans les autres cas ?
ImplémentationImplémentation en Python

Activité CAPYTALE : méthode de la fausse position


Étude théorique

Principe de la méthode

La méthode de la fausse position permet de déterminer une valeur approchée de la solution d'une équation du type
f(x)=0
, sous certaines hypothèses pour la fonction
f
.
Dans un premier temps, on considère que la fonction 
f
est convexe et croissante sur un intervalle
]a;b[
. On suppose par ailleurs que
f(a)<0
 et que
f(b)>0
. La fonction 
f
s'annule donc sur l'intervalle 
[a;b]
(il s'agit du théorème des valeurs intermédiaires qui est abordé dans le chapitre sur la continuité).
On trace alors la sécante qui relie les points de la courbe de 
f
de coordonnées
(a ;f(a))
 et
(b; f(b))
. Cette sécante coupe l'axe des abscisses en un point d'abscisse
a_1
.
On recommence alors le procédé en traçant la sécante qui relie les points de la courbe représentative de 
f
de coordonnées
(a_1 ;f(a_1))
 et
(b; f(b))
. Cette sécante coupe l'axe des abscisses en un point d'abscisse
a_2
.
On construit ainsi une suite 
(a_n)
qui convergera alors vers une solution de l'équation
f(x)=0
(on pose par ailleurs
a0=aa_0=aa0​=a
).

Justification de la méthode

Exercice
On rappelle que la fonction 
fff
est croissante et convexe sur l'intervalle
[a;b][a;b][a;b]
. On note 
ccc
la solution de l'équation
f(x)=0f(x)=0f(x)=0
 sur l'intervalle
[a;b][a;b][a;b]
.
1.Quel est le sens de variations de la suite 
(an)(a_n)(an​)
?
2.En utilisant la convexité et la croissance de la fonction
fff
, justifier que, pour tout entier naturel
nnn
, on a
an⩽ca_n \leqslant can​⩽c
.
3.En déduire la convergence de la suite
(an)(a_n)(an​)
.
Remarque
Bien que l'on établisse la convergence de la suite 
(an)(a_n)(an​)
construite à l'aide de la méthode de la fausse position, rien n'assure dans les hypothèses que la limite soit bien la solution de l'équation 
f(x)=0f(x)=0f(x)=0
qu'on recherche !
Par ailleurs, même si on obtient une valeur approchée de cette solution, on n'a pas la possibilité de contrôler la précision de cette approximation.

Expression par récurrence

On se propose désormais d'établir une relation de récurrence permettant de calculer les termes de la suite 
(an)(a_n)(an​)
les uns après les autres, ce qui nous permettra par la suite d'implémenter la méthode de la fausse position en Python.
Exercice
Pour tout entier naturel
nnn
, on note 
AnA_nAn​
le point de coordonnées
(an;f(an))(a_n;f(a_n))(an​;f(an​))
. Par ailleurs, on note 
BBB
le point de coordonnées
(b;f(b))(b; f(b))(b;f(b))
.
1.Justifier que l'équation réduite de la droite
(AnB)(A_nB)(An​B)
 est  
y=f(b)−f(an)b−an×x+f(b)−b×f(b)−f(an)b−any=\dfrac{f(b)-f(a_n)}{b-a_n} \times x + f(b)-b \times \dfrac{f(b)-f(a_n)}{b-a_n}y=b−an​f(b)−f(an​)​×x+f(b)−b×b−an​f(b)−f(an​)​
.
2.En déduire que, pour tout entier naturel
nnn
, on a
an+1=b−b−anf(b)−f(an)×f(b)a_{n+1}=b-\dfrac{b-a_n}{f(b)-f(a_n)} \times f(b)an+1​=b−f(b)−f(an​)b−an​​×f(b)
.

Et dans les autres cas ?

Exercice
En s'inspirant du cas précédent, décrire un algorithme que l'on pourrait utiliser si la fonction était croissante et concave sur l'intervalle 
[a;b][a;b][a;b]
. On pourra également s'inspirer du schéma suivant.

Implémentation

Implémentation en Python

L'implémentation de la méthode de fausse position consiste donc à calculer les termes de la suite 
(an)(a_n)(an​)
définie par 
a0=aa_0=aa0​=a
et, pour tout entier naturel 
nnn
,
an+1=b−b−anf(b)−f(an)×f(b)a_{n+1}=b-\dfrac{b-a_n}{f(b)-f(a_n)} \times f(b)an+1​=b−f(b)−f(an​)b−an​​×f(b)
.
Plus la valeur de 
nnn
sera élevée, plus 
ana_nan​
sera proche de la solution recherchée.
Exercice
On considère la fonction
f:x↦x3−4x2+2x−2f:x\mapsto x^3-4x^2+2x-2f:x↦x3−4x2+2x−2
.
1.Calculer 
f(3)f(3)f(3)
et
f(4)f(4)f(4)
.
2.Vérifier que la fonction 
fff
est croissante et convexe sur l'intervalle
[3;4][3;4][3;4]
.
3.Compléter le programme ci-dessous qui permet d'implémenter la fonction 
fff
et la suite 
(an)(a_n)(an​)
construite à l'aide de la méthode de la fausse position. Utiliser alors cette suite pour calculer
a100a_{100}a100​
.
Remarque : on rappelle qu'en Python, la puissance s'écrit **.
def f(x) :
    return ...
def fausse_position(f, a, b, n):
    '''
    construit la suite (a_n) donnée par la méthode de la fausse position
    ------
    Entrées :
    f : une fonction croissante et convexe sur un intervalle [a,b]
    a : un réel, borne inférieure de l'intervalle considéré, vérifiant f(a)<0
    b : un réel, borne supérieure de l'intervalle considéré, vérifiant f(b)>0
    n : le nombre de termes de la suite (a_n) à calculer
    ------
    Sortie :
    Une valeur approchée de la solution de l'équation f(x)=0 sur [a,b]
    '''
    a = a
    b = b
    for i in range(...) :
        a = ...
    return ...