Méthodes numériques#
Dès la terminale
Rechercher et approcher une valeur#
La dichotomie#
On cherche une solution de \(f(x)=0\) dans un intervalle \([a;b]\). Si \(f\) est continue et si \(f(a)\) et \(f(b)\) sont de signes opposés, on coupe l’intervalle en deux et on conserve la moitié où le changement de signe se produit.
m = 1,5 : le changement de signe se trouve dans [1 ; 1,5].
m = 1,25 : le nouvel intervalle est [1,25 ; 1,5].
m = 1,375 : il reste [1,375 ; 1,5].
Le nouvel intervalle est [1,375 ; 1,4375]. Sa longueur a encore été divisée par deux.
Pour approcher \(\sqrt2\), on résout \(x^2-2=0\) sur \([1;2]\).
La longueur finale de l’intervalle est inférieure à 0,001. Diminue cette précision et observe le nombre d’itérations nécessaires en ajoutant un compteur.
Défi. Utiliser la dichotomie pour approcher la solution de \(x^3-5=0\) à \(10^{-2}\) près.
Besoin d’un indice ?
La solution se trouve entre 1 et 2. Reprends la structure de l’exemple en changeant la fonction et l’intervalle de départ.
Maximum par balayage#
Pour approcher le maximum d’une fonction sur un intervalle, on peut tester beaucoup de points régulièrement espacés et conserver la plus grande valeur rencontrée.
On considère \(f(x)=-3x^2+4x+1\) sur \([0;4]\).
Avec n = 1000, le pas devient dix fois plus petit et la position obtenue est généralement plus précise.
Application. Approcher le maximum de \(f(x)=-x^2+6x-5\) sur \([0;6]\).
La méthode de Héron#
La suite \(u_{n+1}=\frac12\left(u_n+\frac{a}{u_n}\right)\) approche rapidement \(\sqrt a\) lorsque \(a>0\) et \(u_0>0\).
Pour d’autres valeurs de a, la comparaison avec a**0.5 permet d’évaluer l’approximation. Cette méthode réutilise seulement les fonctions, les boucles et les suites déjà rencontrées.
Prolongement. Approcher le nombre d’or \(\varphi=(1+\sqrt5)/2\) sans utiliser sqrt ni
une puissance 0.5. Réutiliser la méthode de Héron et écrire une fonction
nombre_or(precision).
Approcher une aire#
Méthode des rectangles#
On peut approcher l’aire située sous une courbe en découpant l’intervalle en bandes étroites. Sur chaque bande, on remplace la courbe par un rectangle.
Pour \(f(x)=x^2\) sur \([0;1]\), la valeur exacte de l’intégrale est \(\frac13\).
La méthode reste la même, mais le pas est quatre fois plus petit dans le second schéma : les rectangles suivent plus finement la courbe. Le premier rectangle a une hauteur nulle, car f(0) = 0.
Avec n = 10, 100 puis 1000, l’erreur diminue tandis que le nombre de calculs augmente.
Point milieu et trapèzes#
Sur chaque sous-intervalle, il faut décider à quelle hauteur remplacer la courbe. Trois choix classiques sont représentés ci-dessous.
Sur le sous-intervalle \([x_i;x_{i+1}]\) de largeur \(h\), les trois contributions sont :
La structure de la boucle ne change pas : seule la contribution ajoutée à l’accumulateur est différente. Voici une comparaison sur \([0;1]\). Les commentaires signalent précisément la ligne qui distingue les méthodes.
Avec une fonction croissante, les rectangles à gauche sous-estiment l’aire et les rectangles à droite la surestiment. La méthode de Simpson va encore plus loin en remplaçant localement la courbe par un arc de parabole ; elle pourra être étudiée avec un professeur.
Comparer les méthodes. Écrire trois fonctions rectangles, milieux et trapezes ayant les mêmes
paramètres (f, a, b, n). Comparer leurs résultats pour 10, 100 puis 1 000 subdivisions.
Estimer une aire au hasard#
Les méthodes précédentes découpent l’intervalle de façon régulière. La méthode de Monte-Carlo procède autrement : elle place des points au hasard dans un rectangle qui contient la région à mesurer, puis observe la proportion de points tombés dans cette région.
Pour l’aire sous la parabole \(y=x^2\) entre 0 et 1, on choisit un point \((x,y)\) dans le carré \([0;1]\times[0;1]\). Il est sous la courbe lorsque \(y\leqslant x^2\). La fréquence de cette condition fournit une estimation de l’aire.
Cette approche est généralement moins précise que les rectangles ou les trapèzes pour une fonction aussi simple. Son intérêt apparaît surtout lorsque la région devient difficile à découper directement.
Simulation. Écrire une fonction aire_parabole(N) qui renvoie l’estimation obtenue avec
N points. Comparer plusieurs résultats pour 100, 1 000 puis 20 000 points : deux exécutions
avec le même nombre de points ne donnent pas exactement la même valeur.
Résoudre une équation#
La méthode de Newton#
Pour résoudre \(f(x)=0\), la méthode de Newton remplace une valeur \(x_n\) par l’abscisse où la tangente en \(x_n\) coupe l’axe :
La construction se lit sur le graphique : on part de \(x_0\), on monte jusqu’à la courbe, puis on suit la tangente jusqu’à l’axe des abscisses. Son point d’intersection donne \(x_1\). On recommence ensuite à partir de \(x_1\).
Les deux premières itérations sont séparées ci-dessous pour que les tangentes et les projections ne se recouvrent pas. On utilise \(f(x)=x^3-2\), dont la courbure rend la construction bien visible. Sa racine positive est notée \(\alpha=\sqrt[3]{2}\).
À chaque étape : verticale jusqu’à la courbe, puis tangente jusqu’à l’axe.
Les valeurs se rapprochent rapidement de \(\sqrt[3]{2}\). Newton peut converger très vite, mais un mauvais point de départ ou une dérivée nulle peut faire échouer la méthode.
Généraliser. Écrire une fonction newton(f, derivee, x, precision, max_iterations=100) qui s’arrête lorsque
\(|f(x)|\) est inférieur à precision. Prévoir un nombre maximal d’itérations et le cas
où la dérivée s’annule.
Une dérivée nulle#
Ce programme démarre en un point où la dérivée s’annule. Le message d’erreur permet de repérer la division impossible avant de choisir un autre départ ou de prévoir ce cas dans la fonction.
Comment chercher ?
Calcule derivee(0). Avant toute division par une pente, un programme robuste vérifie que
sa valeur n’est pas nulle — ou, avec des décimaux, qu’elle n’est pas trop proche de zéro.
La méthode de la sécante#
La méthode de la sécante évite de connaître la dérivée. Elle part de deux abscisses \(x_0\) et \(x_1\), puis trace la droite passant par les deux points correspondants de la courbe. L’intersection de cette droite avec l’axe donne \(x_2\). Pour poursuivre, on oublie \(x_0\) et on recommence avec \(x_1\) et \(x_2\).
On conserve la fonction \(f(x)=x^3-2\). Là encore, une seule sécante est affichée par graphique. Les deux points verts sont les points utilisés pour tracer la droite ; le point orange sur l’axe est la nouvelle approximation.
À chaque étape, les deux approximations les plus récentes remplacent les deux précédentes.
Le dénominateur doit être non nul. Comme pour Newton, il faut contrôler le point de départ, le nombre d’itérations et la valeur finale obtenue.
Généraliser. Écrire une fonction secante(f, x0, x1, precision, max_iterations=100) qui renvoie une valeur x
telle que \(|f(x)|<\text{precision}\). Tester sur \(f(x)=x^3-5\), avec 1 et 2 comme
valeurs initiales.
Itérer et modéliser#
La méthode d’Archimède#
Archimède approche \(\pi\) à l’aide de polygones réguliers inscrits et circonscrits à un cercle. Le demi-périmètre intérieur \(p_n\) est trop petit ; le demi-périmètre extérieur \(q_n\) est trop grand. Ainsi \(p_n<\pi<q_n\). En doublant le nombre de côtés, les deux polygones épousent de mieux en mieux le cercle.
En partant des hexagones, on pose \(p_0=3\) et \(q_0=2\sqrt3\). Le doublement du nombre de côtés conduit à :
Contrôler la précision. Écrire une fonction archimede(precision) qui répète ces calculs tant que
\(q_n-p_n\) dépasse precision, puis renvoie l’encadrement obtenu. Le calcul ne doit pas
utiliser math.pi.
Construire une courbe par petits pas#
Pour une équation \(y'=F(x,y)\), la méthode d’Euler part d’un point \((x_0,y_0)\) et répète :
La pente au point actuel détermine ainsi un petit déplacement. Un pas plus petit produit généralement une meilleure approximation, au prix d’un plus grand nombre de calculs. Le graphique des points permet de comparer cette approximation à une solution exacte lorsqu’elle est connue.
Le programme suivant montre la construction pour \(y'=y\), à partir de \((0;1)\). À
chaque tour, il mémorise le point actuel, puis avance de h en suivant la pente y.
Généraliser. Écrire une fonction euler(F, x0, y0, h, n) qui renvoie les deux listes de
coordonnées des \(n+1\) points construits. L’appliquer à \(y'=y\), \(y(0)=1\).
Une application physique : le refroidissement#
Un objet à 80 °C est placé dans une pièce à 20 °C. Dans un modèle simple, sa vitesse de refroidissement est proportionnelle à l’écart avec la température de la pièce :
La méthode d’Euler calcule ici une température approchée toutes les demi-minutes. Le programme est commenté pour distinguer le modèle physique de la mise à jour numérique.
La courbe descend rapidement au début, lorsque l’écart avec la pièce est grand, puis plus
lentement. Diminuer h permet de vérifier si l’approximation se stabilise.
Le mouvement d’un projectile#
Un projectile est lancé depuis le sol à l’instant \(t=0\). Sa vitesse initiale \(\vec v_0\) a pour norme \(v_0\) et forme un angle \(\alpha\) avec l’horizontale. On néglige les frottements de l’air et on suppose le champ de pesanteur uniforme.
Dans ce modèle, le poids est la seule force exercée sur le projectile. La deuxième loi de Newton donne :
Les conditions initiales sont :
Une première intégration fournit les composantes de la vitesse :
Le vecteur vitesse n’est donc pas constant : sa composante verticale évolue au cours du temps. Une seconde intégration donne les coordonnées du projectile :
Lorsque \(\cos(\alpha)\neq0\), on élimine le temps grâce à \(t=x/(v_0\cos(\alpha))\). On obtient alors l’équation de la trajectoire :
La trajectoire est donc une parabole. Le projectile revient au sol à l’instant \(t_f=2v_0\sin(\alpha)/g\), lorsque l’angle est strictement compris entre 0° et 90°.
Le programme reprend exactement ces expressions. Pour chaque instant \(t\), il calcule \(x(t)\), \(y(t)\), \(x'(t)\) et \(y'(t)\). L’animation fait avancer le projectile sur sa trajectoire. Pour que la flèche reste lisible quels que soient \(v_0\), l’angle et les dimensions du repère, sa longueur est rapportée à la vitesse initiale : elle représente \(\vec v(t)/v_0\). Une vitesse de norme \(v_0\) occupe ainsi toujours la même proportion de la largeur du graphique.
La valeur de \(v_0\) et l’angle ne sont que les conditions initiales choisies pour observer un exemple. Modifier l’une d’elles ne change ni le modèle physique ni la structure du programme. Dans la fenêtre « Graphique », le point orange suit le mouvement. La flèche verte est plus courte quand la norme de la vitesse devient inférieure à \(v_0\) ; cette variation a désormais un sens physique et ne provient plus de l’échelle des axes.
Activité. Écrire une fonction trajectoire(v0, angle, n) qui renvoie les deux listes de
coordonnées de \(n+1\) points, du lancer jusqu’au retour au sol. L’angle est donné en degrés.
Comparer ensuite plusieurs angles pour une même norme \(v_0\), puis plusieurs valeurs de
\(v_0\) pour un même angle.
Calculer un logarithme#
La méthode de Briggs exploite les racines carrées successives. Après n racines, le nombre
\(y=x^{1/2^n}\) est proche de 1 et \(\ln(y)\) est proche de \(y-1\). On obtient :
Cette approximation finit toutefois par subir les limites des nombres décimaux de la machine
si n devient excessif.
Prolongement. Écrire une fonction log_briggs(x, n) utilisant n racines carrées
successives. Comparer son résultat à math.log(x) pour plusieurs valeurs de n et observer
pourquoi l’erreur ne diminue pas indéfiniment.
Choisir une autre partie