Dans cet exercice, on s'intéresse aux solutions de l'équation (1) : \exp(-x)=-\ln(x) sur \mathbb{R}^\star_+.
On pose pour x\in\mathbb{R}^\star_+ : f(x) = \exp(-x)+\ln(x).
Étudier f afin de déterminer le nombre de solutions à l'équation (1).
Combien l'équation f(x)=0 admet-elle de solutions sur \mathbb{R}^\star_+ ?
f est définie en tant que somme de fonctions définies et dérivables sur \mathbb{R}^\star_+, donc elle est dérivable sur \mathbb{R}^\star_+.
f'(x)=-\exp(-x)+\dfrac{1}{x}
On étudie le signe de f' sur \mathbb{R}^\star_+.
f'(x) \geq 0 \Leftrightarrow \dfrac{-x\times \exp(x)+1}{x} \geq 0 \Leftrightarrow x\times \exp(-x) \leq 1 .
On étudie la fonction g(x)=x\times \exp(-x) :
g'(x) = \exp(-x)-x\exp(-x)=(1-x)\exp(-x)
g'(x) \geq 0 \Leftrightarrow x \leq 1
g est croissante sur ]0;1] puis décroissante donc atteint son maximum en x=1 : g(1)=\exp(-1)<1.
Ainsi, pour tout x de \mathbb{R}^\star_+ : g(x)<1.
Donc, f'(x) > 0 sur \mathbb{R}^\star_+.
f est strictement croissante sur son ensemble de définition.
De plus :
\lim \limits_{x \to 0} f(x) = -\infty
Et f(1)=\exp(-1) > 0 .
Finalement, sur ]0;1] , f est continue, strictement croissante et 0 \in ]-\infty ; \exp(-1) ].
D'après le théorème des valeurs intermédiaires, l'équation f(x) = 0 admet une unique solution sur ]0;1] .
Comme f est strictement croissante sur \mathbb{R}^\star_+, l'équation f(x) = 0 admet également une unique solution sur \mathbb{R}^\star_+.
L'équation f(x) = 0 admet donc une unique solution sur \mathbb{R}^\star_+.
On rappelle qu'une fonction f est concave si et seulement si sa dérivée est décroissante sur l'ensemble étudié.
La fonction f est-elle concave ?
Afin d'étudier le sens de variation de f', on calcule sa dérivée. f' est une somme de fonctions dérivables, donc elle est dérivable sur \mathbb{R}^\star_+.
f''(x) = \exp(-x) - \dfrac{1}{x^2} = \dfrac{x^2\times \exp(-x) -1 }{x^2}
f''(x) >0 \Leftrightarrow x^2\exp(-x) > 1
On pose h(x) = x^2\exp(-x) :
h'(x) = 2x\times \exp(-x)-x^2\exp(-x) = x\exp(-x)(2-x)
On sait que x\times \exp(-x) >0 sur \mathbb{R}^\star_+. Ainsi, h'>0 \Leftrightarrow x < 2 .
h est croissante sur ]0;2] puis décroissante donc atteint son maximum en x=2 et h(2)=4\exp(-2) < 1 .
Finalement, pour tout x de \mathbb{R}^\star_+, h(x) < 1.
Donc, f''(x) <0 sur \mathbb{R}^\star_+.
f' est décroissante sur \mathbb{R}^*_+ donc f est concave sur \mathbb{R}^*_+.
Ainsi, f est concave sur \mathbb{R}^\star_+.
On admet la proposition suivante :
Soit f une fonction continue, strictement croissante et concave telle que f(a) \leq 0 et f(b) > 0.
Alors la suite (a_n) définie par \left \{ \begin{array}{rcl} a_0=a \\ a_{n+1}=a_n-\dfrac{b-a_n}{f(b)-f(a)}f(a)\end{array} \right. converge vers la solution \ell de f(x)=0.
Quel algorithme permet de déterminer une valeur approchée de la solution de l'équation (1) ?
Tout d'abord, il est important de remarquer que la fonction f respecte les conditions de la proposition énoncée pour a=0{,}001 et b=1 d'après les questions précédentes.
La solution de l'équation est, d'après cette proposition, la limite de la suite (a_n). Il suffit donc de créer un algorithme permettant de calculer un grand nombre de fois les termes successifs de la suite (a_n), afin d'obtenir une valeur approchée de la solution à l'équation (1).
On peut procéder à l'aide de deux fonctions : la première renvoie pour un nombre x la valeur de f(x) avec l'aide du module math de Python.
La seconde calculera le énième terme de la suite a_n.
L'algorithme permettant de déterminer une valeur approchée de la solution de l'équation (1) est donc le suivant :
import math
def f(x) :
return exp(-x)+log(x) #attention on obtient le ln avec la fonction log du module math
def secante(a,b,n) :
for i in range(n): #on itère n fois pour obtenir la valeur de a(n)
a=a- f(a)*(b-a)/(f(b)-f(a)) #on calcule la nouvelle valeur de a en fonction de l'ancienne valeur
return a
En s'aidant de l'algorithme écrit à la question précédente, quelle valeur approchée de la solution à l'équation (1) peut-on déduire ?
Pour trouver une solution à l'équation (1), il suffit de lancer la fonction sécante avec les bonnes valeurs :
- a proche de 0 ;
- b=1 ;
- n suffisamment grand.
On lance, par exemple :
secante(0.0001,1,10 000)
La valeur approchée de la solution est donc \exp(-x)=-\ln(x)\text{ pour } x \approx 0{,}57 .