I1 — Calcul numérique
Objectif du chapitre. Apprendre à résoudre numériquement des équations (dichotomie, Newton), à intégrer une fonction par rectangles et trapèzes (Simpson en complément) et à résoudre une équation différentielle par la méthode d'Euler. Ce chapitre applique les bases Python du chapitre I1 — Bases Python et représentation des nombres et la complexité du chapitre I1 — Algorithmes et complexité.
Notions
1. Résolution d'équation : dichotomie
Pour résoudre avec une fonction continue strictement monotone sur (avec , c'est-à-dire un changement de signe), la dichotomie divise l'intervalle en deux ; on garde la moitié où le produit des signes est négatif ; on itére jusqu'à ce que l'intervalle soit suffisamment petit ; la complexité est (convergence linéaire).
Exemple (dichotomie). Pour résoudre sur (, ) : , ; on garde ; , ; on garde ; ... la suite converge vers ; la complexité est .
def dichotomie(f, a, b, eps=1e-9):
while b - a > eps:
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
return (a + b) / 2
2. Résolution d'équation : Newton
La méthode de Newton part d'une valeur initiale et itére : ; la convergence est quadratique (le nombre de chiffres corrects double à chaque itération) si est suffisamment proche de la racine ; elle échoue si ou si est trop loin.
def newton(f, fp, x0, eps=1e-12, maxit=100):
x = x0
for _ in range(maxit):
x1 = x - f(x) / fp(x)
if abs(x1 - x) < eps:
return x1
x = x1
return x
3. Intégration numérique
L'intégration par rectangles approxime par (complexité , erreur ) ; l'intégration par trapèzes approxime par (erreur ) ; l'intégration de Simpson (paraboles, complément) a une erreur (plus précise).
def trapèzes(f, a, b, n):
h = (b - a) / n
s = (f(a) + f(b)) / 2
for i in range(1, n):
s += f(a + i * h)
return s * h
4. Équations différentielles : Euler
La méthode d'Euler résout numériquement , ; elle itére : , ; la précision dépend du pas (erreur ) ; des méthodes plus précises (Runge-Kutta, complément) réduisent l'erreur ( pour RK4).
def euler(f, t0, y0, tf, h):
t, y = t0, y0
while t < tf:
y = y + h * f(t, y)
t = t + h
return y
La méthode d'Euler est la version numérique de la résolution des équations différentielles du chapitre M4 — Techniques fondamentales de calcul en analyse : quand la solution exacte n'est pas accessible, on approxime la courbe intégrale par petits pas.
Capacités exigibles
Ce chapitre met en œuvre les capacités de l'IPT : on évalue la complexité des algorithmes numériques (I1.complexite-algorithme) et on implémente la dichotomie (I1.dichotomie) pour la résolution d'équation. Les deux capacités sont traitées en détail dans le chapitre I1 — Algorithmes et complexité.
Ce qui tombe en colle et en DS
- Résoudre par dichotomie (condition de changement de signe, nombre d'itérations).
- Comparer dichotomie et Newton (vitesse de convergence, conditions de succès).
- Approximer une intégrale par trapèzes et estimer l'erreur.
Pièges classiques
- Newton : convergence : la méthode de Newton converge quadratiquement seulement si est suffisamment proche de la racine ; il ne faut pas supposer qu'elle converge toujours ; elle échoue si (division par zéro) ou si est trop loin ; il faut ajouter un critère d'arrêt (tolérance sur ou nombre max d'itérations).
- Dichotomie : condition de départ : la dichotomie exige (changement de signe) ; si et ont le même signe, l'algorithme n'est pas garanti (il peut converger vers une racine hors de ou diverger) ; il faut choisir un intervalle qui encadre la racine.
- Euler : pas h : la précision de Euler dépend du pas ; un pas trop grand donne une approximation mauvaise (et peut diverger) ; il faut choisir assez petit (mais pas trop petit : l'erreur d'arrondi s'accumule et le temps de calcul augmente).
Pour aller plus loin
Annales utilisables sur ce chapitre : voir la page générale Ressources, exercices et annales pour les manuels recommandés et les banques d'exercices gratuites.