Calcul et algorithmique | BTS | Mathématiques
Dernière mise à jour : 21 octobre 2026
Un technicien de contrôle qualité relève le diamètre (en mm) de 6 axes usinés dont la cote nominale est 25 mm avec une tolérance de ±0,05 mm :
D = [24.98, 25.03, 24.95, 25.07, 25.00, 24.99]
1. On exécute le programme suivant. Complète le tableau de trace de la variable somme au fil des itérations. (1,5 pt)
D = [24.98, 25.03, 24.95, 25.07, 25.00, 24.99]
somme = 0
for i in range(len(D)):
somme = somme + D[i]
moyenne = somme / len(D)
2. Donne la valeur de moyenne (au dix-millième). (1 pt)
3. Complète la fonction suivante afin qu'elle compte le nombre de pièces non conformes (hors de l'intervalle [24,95 ; 25,05]) : (1,5 pt)
def compter_defauts(T, mini, maxi):
compteur = 0
for x in T:
if ______________:
compteur = compteur + 1
return compteur
4. Donne le résultat de compter_defauts(D, 24.95, 25.05) en justifiant. (1 pt)
1.
| i | D[i] | somme |
|---|---|---|
| — | — | 0 |
| 0 | 24,98 | 24,98 |
| 1 | 25,03 | 50,01 |
| 2 | 24,95 | 74,96 |
| 3 | 25,07 | 100,03 |
| 4 | 25,00 | 125,03 |
| 5 | 24,99 | 150,02 |
2. \(\text{moyenne} = 150{,}02 / 6 = 25{,}0033\ldots \approx 25{,}0033\,\text{mm}\).
3. Condition à compléter : x < mini or x > maxi.
4. Vérification pièce par pièce sur [24,95 ; 25,05] : 24,98 conforme ; 25,03 conforme ; 24,95 conforme (borne incluse) ; 25,07 > 25,05 → non conforme ; 25,00 conforme ; 24,99 conforme. compter_defauts(D, 24.95, 25.05) renvoie 1.
Un bureau d'études cherche la valeur \(x\) telle que \(x^2 = 11\) (dimensionnement d'une section technique), en résolvant \(f(x) = x^2 - 11 = 0\) par dichotomie sur l'intervalle \([3\,;\,4]\). On vérifie que \(f(3) = -2 < 0\) et \(f(4) = 5 > 0\).
1. Rappelle le principe de la méthode de dichotomie et la condition d'arrêt utilisée. (1 pt)
2. Complète le tableau de trace pour 3 itérations (\(m\), \(f(m)\), nouvel intervalle). (2,5 pts)
| Itération | \(m = \frac{a+b}{2}\) | \(f(m)\) | Nouvel intervalle |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 |
3. Combien d'itérations faut-il, en partant de \([3\,;\,4]\), pour atteindre une précision \(\varepsilon = 10^{-3}\) ? (1,5 pt)
1. On calcule le milieu \(m\) de l'intervalle \([a,b]\), puis on remplace \(a\) ou \(b\) par \(m\) selon le signe de \(f(m)\) (le signe qui change indique la moitié contenant la racine). On arrête quand \(\dfrac{b-a}{2} < \varepsilon\).
2.
| Itération | \(m\) | \(f(m)\) | Nouvel intervalle |
|---|---|---|---|
| 1 | 3,500 | 1,25 | [3,000 ; 3,500] |
| 2 | 3,250 | −0,4375 | [3,250 ; 3,500] |
| 3 | 3,375 | 0,390625 | [3,250 ; 3,375] |
On encadre bien \(\sqrt{11} \approx 3{,}316625\) dans \([3{,}250\,;\,3{,}375]\).
3. \(b-a=1\). \(n \geq \log_2\!\left(\dfrac{1}{10^{-3}}\right) = \log_2(1000) \approx 9{,}97\), donc il faut au moins 10 itérations.
Un technicien de contrôle mesure des résistances (en Ω) sur un lot de composants : T = [56, 18, 33, 9, 41]. Il utilise l'algorithme de tri à bulles optimisé (avec arrêt anticipé) vu en cours.
1. Complète le tableau après chaque passage, avec le nombre d'échanges effectués. (3 pts)
| Passage | Tableau après passage | Nb échanges |
|---|---|---|
| Initial | [56, 18, 33, 9, 41] | — |
| 1 | ||
| 2 | ||
| 3 | ||
| 4 |
2. Donne la complexité, dans le pire des cas, du tri à bulles pour un tableau de \(n\) éléments. (1 pt)
3. Un lot comporte cette fois \(n = 200\) composants. Estime le nombre maximal de comparaisons effectuées par le tri à bulles sur ce lot (utilise \(\dfrac{n(n-1)}{2}\)). (1 pt)
1.
| Passage | Tableau après passage | Nb échanges |
|---|---|---|
| Initial | [56, 18, 33, 9, 41] | — |
| 1 | [18, 33, 9, 41, 56] | 4 |
| 2 | [18, 9, 33, 41, 56] | 1 |
| 3 | [9, 18, 33, 41, 56] | 1 |
| 4 | [9, 18, 33, 41, 56] | 0 → arrêt |
2. \(O(n^2)\), quadratique.
3. \(\dfrac{200 \times 199}{2} = 19\,900\) comparaisons au maximum.
Un technicien de maintenance programme la régulation d'un bain thermostaté à l'aide de la classe PID du cours, avec \(K_p = 1{,}5\), \(K_i = 0{,}3\), \(K_d = 0\) (terme dérivé négligé) et \(T_e = 1\,\text{s}\). La consigne est de 90 °C.
1. Complète les deux lignes manquantes de la méthode calculer (sans terme dérivé) : (2 pts)
class PID:
def __init__(self, Kp, Ki, Te):
self.Kp = Kp
self.Ki = Ki
self.Te = Te
self._somme_e = 0.0
def calculer(self, consigne, mesure):
e = consigne - mesure
______________________________ # mise à jour de la somme cumulée
u = ______________________________ # calcul de la commande u
return u
2. Les deux premières mesures relevées par le capteur sont 70 °C puis 79 °C. Complète le tableau de trace pour \(k = 0\) et \(k = 1\) : erreur \(e_k\), somme cumulée, commande \(u_k\). (3 pts)
| k | mesure | \(e_k\) | somme cumulée | \(u_k\) |
|---|---|---|---|---|
| 0 | 70 | |||
| 1 | 79 |
1.
def calculer(self, consigne, mesure):
e = consigne - mesure
self._somme_e += e * self.Te
u = self.Kp * e + self.Ki * self._somme_e
return u
2.
| k | mesure | \(e_k = 90 - \text{mesure}\) | somme cumulée | \(u_k = 1{,}5\,e_k + 0{,}3 \times \text{somme}\) |
|---|---|---|---|---|
| 0 | 70 | 20 | 20,0 | 1,5×20 + 0,3×20,0 = 36,0 |
| 1 | 79 | 11 | 31,0 | 1,5×11 + 0,3×31,0 = 25,8 |