Calcul Formel et Sciences de la Matière — Janvier 2010
Durée 3 heures — Documents et calculatrices interdits
Prenez le temps de lire ce sujet. Les questions sont indépendantes pour la plupart.
1 Matrices creuses (10 points)
Une matrice creuse est une matrice dont presque tous les éléments sont nuls. Pour gagner de la
place en mémoire et du temps de calcul, on utilise souvent une structure de données adaptée. Dans
les questions qui suivent, on représente une matrice creuse par une liste de triplets
M= [[`1, c1, v1],[`2, c2, v2],..., [`p, cp, vp]].
Dans un un triplet [`i, ci, vi], les entiers `iet cisont des indices de ligne et de colonne. Le réel vi
est la valeur de l’élément de M, ligne `iet colonne ci. On ne stocke dans Mque les valeurs vinon
nulles. Les triplets ne sont pas triés.
Question 1 [1 pt]. La liste suivante représente une matrice 4×4. Quelle matrice ?
M= [[1,3,2],[4,4,1],[4,2,13]].
Réponse :
0 0 2 0
0 0 0 0
0 0 0 0
0 13 0 1
Question 2 [2 pts]. Écrire une fonction mul_cste, paramétrée par une matrice creuse Met un
réel cet qui retourne la matrice creuse obtenue en multipliant tous les éléments de Mpar c. Atten-
tion au cas où cvaut zéro.
Réponse :
mul_cste := proc (M, c)
local R, i, triplet;
if c = 0 then
R := []
else
R := NULL;
for i from 1 to nops (M) do
triplet := M[i];
R := R, [triplet[1], triplet[2], c*triplet[3]]
od;
R:=[R]
fi;
R
end:
1
Question 3 [2 pts]. Écrire une fonction nombre_de_lignes, paramétrée par une matrice creuse M
et qui retourne le maximum des indices de lignes `i.
Réponse :
# On suppose M non vide
nombre_de_lignes := proc (M)
local nb, i, triplet;
triplet := M[1];
nb := triplet[1];
for i from 2 to nops (M) do
triplet := M[i];
if triplet[1] > nb then
nb := triplet[1]
fi
od;
nb
end:
Question 4 [2 pts]. Écrire une fonction valeur, paramétrée par une matrice M, deux indices `, c
et qui retourne la valeur de l’élément de M, ligne `et colonne c.
Donner de préférence une solution « élégante » qui utilise un while et qui évite de parcourir
toute la liste lorsque c’est inutile.
Réponse :
valeur := proc (M, l, c)
local v, i, triplet;
v := 0;
i := 1;
while i <= nops (M) and v = 0 do
triplet := M[i];
if triplet[1] = l and triplet[2] = c then
v := triplet[3]
fi;
i := i+1
od;
v
end:
Question 5 [3 pts]. Donner une spécification de la fonction de la Figure 1 (on suppose les fonc-
tions nombre_de_lignes et nombre_de_colonnes implantées). Cette fonction comporte une mal-
adresse. Laquelle ? Proposer une correction.
Réponse : La fonction scadoosh est une fonction qui va de l’ensemble des matrices creuses
dans l’ensemble des booléens. Elle retourne vrai si son paramètre est une matrice diagonale, faux
sinon.
Maladresse : dans certains cas, la boucle for parcourt inutilement toute la matrice. On peut
arrêter les itérations dès que resultat passe à faux.
Correction :
2
scadoosh := proc (M)
local dimlig, dimcol, resultat, triplet, i;
dimlig := nombre_de_lignes (M);
dimcol := nombre_de_colonnes (M);
if dimlig <> dimcol or dimlig <> nops (M) then
resultat := false
else
resultat := true;
for i from 1 to nops (M) do
triplet := M [i];
if triplet [1] <> triplet [2] then
resultat := false
fi
od
fi;
return resultat
end:
FIG. 1 – La fonction scadoosh.
i := 1;
resultat := true;
while i <= nops (M) and resultat do
triplet := M [i];
if triplet [1] <> triplet [2] then
resultat := false
fi;
i := i+1
od
2 Méthode de Newton (3 points)
Question 6 [2 pts]. En utilisant la méthode de Newton et en partant du polynôme x33, donner
une suite (relation de récurrence et condition initiale) qui converge vers la racine cubique de 3.
Réponse : Relation de récurrence : xn+1 = (2/3) xn+ 1/x2
n. Condition initiale : x0= 3 (par
exemple).
Question 7 [1 pt]. Que peut–on dire de la vitesse de convergence de cette suite ? Justifier.
Réponse : La vitesse de convergence est quadratique, parce que la racine cubique de 3est une
racine simple du polynôme.
3 Moyenne et variance (3 points)
La moyenne md’une liste de réels (αi)est égale à la somme des αi, divisée par leur nombre.
La variance de cette liste est la moyenne des carrés des écarts à la moyenne (mαi)2.
3
Question 8 [3 pts]. Écrire deux fonctions, moyenne et variance, qui permettent de calculer la
moyenne et la variance d’une liste de réels. Éviter au maximum de programmer plusieurs fois le
même calcul.
Réponse :
moyenne := proc (L)
local m, i;
m := 0;
for i from 1 to nops (L) do
m := m + L[i]
od;
m / nops (L)
end:
variance := proc (L)
local m, S, i;
m := moyenne (L);
S := [ seq ((m - L[i])^2, i = 1 .. nops (L)) ];
moyenne (S);
end:
4 Équations différentielles (5 points)
Question 9 [2 pts]. Faire l’analyse qualitative (points fixes, stabilité, ligne de phase) de l’équation
suivante : d
dtx(t) = (x4)(x7).
Réponse : les points fixes sont 4et 7. Le point fixe 7est attractif. Le point fixe 4est répulsif.
Question 10 [1 pt]. Appliquer la méthode d’Euler à l’équation précédente, sur l’intervalle [a, b] =
[0,1] en N= 3 pas, pour la condition initiale x(a)=4.
Réponse : on calcule 4points (ti, xi)pour 0i3. On a ti=i N/3et xi= 4 pour
0i3.
Question 11 [2 pts]. Supposons que l’analyse qualitative (points fixes, stabilité, ligne de phase)
de l’équation suivante soit faite.
d
dtx(t) = f(x(t)).
Peut–on en déduire, sans calcul, l’analyse qualitative de l’équation suivante, obtenue en changeant
le signe du membre droit
d
dtx(t) = f(x(t)) ?
Si oui, que suffit–il de faire ?
4
Réponse : oui. Les points fixes sont conservés. Les natures changent : les points fixes stables
deviennent instables ; les points fixes instables deviennent stables (par contre, les nœuds restent
des nœuds).
5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !