Vous êtes sur la page 1sur 3

Année scolaire 2023/2024

ECG 2B
M. Brunault

TP d’informatique n°1 - Révisions

1 Mode d’emploi à suivre pour tous les TP


1. En arrivant en salle informatique, connectez vous à votre session avec votre identifiant réseau
2. Récupérez le fichier source TP1.py dans le dossier professeur sur le serveur du lycée
3. Enregistrez une copie que vous nommez TP1_NOM.py dans votre dossier sur le serveur du lycée
4. Ne modifiez que cette copie ! Jamais le fichier d’origine
5. Rédigez votre code individuellement, compilez et testez vos résultats
6. Envoyez votre fichier à informatiqueecg2@gmail.com au plus tard le vendredi avant le TP suivant
7. Vous pouvez travailler sur votre ordinateur personnel à condition d’avoir installé Pyzo ainsi que les bibliothèques du
langage Python utilisées en classe
8. Pour installer une nouvelle bibliothèque depuis la ligne de commande Pyzo, tapez pip install "Nom"
9. En fin de séance, merci de fermer votre session, et d’éteindre votre poste de travail

2 Variables, types et affectation


Q1 Pour chacune de ces expressions de type bool, indiquer si sa valeur est True ou False. Vérifier les résultats avec la
console Python.
3 > 4
4.0 > 3.999
4 > 4
2 + 2 == 4
True or False
False or False
not False
3.0 - 1.0 != 5.0 - 3.0
3 > 4 or (2 <3 and 9 > 10)
not (4 > 3 and 100 > 6)
4 > 5 or 3 < 4 and 9 > 8
Q2 Écrire le résultat attendu de ces instructions. Vérifier les résultats dans la console Python.

x = 2 x = 6 a = 0
y = 7 y = 1 b = - 1
x = 3*x-2 x = y a = a + b
y = y y = x b = a - b
y+x x +y a
x*y x-y b

Q3 On souhaite écrire un programme swap qui échange la valeur des variables a et b. Que proposez-vous ?

1
3 Structures if, for, while
Q4 Écrire un programme qui demande un nombre réel r et renvoie sa racine carrée, ou un message Nombre négatif. On
utilisera from math import sqrt pour importer la fonction racine carrée.
Q5 Écrire le résultat attendu de ces instructions. Vérifier les résultats dans la console Python.

b = 5 b = 5 b = 5
for i in range(0,3): for i in range(0,3): x = b
b = b + 1 b = b + 1 for i in range(0,3):
x = b x = b b = b + 1
print(x) print(x) print(x)

Q6 On considère la suite définie par u0 = −1 et un+1 = 1 − eun . Compléter le code suivant, qui calcule le plus petit entier
n pour lequel |un | < 0.001

from math import exp


u = -1
n = 0
while ( ........................... ):
..................................
..................................
print(’n’, n)
print(’u_n’, u)

4 Fonctions
Q7 Écrire une fonction tente qui associe à un nombre flottant x le nombre 1+x si -1 <= x <= 0, 1-x si 0 <= x <= 1 ;
et 0 sinon.
def tente(x):
.............................
.............................
.............................
Q8 Ecrire une fonction factorielle qui prend en entrée un entier n et qui renvoie n!.

5 NumPy
1. Qu’est-ce que NumPy ? C’est la boite à outils indispensable pour faire du calcul scientifique en Python.
2. A quoi ça sert pour les concours ? C’est la bibliothèque qui permet la manipulation rapide de vecteurs et de matrices.
Elle permet également de simuler des expériences aléatoires. Certaines de ses fonctions sont exigibles par cœur.
3. Comment je l’utilise ? On l’importe avec la commande import numpy as np.
4. Et si je veux en savoir plus ? Lire https ://numpy.org/doc/stable/numpy-user.pdf (531 pages en anglais !)

import numpy as np c = np.array([[1],[3],[2]]) # vecteur colonne


a = np.array([3,5,6]) # vecteur ligne M = np.array([[1,0],[0,1]]) # matrice identité 2x2
b = np.array([]) # vecteur vide

Q9 Effectuer, comprendre et commenter les opérations suivantes

A = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]]) np.matmul(B,C)


np.transpose(A) np.dot(B,C)
np.rank(A) B@C
np.size(A) B*C
B = np.array([[1,2],[3,4]])
C = np.linalg.inv(B),

2
5.1 Progressions arithmétiques
Il y a deux façons de générer des progressions arithmétiques : np.linspace et np.arange.
— np.linspace(a,b,k) crée un vecteur de taille k constitué de valeurs régulièrement réparties dans [a, b]. On contrôle
alors directement la taille du vecteur construit
— np.arange(a,b,pas) crée un vecteur constitué de valeurs dans [a, b[, et espacées de la valeur de pas. On contrôle alors
le pas de la subdivision. Attention, b n’est pas inclus !
Q10 Trouver une commande avec np.arange équivalente à np.linspace(0,1,11)
Q11 Trouver une commande avec np.linspace équivalente à np.arange(4,1,-0.2)

5.2 Matrices
 
1 2 ... n−1 n
2 3 ... n 1 
Q12 Compléter la fonction A qui prend en entrée l’entier n et renvoie la matrice A =  .
 
..
 ..

. ... ... 
n ... ... n−2 n−1
def A(n):
mat = np. ______________________________ # TO DO
for i in range(____________________________): # TO DO
for j in range(__________________________): # TO DO
___________________________________ # TO DO
return mat
On rappelle que a % b renvoie a modulo b.
Q13 Écrire une fonction trace(M) qui prend en entrée une matrice carrée M et renvoie sa trace.

6 Exercices de révisions
Q14 On considère la suite (un ) définie par u0 = 1 et un+1 = 1/2 · (un + u2n ). Construire un vecteur contenant ses 20
premiers termes. Que constate-t-on numériquement ? Commentaire.
Q15 Compléter le programme suivant pour qu’il simule le nombre d’expériences faites avant le premier succès dans une
sucession d’expériences indépendantes de paramètre de succès 1/2.
import numpy as np
import numpy.random as rd
u=rd.random()
y = ------------
while -----------------:
---------------
---------------
print(’la valeur de y est :’,y)
Q16 On considèrep l’application φ définie sur R+ par φ(x) = 1 − x2 · ln(x) si x > 0, φ(x) = 1 sinon. On définit les suites
(an ) et (bn ) par a0 = (2), b0 = 2 et :
— Si φ( an +b
2
n
) est du signe de φ(an ) alors an+1 = an et bn+1 = an +bn
2
— Si φ( an +b
2
n
) est du signe de φ(bn ) alors bn+1 = an et an+1 = an +bn
2
Écrire un programme qui calcule et affiche a7 et b7 R 1 xn
Q17 On considère la suite d’ intégrales définie par In = 0 (1+x) 2 pour n ∈ N. Calculer I0 et I1 puis compléter le script

suivant pour qu’il permette le calcul de In dans la variable b (indication : chercher une relation de récurrence)
import numpy as np

n=int(input(’donnez une valeur pour n: ’))


a=1/2
b=np.log(2)-1/2
for k in range (2,n+1) :
aux = a
a = --------
b = --------
print(b)

Vous aimerez peut-être aussi