Skip to content
Snippets Groups Projects
Commit 68dfda80 authored by SCHIESS Mathieu's avatar SCHIESS Mathieu
Browse files

ajout d'un corrigé pour le NB sur la méthode du point fixe

parent c2de5543
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Méthode du Point fixe # Méthode du Point fixe
Soit $x \mapsto g(x)$ une fonction continue. Tout nombre réel $a$ tel que $g(a)=a$ est appelé **point fixe** de $g$. Soit $x \mapsto g(x)$ une fonction continue. Tout nombre réel $a$ tel que $g(a)=a$ est appelé **point fixe** de $g$.
Pour une valeur de démarrage $x_0$ donnée, la méthode qui consiste à construire la suite de nombres Pour une valeur de démarrage $x_0$ donnée, la méthode qui consiste à construire la suite de nombres
$$x_1 = g (x_0 ),\ x_2 = g(x_1),\ x_3 = g(x_2),\ x_4 = g(x_3 ), \ldots$$ $$x_1 = g (x_0 ),\ x_2 = g(x_1),\ x_3 = g(x_2),\ x_4 = g(x_3 ), \ldots$$
est appelée **méthode itérative du point fixe**. La fonction $g$ est appelée fonction d'itération. est appelée **méthode itérative du point fixe**. La fonction $g$ est appelée fonction d'itération.
Dans la suite nous allons montrer que si la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ converge vers un nombre $a$, cela a pour conséquence que $g(a) = a$ (ceci est garanti uniquement si $g$ est continue), autrement dit que $a$ est une solution de l'équation $x = g(x)$. Dans la suite nous allons montrer que si la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ converge vers un nombre $a$, cela a pour conséquence que $g(a) = a$ (ceci est garanti uniquement si $g$ est continue), autrement dit que $a$ est une solution de l'équation $x = g(x)$.
## Motivation ## Motivation
La résolution d'une équation du type ($f(x) = 0$ peut se ramener à la recherche d'un point fixe. En effet, on peut définir une fonction $ g $ telle que $g(x) = f(x) + x $. Si on trouve un point fixe $ x$ de $g $ alors par définition on a La résolution d'une équation du type ($f(x) = 0$ peut se ramener à la recherche d'un point fixe. En effet, on peut définir une fonction $ g $ telle que $g(x) = f(x) + x $. Si on trouve un point fixe $ x$ de $g $ alors par définition on a
$$ g(x) = x \Leftrightarrow f(x) + x = x \Leftrightarrow f(x) = 0. $$ $$ g(x) = x \Leftrightarrow f(x) + x = x \Leftrightarrow f(x) = 0. $$
Il est crucial de choisir une fonction $g$ non seulement pour reformuler le problème en termes de recherche de point fixe, mais aussi pour s'assurer que la méthode itérative converge ( voir plus bas. Il est crucial de choisir une fonction $g$ non seulement pour reformuler le problème en termes de recherche de point fixe, mais aussi pour s'assurer que la méthode itérative converge ( voir plus bas.
## Interprétation graphique ## Interprétation graphique
Graphiquement les points fixes de $g$ sont situés sur l'intersection de la courbe $y=g(x)$ avec la droite $y=x$. Graphiquement les points fixes de $g$ sont situés sur l'intersection de la courbe $y=g(x)$ avec la droite $y=x$.
### Exemple ### Exemple
La fonction $g:x\mapsto x^2+2x-6$ possède deux point fixe en $x=-3$ et $x=2$. La fonction $g:x\mapsto x^2+2x-6$ possède deux point fixe en $x=-3$ et $x=2$.
On peut vérifier cette affirmation en résolvant On peut vérifier cette affirmation en résolvant
$$g(x)=x \Leftrightarrow x^2+2x-6=x \Leftrightarrow x^2+x-6=0 \Leftrightarrow (x-2)(x+3)=0 \Leftrightarrow \ x=2 \text{ ou }x=-3$$ $$g(x)=x \Leftrightarrow x^2+2x-6=x \Leftrightarrow x^2+x-6=0 \Leftrightarrow (x-2)(x+3)=0 \Leftrightarrow \ x=2 \text{ ou }x=-3$$
Ce sont bien les abscisses des point d'intersection de la courbe $y=g(x)$ avec la droite $y=x$, comme on peut le voir en exécutant le progragge suivant: Ce sont bien les abscisses des point d'intersection de la courbe $y=g(x)$ avec la droite $y=x$, comme on peut le voir en exécutant le progragge suivant:
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
a, b = -6, 6 # l'intervalle sur lequel on trace le graphique a, b = -6, 6 # l'intervalle sur lequel on trace le graphique
def f(x): def f(x):
return x**2+2*x-6 return x**2+2*x-6
X = np.linspace(a, b, 100) X = np.linspace(a, b, 100)
Y = [f(x) for x in X] Y = [f(x) for x in X]
fig, ax = plt.subplots() fig, ax = plt.subplots()
plt.plot(X, Y) plt.plot(X, Y)
plt.plot(X, X) plt.plot(X, X)
plt.xlim(a, b) plt.xlim(a, b)
plt.ylim(-8, 5) plt.ylim(-8, 5)
ax.axhline(linewidth=2, color="k") ax.axhline(linewidth=2, color="k")
ax.axvline(linewidth=2, color="k") ax.axvline(linewidth=2, color="k")
plt.xticks(np.arange(a, b, step=1)) plt.xticks(np.arange(a, b, step=1))
plt.yticks(np.arange(-8, 5, step=1)) plt.yticks(np.arange(-8, 5, step=1))
plt.grid(True) plt.grid(True)
plt.title("$h:x\mapsto x^2+2x-6$") plt.title("$h:x\mapsto x^2+2x-6$")
plt.show() plt.show()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Etude de la convergence ## Etude de la convergence
A chaque itération on construit la prochaine valeur de la suite avec A chaque itération on construit la prochaine valeur de la suite avec
$$x_{n}=g(x_{n-1})$$ $$x_{n}=g(x_{n-1})$$
Prenons deux point successifs $x_{n-1}$ et $x_{n}$. Si la fonction est continument dérivable, on a que d'après le théorème des acroissements finis qu'il existe un point $\xi$ dans l'intervalle délimité par $x_{n}$ et $x_{n-1}$ telle que Prenons deux point successifs $x_{n-1}$ et $x_{n}$. Si la fonction est continument dérivable, on a que d'après le théorème des acroissements finis qu'il existe un point $\xi$ dans l'intervalle délimité par $x_{n}$ et $x_{n-1}$ telle que
$$\frac{g\left( x_{n}\right)-g\left( x_{n-1}\right)}{x_{n}-x_{n-1}}=g'\left( \xi \right)$$ $$\frac{g\left( x_{n}\right)-g\left( x_{n-1}\right)}{x_{n}-x_{n-1}}=g'\left( \xi \right)$$
mais comme $g\left( x_{n}\right)=x_{n+1}$ et $g\left( x_{n-1}\right)=x_{n}$, on a mais comme $g\left( x_{n}\right)=x_{n+1}$ et $g\left( x_{n-1}\right)=x_{n}$, on a
$$\frac{x_{n+1}-x_{n}}{x_{n}-x_{n-1}}=g'\left( \xi \right) $$\frac{x_{n+1}-x_{n}}{x_{n}-x_{n-1}}=g'\left( \xi \right)
\Leftrightarrow \Leftrightarrow
x_{n+1}-x_{n} = g'\left( \xi \right)\cdot \left( x_{n}-x_{n-1} \right) x_{n+1}-x_{n} = g'\left( \xi \right)\cdot \left( x_{n}-x_{n-1} \right)
$$ $$
Si on prend les valeurs absolu on aura l'égalité Si on prend les valeurs absolu on aura l'égalité
$$\lvert x_{n+1}-x_{n} \rvert = \lvert g'\left( \xi \right) \rvert \cdot \lvert x_{n}-x_{n-1} \rvert $$ $$\lvert x_{n+1}-x_{n} \rvert = \lvert g'\left( \xi \right) \rvert \cdot \lvert x_{n}-x_{n-1} \rvert $$
Donc si $\lvert g'\left( \xi \right) > 1 $ la distance entre $x_{n+1}$ et $x_{n}$ va augmenter (la suite va avoir tendance à diverger), tandis que si $\lvert g'\left( \xi \right) < 1 $ la distance entre $x_{n+1}$ et $x_{n}$ va dimunuer (la suite va avoir tendance à converger). Donc si $\lvert g'\left( \xi \right) \rvert > 1 $ la distance entre $x_{n+1}$ et $x_{n}$ va augmenter (la suite va avoir tendance à diverger), tandis que si $\lvert g'\left( \xi \right) \rvert < 1 $ la distance entre $x_{n+1}$ et $x_{n}$ va dimunuer (la suite va avoir tendance à converger).
Par conséquent, l'étude de $g'$ va nous permettre de déterminer si la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ converge ou pas. Par conséquent, l'étude de $g'$ va nous permettre de déterminer si la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ converge ou pas.
!!! note Définition !!! note Définition
Soit $a$ un point fixe d'une fonction $g$. On dit que le point fixe $a$ est **attractif** si $|g′(a)|<1$, tandis qu'il est dit **répulsif** si $|g′(a)|>1$. Soit $a$ un point fixe d'une fonction $g$. On dit que le point fixe $a$ est **attractif** si $|g′(a)|<1$, tandis qu'il est dit **répulsif** si $|g′(a)|>1$.
!!! !!!
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Point fixe attractif en $x=a$ avec $0<g'(a)<1$ ### Point fixe attractif en $x=a$ avec $0<g'(a)<1$
Prenons un point fixe attractif en $x=a$ avec $0<g'(a)<1$. Supposons que l'on parte d'un point $x_0 $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $0<g'(x)\leq K$ avec $0<K<1$. Prenons un point fixe attractif en $x=a$ avec $0<g'(a)<1$. Supposons que l'on parte d'un point $x_0 $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $0<g'(x)\leq K$ avec $0<K<1$.
Après chaque itération $x_n=f \left( x_{n-1}\right)$, d'après le théorème des acroissements finis, il existe un $\xi$ dans l'intervalle délimité par $a$ et $x_n$ telle que Après chaque itération $x_n=f \left( x_{n-1}\right)$, d'après le théorème des acroissements finis, il existe un $\xi$ dans l'intervalle délimité par $a$ et $x_n$ telle que
$$ g(a) - g(x_n) = g'(\xi) \left(a - x_n \right)$$ $$ g(a) - g(x_n) = g'(\xi) \left(a - x_n \right)$$
mais comme $ 0< g'(\xi)\leq K <1$ et que $g(a) = a$ et $g(x_n)=x_{n+1}$ on a mais comme $ 0< g'(\xi)\leq K <1$ et que $g(a) = a$ et $g(x_n)=x_{n+1}$ on a
$$ a - x_{n+1} < K \left( a - x_n \right)$$ $$ a - x_{n+1} < K \left( a - x_n \right)$$
Par récurrence, on peut montrer que Par récurrence, on peut montrer que
$$ a - x_{n+1} < K^n \left( a - x_0 \right)$$ $$ a - x_{n+1} < K^n \left( a - x_0 \right)$$
Dans ce cas la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ va converger vers $a$. De plus si, $x_0<a$ alors la suite sera strictement croissante tandis que si $x_0>a$ la suite sera strictement décroissante Dans ce cas la suite $\left(x_{n}\right)_{n\in \mathbf{N}}$ va converger vers $a$. De plus si, $x_0<a$ alors la suite sera strictement croissante tandis que si $x_0>a$ la suite sera strictement décroissante
#### Exemple avec $x_0 < a$ #### Exemple avec $x_0 < a$
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
import numpy as np
def plot_point_fixe(f, x0, a, b, n =10): def plot_point_fixe(f, x0, a, b, n =10):
''' '''
Permet d'afficher un graphique qui montre l'évolution des points Permet d'afficher un graphique qui montre l'évolution des points
par la méthode du point fixe ou x_{n+1} := f(x_{n}) sur par la méthode du point fixe ou x_{n+1} := f(x_{n}) sur
l'intervalle [a,b] l'intervalle [a,b]
Args: Args:
- f (function) : la fonction pour laquelle on cherche un point fixe - f (function) : la fonction pour laquelle on cherche un point fixe
- x0 (float) : le point de départ - x0 (float) : le point de départ
- a (float) : le debut de l'intervalle sur lequel on affiche la fonction - a (float) : le debut de l'intervalle sur lequel on affiche la fonction
- a (float) : la fin de l'intervalle sur lequel on affiche la fonction - a (float) : la fin de l'intervalle sur lequel on affiche la fonction
- n (int) : le nombre d'itérations de la méthode du point fixe (par - n (int) : le nombre d'itérations de la méthode du point fixe (par
défaut n vaut 100) défaut n vaut 100)
''' '''
X = np.linspace(a, b, 100) # 100 points entre a et b X = np.linspace(a, b, 100) # 100 points entre a et b
Y = [f(x) for x in X] Y = [f(x) for x in X]
fig, ax = plt.subplots() fig, ax = plt.subplots()
# calcul les coordonnées des points pour la méthode du point fixe # calcul les coordonnées des points pour la méthode du point fixe
xs = [x0] xs = [x0]
ys = [0] ys = [0]
for i in range(1,2*n+1): for i in range(1,2*n+1):
if i % 2 == 0: if i % 2 == 0:
xs.append(ys[-1]) xs.append(ys[-1])
ys.append(ys[-1]) ys.append(ys[-1])
else: else:
xs.append(xs[-1]) xs.append(xs[-1])
ys.append(f(xs[-1])) ys.append(f(xs[-1]))
ax.plot(xs, ys, 'k--', lw=2.0) ax.plot(xs, ys, 'k--', lw=2.0)
ax.plot(X, X, '0.4', lw=2.0, ) # affiche la droite y=x ax.plot(X, X, '0.4', lw=2.0, ) # affiche la droite y=x
ax.plot(X, Y, 'r', lw=2.0) # affiche y=f(x ax.plot(X, Y, 'r', lw=2.0) # affiche y=f(x
ax.set_xlabel('$x$') ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$') ax.set_ylabel('$f(x)$')
ax.axhline(linewidth=2, color="k") ax.axhline(linewidth=2, color="k")
ax.axvline(linewidth=2, color="k") ax.axvline(linewidth=2, color="k")
plt.xlim(a, b) plt.xlim(a, b)
plt.grid() plt.grid()
plt.show() plt.show()
def g(x): def g(x):
return 8*x/(1 + 2*x) return 8*x/(1 + 2*x)
plot_point_fixe(g, 0.5, 0, 4) plot_point_fixe(g, 0.5, 0, 4)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
#### Exemple avec $x_0 > a$ #### Exemple avec $x_0 > a$
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from math import log from math import log
def g(x): def g(x):
return log(x)+1 return log(x)+1
plot_point_fixe(g, 4, 0.1, 4.2) plot_point_fixe(g, 4, 0.1, 4.2)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Point fixe attractif en $x=a$ avec $-1<g'(a)<0$ ### Point fixe attractif en $x=a$ avec $-1<g'(a)<0$
Prenons un point fixe attractif en $x=a$ avec $-1<g'(a)<0$. Supposons que l'on parte d'un point $x_0 < a $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $K\leq g'(x) < 0$ avec $-1<K<0$. Prenons un point fixe attractif en $x=a$ avec $-1<g'(a)<0$. Supposons que l'on parte d'un point $x_0 < a $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $K\leq g'(x) < 0$ avec $-1<K<0$.
Comme auparavant on aura Comme auparavant on aura
$$ a - x_{n+1} = g'(\xi) \left(a - x_n \right)$$ $$ a - x_{n+1} = g'(\xi) \left(a - x_n \right)$$
mais ici $ -1<K\leq g'(\xi)<0$. Donc à chaque itération, on aura que le signe de $a - x_{n+1}$ va changer. Cepandant la convergence sera assuré car en prenant les valeurs absolu on aura mais ici $ -1<K\leq g'(\xi)<0$. Donc à chaque itération, on aura que le signe de $a - x_{n+1}$ va changer. Cepandant la convergence sera assuré car en prenant les valeurs absolu on aura
$$ \lvert a - x_{n+1} \rvert < \lvert K \rvert \cdot \lvert a - x_n \rvert$$ $$ \lvert a - x_{n+1} \rvert < \lvert K \rvert \cdot \lvert a - x_n \rvert$$
De même que De même que
$$ \lvert a - x_{n+1} \rvert < \lvert K \rvert ^n \cdot \lvert a - x_0 \rvert$$ $$ \lvert a - x_{n+1} \rvert < \lvert K \rvert ^n \cdot \lvert a - x_0 \rvert$$
Par conséquent, on aura une suite convergente dont les termes vont osciller autour de $a$ Par conséquent, on aura une suite convergente dont les termes vont osciller autour de $a$
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def g(x): def g(x):
return -8*x/(1 + 2*x+1) return -8*x/(1 + 2*x+1)
plot_point_fixe(g, -3, -8, -2) plot_point_fixe(g, -3, -8, -2)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Point fixe répulsif en $x=a$ avec $g'(a)>1$ ### Point fixe répulsif en $x=a$ avec $g'(a)>1$
Prenons un point fixe répulsif en $x=a$ ce qui veut dire que $\lvert g'(a)\rvert >1$. Supposons que l'on parte d'un point $x_0 $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $ g'(x) \geq K$ avec $K>1$. Prenons un point fixe répulsif en $x=a$ ce qui veut dire que $\lvert g'(a)\rvert >1$. Supposons que l'on parte d'un point $x_0 $ qui se situe dans un voisinage $I$ de $a$ où $\forall x \in I $ on a $ g'(x) \geq K$ avec $K>1$.
Comme auparavant on aura Comme auparavant on aura
$$ a - x_{1} = g'(\xi) \left(a - x_0 \right)$$ $$ a - x_{1} = g'(\xi) \left(a - x_0 \right)$$
mais ici $g'(\xi) \geq K > 1$. Donc à la première itération, on aura que le point $x_1$ s'éloigne de $a$ car mais ici $g'(\xi) \geq K > 1$. Donc à la première itération, on aura que le point $x_1$ s'éloigne de $a$ car
$$ \lvert a - x_{1} \rvert > \lvert K \rvert \cdot \lvert a - x_0 \rvert$$ $$ \lvert a - x_{1} \rvert > \lvert K \rvert \cdot \lvert a - x_0 \rvert$$
Donc à priori, mis-à-part le cas où la suite devient stationnaire, c'est-à-dire si "par chance" on obtient un point $x_n$ où $f(x_n)$ la suite ne convergera pas vers $a$. Donc à priori, mis-à-part le cas où la suite devient stationnaire, c'est-à-dire si "par chance" on obtient un point $x_n$ où $f(x_n)$ la suite ne convergera pas vers $a$.
### Exemple de divergence ### Exemple de divergence
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def g(x): def g(x):
return x**2+2*x-6 return x**2+2*x-6
plot_point_fixe(g, 2.1, -4, 8,3) plot_point_fixe(g, 2.1, -4, 8,3)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Exemple d'une suite stationnaire ### Exemple d'une suite stationnaire
On reprend l'exemple de la fonction $g:x\mapsto x^2+2x-6$ qui a deux points fixes $a=2$ et $a=-3$. Si on part de $x_0=-4$ alors $x_1 = \underbrace{g(-4)}_{=2}$ est un point fixe. On reprend l'exemple de la fonction $g:x\mapsto x^2+2x-6$ qui a deux points fixes $a=2$ et $a=-3$. Si on part de $x_0=-4$ alors $x_1 = \underbrace{g(-4)}_{=2}$ est un point fixe.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def g(x): def g(x):
return x**2+2*x-6 return x**2+2*x-6
plot_point_fixe(g, -4, -5, 3,3) plot_point_fixe(g, -4, -5, 3,3)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Influence de le fonction auxilaire $h$ dans la convergence ## Influence de le fonction auxilaire $h$ dans la convergence
On sait maintenant que pour que la métode itérative du point fixe converge, il faut que le point fixe $g(a)=a$ soit attractif, et que le point de départ $x_0$ soit situé dans un intervalle $I$ contenant $a$ tel que $\lvert f'(x) \rvert <1$ pout tout $x\in I$. On sait maintenant que pour que la métode itérative du point fixe converge, il faut que le point fixe $g(a)=a$ soit attractif, et que le point de départ $x_0$ soit situé dans un intervalle $I$ contenant $a$ tel que $\lvert f'(x) \rvert <1$ pout tout $x\in I$.
Si l'on souhaite résoudre un problème de recherche de zéro d'une fonction $f$ en utilisant la méthode du point fixe sur une foction $g$ définie à partir de $f$, alors on cherchera à construire $g$ de telle manière que la dérivée autour du point fixe soit, en valeur absolu, plus petite que 1. On peux par exemple tracer le graphique de $g$, $g'$ et de la droite $y=x$ pour estimer cette condition. Si l'on souhaite résoudre un problème de recherche de zéro d'une fonction $f$ en utilisant la méthode du point fixe sur une foction $g$ définie à partir de $f$, alors on cherchera à construire $g$ de telle manière que la dérivée autour du point fixe soit, en valeur absolu, plus petite que 1. On peux par exemple tracer le graphique de $g$, $g'$ et de la droite $y=x$ pour estimer cette condition.
### Exemple ### Exemple
On souaiterésoudre l'équation $e^x -2x-3=0$, ce qui est équivalent à trouver les zéros de $f:x\mapsto e^x -2x-3$. Si on définit la fonction auxiliaire $g$ avec $g(x)=f(x)+x=e^x -x-3$, alors comme observé sur la représentation graphique ci-dessous, on aurra un point fixe répulsif en $x\approx 1.9$ et un point fixe attractif en $x\approx -1.5$. On souaiterésoudre l'équation $e^x -2x-3=0$, ce qui est équivalent à trouver les zéros de $f:x\mapsto e^x -2x-3$. Si on définit la fonction auxiliaire $g$ avec $g(x)=f(x)+x=e^x -x-3$, alors comme observé sur la représentation graphique ci-dessous, on aurra un point fixe répulsif en $x\approx 1.9$ et un point fixe attractif en $x\approx -1.5$.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from math import exp from math import exp
def h(x): def h(x):
return exp(x)-x-3 return exp(x)-x-3
def dh(x):
return exp(x)-1
a, b = -6, 6 # l'intervalle sur lequel on trace le graphique a, b = -6, 6 # l'intervalle sur lequel on trace le graphique
X = np.linspace(a, b, 100) X = np.linspace(a, b, 100) # le valeurs possibles de x pour le graphique
Y = [h(x) for x in X] Y = [h(x) for x in X]# le images f(x) pour le graphique
DY = [dh(x) for x in X]
deltaX = 0.001 # pour calculer une approximation de la dérivée
DY = [(h(x+deltaX)-h(x))/deltaX for x in X] # la dérivée de manière approximative
fig, ax = plt.subplots() fig, ax = plt.subplots()
plt.plot(X, Y, label="y=h(x)") plt.plot(X, Y, label="y=h(x)")
plt.plot(X, X) plt.plot(X, X)
plt.plot(X, DY, label="y=h'(x)") plt.plot(X, DY, label="y=h'(x)")
plt.xlim(a, b) plt.xlim(a, b)
plt.ylim(-8, 5) plt.ylim(-8, 5)
ax.axhline(linewidth=2, color="k") ax.axhline(linewidth=2, color="k")
ax.axvline(linewidth=2, color="k") ax.axvline(linewidth=2, color="k")
plt.xticks(np.arange(a, b, step=1)) plt.xticks(np.arange(a, b, step=1))
plt.yticks(np.arange(-8, 5, step=1)) plt.yticks(np.arange(-8, 5, step=1))
plt.grid(True) plt.grid(True)
plt.legend(loc="lower right") plt.legend(loc="lower right")
plt.title("$h:x\mapsto e^x-x-3$") plt.title("$h:x\mapsto e^x-x-3$")
plt.show() plt.show()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Prenons un choix différent pour $h$. Par exemple, on a Prenons un choix différent pour $h$. Par exemple, on a
$$e^x -2x-3=0 \Leftrightarrow e^x =2x+3 \Leftrightarrow x = \ln \left( 2x+3 \right)$$ $$e^x -2x-3=0 \Leftrightarrow e^x =2x+3 \Leftrightarrow x = \ln \left( 2x+3 \right)$$
Donc les solutions de l'équation sont les points fixes de la fonction $\hat{h}:x\mapsto \ln \left( 2x+3 \right)$. La fonction $\hat{h}$ possède les mêmes point fixe que $h$ mais comme on peut le voir sur le graphique ci-dessous, la situation est inversée. Le point fixe en $x\approx 1.9$ est maintenant attractif tandi que le point fixe en $x\approx -1.5$ est devenu répulsif. Donc les solutions de l'équation sont les points fixes de la fonction $\hat{h}:x\mapsto \ln \left( 2x+3 \right)$. La fonction $\hat{h}$ possède les mêmes point fixe que $h$ mais comme on peut le voir sur le graphique ci-dessous, la situation est inversée. Le point fixe en $x\approx 1.9$ est maintenant attractif tandi que le point fixe en $x\approx -1.5$ est devenu répulsif.
*Remarque : pour tracer le graphique on a besoin de voir que $D_\hat{h} = ]-3/2, + \infty[$.* *Remarque : pour tracer le graphique on a besoin de voir que $D_\hat{h} = ]-3/2, + \infty[$.*
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from math import log from math import log
def h(x): def h(x):
return log(2*x+3) return log(2*x+3)
def dh(x):
return 1/(2*x+3)
a, b = -1.49, 6 # l'intervalle sur lequel on trace le graphique a, b = -1.49, 6 # l'intervalle sur lequel on trace le graphique
X = np.linspace(a, b, 100) X = np.linspace(a, b, 100)
Y = [h(x) for x in X] Y = [h(x) for x in X]
DY = [dh(x) for x in X]
deltaX = 0.001 # pour calculer une approximation de la dérivée
DY = [(h(x+deltaX)-h(x))/deltaX for x in X] # la dérivée de manière approximative
fig, ax = plt.subplots() fig, ax = plt.subplots()
plt.plot(X, Y, label="y=h(x)") plt.plot(X, Y, label="y=h(x)")
plt.plot(X, X) plt.plot(X, X)
plt.plot(X, DY, label="y=h'(x)") plt.plot(X, DY, label="y=h'(x)")
plt.xlim(a, b) plt.xlim(a, b)
plt.ylim(-8, 5) plt.ylim(-8, 5)
ax.axhline(linewidth=2, color="k") ax.axhline(linewidth=2, color="k")
ax.axvline(linewidth=2, color="k") ax.axvline(linewidth=2, color="k")
plt.xticks(np.arange(a, b, step=1)) plt.xticks(np.arange(a, b, step=1))
plt.yticks(np.arange(-8, 5, step=1)) plt.yticks(np.arange(-8, 5, step=1))
plt.grid(True) plt.grid(True)
plt.legend(loc="lower right") plt.legend(loc="lower right")
plt.title("$h:x\mapsto \log(2x+3)$") plt.title("$h:x\mapsto \log(2x+3)$")
plt.show() plt.show()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Pour résumer un utilisera $h$ et $\hat{h}$ pour trouver les solutions de $e^x -2x-3=0$. Pour résumer un utilisera $h$ et $\hat{h}$ pour trouver les solutions de $e^x -2x-3=0$.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def point_fixe(h, x0, tol=0.001, iter_max=100): def point_fixe(h, x0, tol=0.001, iter_max=100):
''' '''
Cherche un point fixe x de la fonction h (i.e. un solution de h(x)=x)e Cherche un point fixe x de la fonction h (i.e. un solution de h(x)=x)e
n utilisant la méthode itérative du point fixe n utilisant la méthode itérative du point fixe
Args: Args:
- f (function) : la fonction pour laquelle on cherche le point - f (function) : la fonction pour laquelle on cherche le point
fixe. fixe.
- x0 (float) : la valeur de démarrage de la méthode. - x0 (float) : la valeur de démarrage de la méthode.
- tol (float) : l'erreur minimal à partir de laquelle on - tol (float) : l'erreur minimal à partir de laquelle on
arrête la recherche (|x_n-x_{n+1}|<tol). arrête la recherche (|x_n-x_{n+1}|<tol).
Par défaut tol = 0.001 Par défaut tol = 0.001
- iter_max(int): Le nombre d'itérations maximal dans le cas où - iter_max(int): Le nombre d'itérations maximal dans le cas où
la méthode diverge ou converge trop lentement la méthode diverge ou converge trop lentement
return: return:
- x1(float) : une approximation du point fixe qui se trouve à - x1(float) : une approximation du point fixe qui se trouve à
distance tol de la solution ou le iter_max termes distance tol de la solution ou None
si la méthode diverge. si la méthode n'a pas convergé.
''' '''
x1 = x0 x1 = x0
for _ in range(iter_max): for _ in range(iter_max):
x0 = x1 x0 = x1
x1 = h(x0) x1 = h(x0)
# print(x1) # print(x1)
# on stop la recherche si on est suffisament proche de la solution # on stop la recherche si on est suffisament proche de la solution
if abs(x0-x1) < tol: if abs(x0-x1) < tol:
return x1 return x1
return x1 return None # si la méthode n'a pas convergé après iter_max itérations
print("il y a deux solution à l'équation ex eˣ -2x-3=0 ") print("il y a deux solution à l'équation ex eˣ-2x-3=0 ")
# première solution avec h # première solution avec h
def h(x): def h(x):
return exp(x)-x-3 return exp(x)-x-3
print("une première solution en x = ",point_fixe(h, -1)) print("une première solution en x = ",point_fixe(h, -1))
# Deusième solution avec ĥ # Deusième solution avec ĥ
def h(x): def h(x):
return log(2*x+3) return log(2*x+3)
print("une seconde solution en x = ",point_fixe(h, 1)) print("une seconde solution en x = ",point_fixe(h, 1))
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Exercices ## Exercices
### Exercice 87 ### Exercice 87
On désire fabriquer une canette en aluminium qui ait la forme d’un cylindre circulaire droit de hauteur h et de rayon r fermé aux deux extrémités, d'un volume de 33 cl (voir les figures). On désire fabriquer une canette en aluminium qui ait la forme d’un cylindre circulaire droit de hauteur h et de rayon r fermé aux deux extrémités, d'un volume de 33 cl (voir les figures).
![Image de canette](https://githepia.hesge.ch/info_sismondi/3AM.OS/-/raw/main/zeros/figures/fig_canette.png) ![Image de canette](https://githepia.hesge.ch/info_sismondi/3AM.OS/-/raw/main/zeros/figures/fig_canette.png)
En utilisant le calcul différentiel, répondre aux questions suivantes : En utilisant le calcul différentiel, répondre aux questions suivantes :
1. Quelles sont les cotes h et r en cm qui minimisent le coût de la canette si l'aluminium employé pour les disques coûte 0,002 Fr/cm2 et celui utilisé pour le cylindre circulaire droit, 0,001 Fr/cm² ? 1. Quelles sont les cotes h et r en cm qui minimisent le coût de la canette si l'aluminium employé pour les disques coûte 0,002 Fr/cm2 et celui utilisé pour le cylindre circulaire droit, 0,001 Fr/cm² ?
Quelle est son coût minimum ? Quelle est son coût minimum ?
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Afficher la fonction d'intérêt pour estimer la localisation # Afficher la fonction d'intérêt pour estimer la localisation
# du/des point(s) fixe(s) # du/des point(s) fixe(s)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Trouver le(s) point(s) fixe(s) # Trouver le(s) point(s) fixe(s)
``` ```
%% Cell type:raw id: tags: %% Cell type:raw id: tags:
Réponse: Le coût minumum d'une canette est de ... Fr et il faut que h=.... [cm] et r=....[cm] Réponse: Le coût minumum d'une canette est de ... Fr et il faut que h=.... [cm] et r=....[cm]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
2. Par souci d'écologie, le fabriquant aimerait construire cette canette avec un minimum d'aluminium. Est-ce compatible avec un coût minimum ? 2. Par souci d'écologie, le fabriquant aimerait construire cette canette avec un minimum d'aluminium. Est-ce compatible avec un coût minimum ?
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
%% Cell type:raw id: tags: %% Cell type:raw id: tags:
Réponse : Réponse :
Explication : Explication :
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Exercice 90 ### Exercice 90
Estimer, avec une précision de 6 chiffres après la virgule toutes les solutions de l'équation Estimer, avec une précision de 6 chiffres après la virgule toutes les solutions de l'équation
$$ x^3 = \sqrt{x+2} .$$ $$ x^3 = \sqrt{x+2} .$$
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Estimer graphiquement où se situe les solutions # Estimer graphiquement où se situe les solutions
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Définir une (ou plusieurs) fonction(s) h et utiliser la méthode # Définir une (ou plusieurs) fonction(s) h et utiliser la méthode
# du point fixe pour trouver les solutions de l'équation. # du point fixe pour trouver les solutions de l'équation.
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Exercice 91 ### Exercice 91
Un nageur se trouve à une distance de $0,57$ kilomètres du rivage et aimerait rejoindre sa cabane. Un nageur se trouve à une distance de $0,57$ kilomètres du rivage et aimerait rejoindre sa cabane.
Il est positionné tel que le point $A$ est sa projection orthogonale sur le rivage et la distance séparant le point $A$ de la cabane est de $2,8\; km$. Il est positionné tel que le point $A$ est sa projection orthogonale sur le rivage et la distance séparant le point $A$ de la cabane est de $2,8\; km$.
Le nageur peut nager a une vitesse de $3\;km/h$ et marcher sur le rivage à une vitesse de $5km/h$. Le nageur peut nager a une vitesse de $3\;km/h$ et marcher sur le rivage à une vitesse de $5km/h$.
![Image de nageur](https://githepia.hesge.ch/info_sismondi/3AM.OS/-/raw/main/zeros/figures/fig_nageur.png) ![Image de nageur](https://githepia.hesge.ch/info_sismondi/3AM.OS/-/raw/main/zeros/figures/fig_nageur.png)
On souhaite déterminer à quelle distance de la cabane doit se trouver le point $P$, correspondant à l'endroit où le nageur doit sortir de l'eau, pour rejoindre la cabane en un minimum de temps. On souhaite déterminer à quelle distance de la cabane doit se trouver le point $P$, correspondant à l'endroit où le nageur doit sortir de l'eau, pour rejoindre la cabane en un minimum de temps.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Afficher la fonction d'intérêt pour estimer la localisation # Afficher la fonction d'intérêt pour estimer la localisation
# du/des point(s) fixe(s) # du/des point(s) fixe(s)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Trouver le(s) point(s) fixe(s) # Trouver le(s) point(s) fixe(s)
``` ```
%% Cell type:raw id: tags: %% Cell type:raw id: tags:
Réponse: La cabane de trouve à .... [km] du point $P$. Réponse: La cabane de trouve à .... [km] du point $P$.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment