Feuille d'exercices sur Python (spé mathématiques)
Un interpréteur Python est fourni ci-dessous et en bas de page pour pouvoir tester les programmes, si nécessaire.
En cas de doute n'hésitez pas à ajouter des print(nom_de_la_variable)
pour mieux comprendre ce qui se passe...
Des exercices pour comprendre
Exercice 1
On considère la fonction suivante, où \(n\) est un entier naturel:
1 2 3 4 |
|
-
Quelle est la valeur retournée par cet algorithme pour \(n = 11\) ?
-
Quelle est la valeur retournée par cet algorithme pour \(n = 35\) ?
-
Quelle est la valeur retournée par cet algorithme pour \(n = 40\) ?
Corrigé
- La valeur retournée est 1
- La valeur retournée est 5
- La valeur retournée est 10
Exercice 2
On considère le programme suivant, où S est un nombre décimal :
1 2 3 4 5 6 |
|
-
Appliquer ce programme pour \(S = 6500\).
On place 6500€ à intérêts composés au taux semestriel de 5%.
-
Au bout de combien de semestres le capital acquis sera-t-il de plus de 8000€ ?
-
Que faut-il modifier dans le programme pour déterminer au bout de combien de semestres le capital acquis dépassera 10000€ ?
Corrigé
-
Il retourne \(n=5\) et \(S \approx 8295.83\)
-
Au bout de 5 semestres le capital acquis dépassera 8000€
-
On remplace la troisième ligne par
while S<10000
.
Exercice 3
On considère le programme suivant:
1 2 3 4 5 6 7 8 9 |
|
-
Que fait ce programme ? L'exécuter et préciser le résultat final affiché (on mettra le détail des étapes et les résultats intermédiaires en les présentant dans un tableau par exemple).
-
Proposer une relation de récurrence permettant d'expliquer ce que ce programme permet de calculer.
Corrigé
-
Au départ \(a=0\), \(b=1\) et \(k=0\).
Le tableau donne les valeurs des variables à la fin de chaque exécution de la boucle
while
.Au départ \(a=0\), \(b=1\) et \(k=0\).
\(u\) \(a\) \(b\) \(k\) 1 1 1 2 2 1 2 3 3 2 3 4 5 3 5 5 8 5 8 6 -
On reconnaît la suite de Fibonacci. \(u_{n+2}=u_{n+1}+u_{n}\).
Exercice 4
La suite \((u_n)\) est définie pour tout entier naturel \(n\) non nul.
La fonction ci-dessous permet de calculer son terme d'indice \(n\).
1 2 3 4 5 6 |
|
-
Faire tourner la fonction pour \(n = 3\). Remplir un tableau décrivant l'évolution de \(u\). Que vaut \(u_3\) ?
-
Même chose pour \(n = 4\).
-
Exprimer le terme général de \(u_n\) en fonction de \(n\) sous forme d'une somme.
-
a. Un tableur fournit les 9 premiers termes de la suite \((u_n)\).
\(n\) \(1\) \(2\) \(3\) \(4\) \(5\) \(6\) \(7\) \(8\) \(9\) \(u_n\) 0 1 2.67 5 8 11.67 16 21 26.67 \(3u_n\) 0 3 8 15 24 35 48 63 80 À l'aide de la troisième ligne, donnant les 9 premières valeurs de \(3u_n\), conjecturer l'expression de \(u_n\) en fonction de \(n\).
b. Montrer que pour tout \(n \in \mathbb{N}\), \(u_{n+1}=\dfrac{1}{n+1} \times (nu_n+n(n+1))=\dfrac{nu_n}{n+1}+n\).
c. Démontrer par récurrence la conjecture du a.
Corrigé
-
Avant la boucle
for
,i
n'est pas affecté etu
vaut 3.u
i
3 1 5 2 11 3 À la fin du programme, on retourne \(u_3=\dfrac{11}{3}\).
-
Avant la boucle
for
,i
n'est pas affecté etu
vaut 4.u
i
4 1
Exercice 5
-
Soit \(f\) la fonction définie par \(f(x)=x^3-3x^2+2\).
a. Étudiez le sens de variation de \(f\).
b. Calculer \(f(-20)\) et \(f(30)\).
c. Déterminer le nombre de solutions de l'équation \(f(x)=0\) (Justifier).
-
Programme
1 2 3 4 5 6 7 8 9 10
a=float(input("Entrez la borne gauche")) b=float(input("Entrez la borne droite")) if f(b)*f(a)<=0: while b-a>10**(-5): if f((a+b)/2)*f(a)<=0: b=(a+b)/2 else: a=(a+b)/2 print(a,b)
a. Qu'implique la condition
f(b)*f(a)<=0
sur \(f(b)\) et \(f(a)\) ?b. Que représente \(\dfrac{a+b}{2}\) par rapport à \(a\) et \(b\) ?
c. Que fait ce programme ?
d. Copier/coller le programme dans l'interpréteur Python ci-dessous.
e. Que se passe-t-il si l'utilisateur entre les valeurs \(a=-20\), \(b=30\) ? \(a=-20\) et \(b=3\) ? \(a=0\) et \(b=3\) ?
Exercice 6
Soit le programme:
1 2 3 4 5 6 7 8 9 10 |
|
-
À quelle ligne peut-on lire la fonction utilisée ?
-
Que fait ce programme ? À quoi correspondent
c
etmaxi
? -
Sans exécuter ce programme, indiquer le couple de valeurs obtenu.
-
Quelle ligne du programme doit-on modifier pour étudier la fonction définie par \(f(x)=x\ln{x}-x\) ?
-
Soit la fonction définie sur \([-1;1]\) par \(f(x)=x\sqrt{1-x^2}\). Étudier le sens de variation de cette fonction.
Le résultat obtenu par le programme est-il cohérent avec les résultats théoriques ?
Corrigé
-
à la ligne 6
-
Ce programme retourne le maximum de la fonction \(f(x)=x\sqrt{1-x^2}\) sur l'intervalle \([0;1]\), ainsi que son abscisse.
-
Le programme retourne \(0.7\) et \(f(0.7) \approx 0.499899\).
-
On doit remplacer
y=x*sqrt(1-x**2)
pary=x*ln(x)-x
. -
Des maths faciles !
Exercice 7
Soit la fonction \(f\) définie sur \(\mathbb{R}\) par \(f(x)=4e^{0.5x}-5\).
On considère le programme en Python suivant:
1 2 3 4 5 6 7 |
|
a. On entre une valeur de \(p\) égale à \(0.1\). Quelles sont les valeurs renvoyées ?
b. On a fait fonctionner le programme avec une certaine valeur de \(p\) et on a obtenu en sortie les nombres \(0.44\) et \(0.45\). Quelle valeur de \(p\) avait-on choisie en entrée ?
c. On entre une valeur de \(p\) égale à \(0.001\). Quelles sont les valeurs retournées ?
Exercice 8
On suppose que l'on dispose d"une fonction \(f\) continue sur \(\mathbb{R}\), de deux valeurs \(a\) et \(b\) réelles telles que \(a<b\) et d'un nombre réel \(p\).
On considère alors le programme en Python suivant:
1 2 3 4 5 |
|
-
Prévoir ce que ce programme va afficher pour \(f(x)=3x-1\), \(a=0\), \(b=1\) et \(p=0.1\).
-
On suppose dans cette question que l'on a \(f(x)=3x-1\), \(a=0\), \(b=1\) et \(p=0.1\).
a. Pourquoi ce programme s'arrête-t-il toujours ? Peut-on prévoir le nombre maximal d'étape qu'il aura à accomplir ?
b. Expliquer pourquoi il n'y a qu'une seule valeur affichée par ce programme. Pour quelle(s) valeur(s) de \(p\) affiche-t-il \(0.2\) ? Peut-il afficher \(0.1\) ?
-
Expliquer ce que permet d'afficher ce programme en général. (\(f\),\(a\) et \(b\) étant quelconques).
Exercice 9
Dans un lycée, un code d'accès à la photocopieuse est attribué à chaque professeur. Ce code à quatre chiffres choisis dans la liste [0,1,2,3,4,5,6,7,8,9]
, chaque chiffre pouvant être répété à l'intérieur d'un même code. Exemples: \(0027\) et \(4879\).
-
Combien de codes sont possibles ?
-
Ce code permet aussi de définir un identifiant pour l'accès au réseau informatique. L'identifiant est constitué du code précédent (noté \(n\)) et d'une clé calculée avec le programme ci-dessous:
1 2 3 4 5 6 7 8 9 10 11 |
|
Quel est l'identifiant associé au code 2282 ?
Exercice 10
Déterminer le nombre affiché en sortie du programme ci-dessous, si on le fait fonctionner pour \(n=3\).
1 2 3 4 5 6 7 8 |
|
Exercice 11
On considère la fonction suivante:
1 2 3 4 5 6 7 8 9 |
|
-
Justifier que, pour \(n=3\), l'affichage obtenu est \(11\) pour \(u\) et \(21\) pour S.
-
Reproduire et compléter le tableau suivant :
Valeur de \(n\) | \(0\) | \(1\) | \(2\) | \(3\) | \(4\) | \(5\) |
---|---|---|---|---|---|---|
Affichage pour \(u\) | \(11\) | |||||
Affichage pour \(S\) | \(21\) |
Exercice 12
Voici un programme qui permet de réaliser une simulation:
1 2 3 4 5 6 7 8 9 |
|
Décrire l'expérience que permet de simuler ce programme.
Corrigé
Ce programme permet de simuler n
fois le lancer d'un dé et retourne une liste qui contient le nombre de fois que le 1 est obtenu, le nombre de fois que le 2 est obtenu, le nombre de fois que le 3 est obtenu,...
RAPPELS
L.append(u)
ajoute l'élémentu
à la listeL
, en dernière position.len(L)
renvoie le nombre d'éléments dans la liste.L[3]
renvoie le 4ème élément de la liste (décalage carL[0]
est le premier).L[3]=6
remplace le 4ème élément par 6.L=[3*n for n in range(4)]
affecte àL
la liste[0,3,6,9]
.
Exercice 13
Soit le programme suivant:
1 2 3 4 5 6 |
|
Expliquer le fonctionnement de ce programme et donner ce qu'il affiche.
Corrigé
Ce programme teste si chaque élément de la liste L
est positif et stocke cet élément dans la liste R
si c'est le cas.
Des exercices du type baccalauréat
Exercice 14
Soit \(\left(u_n\right)\) la suite définie par \(u_0=-8\) et pour tout \(n\in \mathbb{N}\) : \(u_{n+1}=5-4u_n\).
Compléter les deux algorithmes afin qu'ils renvoient la valeur de \(u_{10}\) .
u=...
for i in range(...):
u=...
return ...
u=...
n=...
while ... :
u=...
n=...
return ...
Exercice 15
Soit \(\left(u_n\right)\) la suite définie par \(u_0=-8\) et pour tout \(n\in \mathbb{N}\) : \(u_{n+1}=5-4u_n\).
Compléter les deux algorithmes afin qu'ils renvoient la liste de tous les termes jusqu'à \(u_{10}\).
u=...
L=[u]
for i in range(...):
u=...
L.append(u)
return ...
u=...
n=...
L=[u]
while ... :
u=...
n=...
L.append(u)
return ...
Exercice 16
-
Soit \(\left(u_n\right)\) la suite définie par \(u_0=6\) et pour tout \(n\in \mathbb{N}\) : \(u_{n+1}=1,5u_n+2\).
On admet que \(\left(u_n\right)\) diverge vers \(+\infty\).
Compléter l'algorithme afin qu'il renvoie le premier rang à partir duquel \(u_n>148\).
u=... n=... while ... : u=... n=... return ...
-
Soit \(\left(u_n\right)\) la suite définie par \(u_1=-5\) et pour tout \(n\in \mathbb{N}\) : \(u_{n+1}=\sqrt{u_n+6}\).
On admet que \(\left(u_n\right)\) converge vers \(3\).
Compléter l'algorithme afin qu'il renvoie le premier rang \(n\) à partir duquel \(3-u_n<10^{-3}\).
u=... n=... while ... : u=... n=... return ...
Exercice 17
Soit \(\left(u_n\right)\) la suite définie par \(u_0=3\) et pour tout \(n\in \mathbb{N}\) : \(u_{n+1}=u_n+4\).
Compléter les algorithmes suivants afin qu'ils renvoient la valeur de la somme \(S=u_0+u_1+u_2+...+u_{14}\).
u=...
S=...
for i in range(...):
u=...
S=...
return ...
u=...
n=...
S=...
while ... :
u=...
n=...
S=...
return ...
Exercice 18
Dans chaque cas, expliquer ce que renvoie la fonction décrite dans l'algorithme, en explicitant la suite concernée.
def Algo1(n):
u=5
for i in range(n):
u=-3*u+4
return u
def Algo2(n) :
u=-5
for i in range(n):
u=u-6*i
return u
def Algo3(A):
u=1
n=0
while u<=A:
u=1.4*u+1
n=n+1
return n
def Algo4(A) :
u=1354
n=1
while u>A:
u=0.5*u
n=n+1
return n
def Algo5(n):
u=1
S=u
for i in range(n):
u=u+5
S=S+u
return S
def Algo6(A) :
u=1354
n=0
S=u
while S<A:
u=2*u+2
n=n+1
S=S+u
return n
Exercice 19
On admet que la fonction \(f\) définie pour tout \(x\in\left[-2;1\right]\) par \(f(x)=x^3+x+1\) est strictement croissante sur \(x\in\left[-2;1\right]\) et s'annule en un réel \(\alpha\in\left[-2;1\right]\).
-
Que retourne l'algorithme suivant ? interpréter le résultat.
a=-2 p=0.01 while a**3+a+1<0 : a=a+p return a-p,a
-
Que permet de renvoyer l'algorithme suivant ?
def Balay(k): a=-2 p=10**(-k) while a**3+a+1<0 : a=a+p return a-p,a
-
Enfin, que permet de renvoyer l'algorithme suivant ?
def fonct(x): y=x**3+x+1 return y def Balay(k): a=-2 p=10**(-k) while fonct(a)<0 : a=a+p return a-p,a
Exercice 20
Fonction croissante
On admet que la fonction \(f\) définie pour tout \(x\in\left[-2;1\right]\) par \(f(x)=x^3+x+1\) est strictement croissante sur \(x\in\left[-2;1\right]\) et s'annule en un réel \(\alpha\in\left[-2;1\right]\).
-
À quoi sert l'algorithme suivant ?
a=-2 b=1 while b-a>0.01: c=(a+b)/2 if c**3+c+1<0: a=c else: b=c return a,b
Autres versions possibles :
def Dicho(p): a=-2 b=1 while b-a>10**(-p): c=(a+b)/2 if c**3+c+1<0: a=c else: b=c return a,b
def fonct(x): y=x**3+x+1 return y def Dicho(p): a=-2 b=1 while b-a>10**(-p): c=(a+b)/2 if fonct(c)<0: a=c else: b=c return a,b
Fonction monotone
Adaptation à une fonction monotone dont on ne sait pas si elle est croissante ou décroissante :
def Dicho(p):
a=-2
b=1
while b-a>10**(-p):
c=(a+b)/2
if (a**3+a+1)*(c**3+c+1)>0:
a=c
else:
b=c
return a,b
def fonct(x):
y=x**3+x+1
return y
def Dicho(p):
a=-2
b=1
while b-a>10**(-p):
c=(a+b)/2
if fonct(a)*fonct(c)>0:
a=c
else:
b=c
return a,b
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)