Algorithmique et programmation
- 1
Exercice 1
FacileOn considère la suite définie par et, pour tout entier naturel ,
On souhaite déterminer le plus petit entier tel que . Voici une fonction Python incomplète censée renvoyer cet entier. Recopier et compléter les trois zones marquées
......def seuil(): u = 5 n = 0 while u ..... 0.01: # (1) condition d'arret u = ..... * u # (2) mise a jour du terme n = ..... + 1 # (3) mise a jour du compteur return nVoir un indice
La boucle doit continuer tant que le terme n'est pas encore passé sous le seuil . À chaque tour, on calcule le terme suivant et on augmente le compteur de .
Voir la correction
La suite est décroissante et tend vers : il existe donc bien un rang à partir duquel . On arrête la boucle dès que la condition devient fausse, donc la condition de continuation est
u >= 0.01. La complétion est :def seuil(): u = 5 n = 0 while u >= 0.01: u = 0.8 * u n = n + 1 return nComme , résoudre revient à , soit
Le plus petit entier convenable est donc . On vérifie : et . La fonction renvoie bien
28. - 2
Exercice 2
FacileOn donne le script Python suivant.
u = 0 for n in range(4): u = 0.5 * u + 2 print(u)- Recopier et compléter le tableau ci-dessous en indiquant la valeur de
uaffichée à chaque passage dans la boucle. - Quelle suite ce script calcule-t-il ? Préciser et la relation de récurrence.
\medskip
Tour de boucle 1 2 3 4 Valeur affichée … … … … Voir un indice
Suivre la boucle pas à pas : à chaque tour, on remplace
upar0.5 * u + 2en utilisant la valeur précédente deu. La valeur initiale est .Voir la correction
On part de
u = 0puis on applique la transformation à chaque tour.- Tour 1 : , on affiche .
- Tour 2 : , on affiche .
- Tour 3 : , on affiche .
- Tour 4 : , on affiche .
Tour de boucle 1 2 3 4 Valeur affichée Le script calcule les termes de la suite définie par
(Cette suite converge vers le point fixe , ce que confirment les valeurs qui s'en rapprochent.)
- Recopier et compléter le tableau ci-dessous en indiquant la valeur de
- 3
Exercice 3
FacileOn rappelle que le coefficient binomial se calcule par
- Écrire une fonction Python
factorielle(n)qui, pour un entier , renvoie (on rappelle que ). - En réutilisant cette fonction, écrire une fonction
binomial(n, k)qui renvoie . - Que renvoie
binomial(5, 2)?
Voir un indice
Pour la factorielle, initialiser un produit à puis le multiplier successivement par . Pour le coefficient binomial, appeler trois fois la fonction précédente et utiliser la division entière
//(le résultat est un entier).Voir la correction
On adopte une démarche modulaire : la fonction
binomials'appuie surfactorielle.def factorielle(n): p = 1 for k in range(1, n + 1): p = p * k return p def binomial(n, k): return factorielle(n) // (factorielle(k) * factorielle(n - k))Pour , la boucle
range(1, 1)est vide etfactorielle(0)renvoie bien .Enfin :
La fonction renvoie
10. - Écrire une fonction Python
- 4
Exercice 4
FacileOn veut approcher l'aire sous la courbe de la fonction sur l'intervalle par la méthode des rectangles à gauche. On découpe en intervalles de même largeur et on somme les aires des rectangles s'appuyant sur la valeur de au bord gauche de chaque sous-intervalle.
- Recopier et compléter la fonction ci-dessous (zones
.....).
def f(x): return x**2 def rectangles(n): a = 0 b = 1 h = ..... / n # (1) largeur d'un rectangle S = 0 for k in range(n): x = a + k * h S = S + ..... * h # (2) aire d'un rectangle return S- Calculer « à la main » la valeur renvoyée par
rectangles(4).
Voir un indice
La largeur commune vaut . L'aire d'un rectangle est (hauteur largeur) . Pour , les bords gauches sont .
Voir la correction
La largeur d'un rectangle est , et chaque rectangle a pour aire . D'où :
def rectangles(n): a = 0 b = 1 h = (b - a) / n S = 0 for k in range(n): x = a + k * h S = S + f(x) * h return SPour : et les abscisses gauches sont .
rectangles(4)renvoie . La valeur exacte de l'intégrale étant , l'approximation par rectangles à gauche est ici sous-estimée (la fonction est croissante). - Recopier et compléter la fonction ci-dessous (zones
- 5
Suite récurrente d'un capital épargne
MoyenLe 1er janvier 2026, une personne ouvre un compte épargne avec €. Chaque année, la banque augmente le capital de (intérêts), puis la personne verse € supplémentaires. On note le capital, en euros, disponible au bout de années. Ainsi et, pour tout ,
- Écrire une fonction Python
duree()qui renvoie le nombre d'années nécessaires pour que le capital atteigne (au moins) €. - Déterminer, en justifiant, la valeur renvoyée par cette fonction.
Voir un indice
On simule les termes de la suite un par un dans une boucle
whilequi tourne tant que le capital est strictement inférieur à , en comptant les années écoulées.Voir la correction
- Écrire une fonction Python
- 6
Méthode de dichotomie en Python
MoyenOn considère la fonction définie sur par . On admet que l'équation possède une unique solution , et que car et .
- Effectuer « à la main » les trois premières étapes de la méthode de dichotomie sur : préciser à chaque fois le milieu, le signe de en ce milieu, et le nouvel intervalle retenu.
- Recopier et compléter la fonction Python ci-dessous, qui renvoie une valeur approchée de à la précision
eprès.
def f(x): return x**3 + x - 1 def dichotomie(a, b, e): while b - a > e: m = (a + b) / 2 if f(a) * f(m) <= 0: b = ..... # la racine est dans [a, m] else: a = ..... # la racine est dans [m, b] return (a + b) / 2Voir un indice
À chaque étape, on coupe l'intervalle en deux et on garde la moitié aux bornes de laquelle change de signe. Si et sont de signes contraires (produit ), la racine est dans , donc on remplace par .
Voir la correction
- 7
Méthode d'Euler pour une équation différentielle
MoyenOn cherche à approcher la fonction solution de l'équation différentielle
sur l'intervalle (dont la solution exacte est ). On utilise la méthode d'Euler avec pas de même longueur : à partir de , on calcule
- Écrire une fonction Python
euler(n)qui renvoie l'approximation de obtenue avec pas. - Calculer « à la main » la valeur renvoyée par
euler(4)et la comparer à .
Voir un indice
Ici , donc la mise à jour est . On répète cette opération fois en partant de . Pour , et à chaque pas.
Voir la correction
- Écrire une fonction Python
- 8
Exercice 8
DifficileOn veut comparer deux méthodes d'approximation de : la méthode des rectangles à gauche et la méthode des trapèzes. Pour la méthode des trapèzes avec sous-intervalles de largeur , on utilise la formule
- Écrire une fonction Python
trapezes(f, a, b, n)qui renvoie . - Pour , calculer sur et comparer l'erreur commise à celle de la méthode des rectangles à gauche (qui donne pour ).
- Expliquer géométriquement pourquoi la méthode des trapèzes est plus précise.
Voir un indice
Voir la correction
- Écrire une fonction Python
- 9
Exercice 9
DifficileOn estime le nombre par une méthode de Monte-Carlo. On tire au hasard un point dans le carré . La probabilité qu'il tombe dans le quart de disque de centre et de rayon (c'est-à-dire que ) est égale à l'aire de ce quart de disque, soit .
- En notant la proportion de points tombés dans le quart de disque sur tirages, expliquer pourquoi est une estimation de .
- Écrire une fonction Python
monte_carlo(N)qui renvoie cette estimation. On utiliserarandom()du modulerandom, qui renvoie un flottant aléatoire dans . - Selon la loi des grands nombres, que se passe-t-il quand devient très grand ? Pourquoi faut-il multiplier par pour gagner environ un chiffre significatif ?
Voir un indice
Voir la correction
