TP 1 : Révisions Python#

Calcul#

Question

Écrire une fonction somme(n) renvoyant \(\sum_{i=1}^n \sqrt{i}\).

somme(100000)
21082008.973917928

Question

Écrire une fonction somme_riemann(f, a, b, n) renvoyant \(\frac{b - a}{n}\sum_{k=0}^n f(a + k \frac{b-a}{n})\).

def f(x): # pour tester
    return x**.5
somme_riemann(f, 0, 10, 1000)
21.097455887480724

Question

Écrire une fonction fact(n) renvoyant \(n!\).

fact(5)
120

Question

Écrire une fonction borne(p) renvoyant le plus petit entier \(n\) tel que \(2^n > p\).

borne(100000)
17

Question

Écrire une fonction nombre(n) renvoyant le nombre d’entiers entre \(0\) et \(n\) qui sont multiples de \(3\) ou de \(5\).

nombre(100000)
46667

Tuples#

Question

Écrire une fonction distance(p1, p2) renvoyant la distance euclidienne entre les points p1 et p2, où p1 et p2 sont des couples.
On rappelle qu’on peut accéder aux éléments d’un tuple comme pour une liste (p[0] pour le 1er élément, par exemple).

distance((0, 0), (3, 4))
5.0

Listes#

Question

Écrire une fonction syracuse(a) renvoyant la liste des \(u_k\) définies par la suite suivante, où on arrêtera de calculer les termes de la suite dès que l’on obtient \(1\) :

\[\begin{align*} u_0 &= a \\ u_{n+1} &= \begin{cases} \frac{u_n}{2} & \text{si } u_n \text{ est pair} \\ 3u_n + 1 & \text{si } u_n \text{ est impair} \end{cases} \end{align*}\]
syracuse(3) # [3, 10, 5, 16, 8, 4, 2, 1, 4, 2]
[3, 10, 5, 16, 8, 4, 2, 1]

Question

Écrire une fonction suite2(n) renvoyant le couple \((u_n, v_n)\) où :

\[\begin{align*} u_0 &= 3 \\ u_{n+1} &= 2u_n + 4v_n\\ v_0 &= 2 \\ v_{n+1} &= u_n - v_n \end{align*}\]
suite2(4)
(308, 97)

Question

Écrire une fonction moyenne(L) qui renvoie la moyenne des éléments de la liste L.

moyenne([9, 2, 8, 4, 5]) # 5.6
5.6

Question

Écrire une fonction variance(L) qui renvoie la variance des éléments de la liste L, donnée par \(\frac{1}{n}\sum_i (L[i] - m)^2\)\(m\) est la moyenne de L.
On évitera de calculer plusieurs fois la moyenne.

variance([9, 2, 8, 4, 5]) # 6.64
6.640000000000001

Question

Écrire une fonction inverse(L) qui renvoie la liste des éléments de L dans l’ordre inverse.

inverse([1, 2, 3, 4, 5]) # [5, 4, 3, 2, 1]
[5, 4, 3, 2, 1]

Question

Écrire une fonction positifs(L) qui renvoie la liste des éléments de L strictement positifs.

positifs([1, -2, 3, -4, 5, -6, 7, -8, 9, -10])
[1, 3, 5, 7, 9]

Question

Écrire une fonction tous_pairs(L) qui renvoie True si tous les éléments de L sont pairs, False sinon.

print(tous_pairs([2, 4, 6, 8, 10])) # True
print(tous_pairs([2, 4, 6, 8, 10, 11])) # False
True
False

Question

Écrire une fonction croissante(L) qui renvoie True si les éléments de L sont dans l’ordre croissant, False sinon.

print(croissante([1, 2, 3, 4, 5])) # True
print(croissante([1, 2, 3, 4, 3])) # False
True
False

Question

Écrire une fonction concatene(L1, L2) renvoyant une liste composée des éléments de L1 suivis des éléments de L2.

concatene([1, 2, 3], [4, 5, 6])
[1, 2, 3, 4, 5, 6]

Question

Écrire une fonction separe(L) qui renvoie un couple de deux listes, la première contenant les éléments d’indices pairs de L et la seconde les éléments d’indices impairs.

separe([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
([2, 4, 6, 8, 10], [1, 3, 5, 7, 9])

Question

Écrire une fonction produit_scalaire(u, v) renvoyant le produit scalaire de u et v, où u et v sont des listes de même longueur.

produit_scalaire([1, 2, 3], [4, 5, 6]) # 32
32

Matrices#

Dans les questions suivantes, il est interdit d’utiliser numpy.

Question

Écrire une fonction creer_matrice(n, p, x) qui renvoie une matrice de taille à \(n\) lignes, \(p\) colonnes dont tous les éléments sont égaux à x.

creer_matrice(3, 4, 2)
[[2, 2, 2, 2], [2, 2, 2, 2], [2, 2, 2, 2]]

Question

Écrire une fonction matrice_identite(n) qui renvoie la matrice identité de taille \(n\).

matrice_identite(4)
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]

Question

Écrire une fonction transposee(M) qui renvoie la transposée de la matrice M.

transposee([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Question

Écrire une fonction egal(M1, M2) qui renvoie True si les matrices M1 et M2 sont égales, False sinon.

print(egal([[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 5, 6], [7, 8, 9]])) # True
print(egal([[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 5, 6], [7, 8, 10]])) # False
True
False

Question

Écrire une fonction symetrique(M) qui renvoie True si la matrice M est symétrique, False sinon.

print(symetrique([[1, 2, 3], [2, 4, 5], [3, 5, 6]])) # True
print(symetrique([[1, 2, 3], [2, 4, 7], [3, 5, 6]])) # False
True
False