Académique Documents
Professionnel Documents
Culture Documents
Un logement peut être, soit une maison, soit une chambre dans un hôtel. Une
chambre d'hôtel est un logement caractérisé en plus par son type (chaine de caractères,
exemple : 'Double', 'Single', 'Twin', …). Tandis qu'une maison est caractérisée en plus par le
nombre de ses chambres (entier).
Partie I :
Dans cette partie, on se propose de développer les classes : Logement, Maison,
ChambreHotel et Agence:
1/5
3- Développer la classe Maison dérivant de la classe Logement. La classe Maison
comporte:
— le(s) attribut(s) nécessaire(s).
— un constructeur qui prend autant de paramètres que d'attributs.
— une méthode __repr__()
— la méthode prixTotal() qui calcule et retourne le prix de logement selon la formule:
Partie II:
Afin de tester les classes créées :
2/5
Problème 2: (10 points)
Partie I:
En analyse numérique, la factorisation de Cholesky, consiste, pour une matrice symétrique
définie positive A d’ordre N, à déterminer une matrice triangulaire inférieure L telle
que : A=L.LT. La matrice L est en quelque sorte une « racine carrée » de A.
Une variante de cette factorisation, nommée décomposition de Cholesky alternative,
permet d'éviter l'utilisation des racines carrées au sein des sommes et consiste à écrire la
matrice A sous la forme A=L.D.LT, que nous notons A=L.D.Lt, où D est une matrice
diagonale, L une matrice triangulaire inférieure avec des 1 sur sa diagonale et Lt sa
transposée qui est une matrice triangulaire supérieure avec des 1 sur la diagonale. Les
matrices L, D et Lt sont des matrices carrées d’ordre N.
Dans toute la suite, on supposera que la matrice A est une matrice symétrique définie positive.
𝟏 𝟎 … 𝟎 … 𝟎 𝒅𝟎𝟎 𝟎 … 𝟎 … 𝟎
𝒍𝟏𝟎 𝟏 𝟎 𝟎 … 𝟎 𝟎 𝒅𝟏𝟏 … 𝟎 … 𝟎
… … 𝟏 … … … … 𝟎 … … … …
L= 𝒍𝒊𝟎 𝒍𝒊𝟏 … 𝟏 𝟎 𝟎 D= 𝟎 𝟎 𝟎 𝒅𝒊𝒋 … 𝟎
… … … … 𝟏 𝟎 … … … 𝟎 … …
[𝒍(𝒏−𝟏)𝟎 𝒍(𝒏−𝟏)𝟏 … … 𝒍(𝒏−𝟏)(𝒏−𝟐) 𝟏] [ 𝟎 𝟎 … 𝟎 𝟎 𝒅(𝒏−𝟏)(𝒏−𝟏) ]
3/5
Les matrices L et D sont calculées par les formules de récurrences suivantes:
𝒋−𝟏
𝒋−𝟏
𝟏
𝒍𝒊𝒋 = ( 𝒂𝒊𝒋 − ∑ 𝒍𝒊𝒌 𝒍𝒋𝒌 𝒅𝒌𝒌 ) 𝒑𝒐𝒖𝒓 𝒋 ≤ 𝒊 ≤ 𝒏 − 𝟏
𝒅𝒋𝒋
𝒌=𝟎
Travail demandé :
Partie II :
On se propose de développer un programme Python permettant la résolution d’un système
matriciel A.X=B où A et B sont deux matrices données.
L.D.Lt . X = B
En posant :
𝒁 = 𝐃. 𝑳𝒕. 𝐗 ; on obtient 𝐋. 𝐙 = 𝑩
Y = 𝑳𝒕. 𝐗 ; on obtient 𝑫. 𝒀 = 𝒁
𝐋. 𝐙 = 𝑩
{ 𝑫. 𝒀 = 𝒁
𝑳𝒕. 𝐗 = 𝐘
Dans la suite, nous utiliserons les notations suivantes :
𝒙𝟎 𝒚𝟎 𝒛𝟎 𝒃𝟎
𝒙𝟏 𝒚𝟏 𝒛𝟏 𝒃𝟏
… … … …
X= 𝒙𝒊 Y= 𝒚𝒊 Z= 𝒛𝒊 B=
𝒃𝒊
… … … …
[𝒙(𝒏−𝟏) ] [𝒚(𝒏−𝟏) ] [𝒛(𝒏−𝟏) ] [𝒃(𝒏−𝟏) ]
4/5
Pour la résolution du système L.Z=B, on utilise les formules de récurrences suivantes :
𝒃𝟎
𝒛𝟎 =
𝒍𝟎𝟎
𝒊−𝟏
𝟏
𝒛𝒊 = (𝒃𝒊 − ∑ 𝒍𝒊𝒋 𝒛𝒋 ) 𝒊 ∊ {𝟏, 𝟐, … , 𝒏 − 𝟏}
𝒍𝒊𝒊
{ 𝒋=𝟎
Travail demandé :
∑ 𝒍𝒊𝒋 𝒛𝒋
𝒋=𝟎
∑ 𝒍𝒕𝒊𝒋 𝒙𝒋
𝒋=𝒊+𝟏
3. saisieVecteur (n) qui permet de saisir une matrice B de réels ayant n lignes et une
colonne
4. calculerZ (L, B) qui permet de calculer et renvoyer le vecteur Z solution du système
L.Z = B.
5. calculerY (D, Z) qui permet de calculer et renvoyer le vecteur Y solution du système
D.Y = Z.
6. calculerX (Lt, Y) qui permet de calculer et renvoyer le vecteur X solution du
système 𝐋𝐭. 𝐗 = 𝐘.
7. resolutionCholesky(A,B) qui permet de résoudre le système A.X=B selon la
méthode de Cholesky puis d’afficher le vecteur X résultant ainsi que le vecteur XS
solution du même système par la fonction prédéfinie solve(A,B) du sous module
linalg du module numpy.
5/5