0% ont trouvé ce document utile (0 vote)
48 vues9 pages

TD1 CalcMatr

Transféré par

Reda Bouziane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
48 vues9 pages

TD1 CalcMatr

Transféré par

Reda Bouziane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ecole d’Ingénieur de l’Université de Toulon, SeaTech

Calcul Matriciel Numérique

Travaux Dirigés1 Numériques n°1 :

Prise en main d’Octave/Matlab.

1 Introduction.

MATLAB et Octave sont des environnements intégrés pour le Calcul Scientifique et la visualisa-
tion. Ils sont écrits principalement en langage C et C++. MATLAB est distribué par la société The
MathWorks (voir le site [Link]). Son nom vient de MATrix LABoratory, car il a été
initialement développé pour le calcul matriciel. Octave, aussi connu sous le nom de GNU Octave
(voir le site [Link]), est un logiciel distribué gratuitement. Vous pouvez le redistribuer
et/ou le modifier selon les termes de la licence GNU General Public License (GPL) publiée par la
Free Software Foundation.

Il existe des différences entre MATLAB et Octave, au niveau des environnements, des langages de
programmation ou des toolboxes (collections de fonctions dédiées à un usage spécifique). Cepen-
dant, leur niveau de compatibilité est suffisant pour exécuter la plupart des programmes de cours
Calcul Matriciel Numérique indifféremment avec l’un ou l’autre. Quand ce n’est pas le cas – parce
que les commandes n’ont pas la même syntaxe, parce qu’elles fonctionnent différemment ou en-
core parce qu’elles n’existent pas dans l’un des deux programmes – nous l’indiquons et expliquons
comment procéder.

Nous utiliserons souvent dans la suite l’expression “commande MATLAB”: dans ce contexte, MAT-
LAB doit être compris comme le langage utilisé par les deux programmes MATLAB et Octave.

De même que MATLAB a ses toolboxes, Octave possède un vaste ensemble de fonctions disponibles
à travers le projet Octave-forge. Ce dépôt de fonctions ne cesse de s’enrichir dans tous les do-
maines. 2

Un livre appartenant à L’étagère Informatique et Mathématiques sur [Link]


org/wiki/Programmation_Octave vous donnera une aide précieuse pour l’utilisation des outils
de calculs numériques Octave (et Matlab). Ce livre est très simple en utilisation et très illustrative
par des exemples d’applications.

1
Un grand merci à Gloria Faccanoni et Mehmet Ersoy pour la précieuse aide apportée lors de la préparation de ce TD
2
Installation d’Octave sur vos machines personnelles peut-être effectuée en ligne [Link]

1
2 Le travail avec les vecteurs et les matrices.

Exercice 1. Soient les vecteurs et les matrices suivantes:


   
1 −1
~
u1 = 2 ,
  ~
u2 = 4  ;

3 8

   
µ ¶ µ ¶ 13 14 13 14 −1
1 2 3 7 8 9
A= , B= , C =  15 16  , D =  15 16 −2  .
4 5 6 10 11 12
17 18 17 18 −3

Définir ~
u 1 ,~
u 2 , A, B,C sous Octave et effectuer les opérations suivantes:

1. A + B , A ∗C , A +C , i nv(A), d et (A), i nv(D), d et (D),

2. A 1 = d i ag (~
u 1 , −1), A 2 = d i ag (~
u 1 , −2), B 1 = d i ag (~
u 2 , 1), B 2 = d i ag (~
u 1 , 2), C 0 = d i ag (~
u 1 , 0),

3. commenter les résultats.

Exercice 2. Soit la matrice suivante:


 
1 2 3 4 5

 6 7 8 9 10 

F = 11 12 13 14 15 .
 
16 17 18 19 20
 
 
21 22 23 24 25

Il est demandé d’extraire les éléments suivants de la matrice F :

- (4, 5) - éléments se trouvant sur la quatrième ligne et la cinquième colonne,

- troisième vecteur-colonne [F (1, 3); F (2, 3), ..., F (5, 3)],

- les premiers trois éléments [F (1, 3); F (2, 3), F (3, 3)] du troisième vecteur-colonne,

- les trois derniers éléments [F (3, 3); F (4, 3), F (5, 3)] du troisième vecteur-colonne,

- quatrième vecteur-ligne [F (4, 1); F (4, 2), ..., F (4, 5)],

- les premiers trois éléments [F (4, 1); F (4, 2), F (4, 3)] du quatrième vecteur-ligne,

- les trois derniers éléments [F (4, 3); F (4, 4), F (4, 5)] du quatrième vecteur-ligne,

- la sous-matrice 3 × 3 de la matrice F qu’on obtient en enlevant de la matrice donnée la pre-


mière et dernière lignes et la première et la dernière colonnes,

- les éléments de la diagonale de la matrice F ,

2
- les éléments de la sur-diagonale de la matrice F ,

- les éléments de la sous-diagonale de la matrice F .

Rappel 1. Parfois il est utile de savoir que:

• la commande zer os(m, n) construit la matrice rectangulaire nulle Ø, autrement dit celle
dont tous les éléments a i j sont nuls pour i = 1, . . . , m et j = 1, . . . , n.

• la commande zer os(n) est un raccourci pour zer os(n, n),

• la commande ones(m, n) construit une matrice rectangulaire dont les éléments a i j sont
égaux à 1 pour i = 1, . . . , m et j = 1, . . . , n,

• la commande ones(n) est un raccourci pour ones(n, n),

• la commande e ye(m, n) renvoie une matrice rectangulaire dont les éléments valent 0 excep-
tés ceux de la diagonale principale qui valent 1,

• la commande e ye(n) (qui est un raccourci pour e ye(n, n)) renvoie une matrice carrée de
dimension n appelée matrice identité et notée I d ,

• la commande A = [] définit une matrice vide.

3 Création de m-files, définition de fonctions.


Présentation graphique de fonctions mathématiques.

Exercice 3. Copier les instructions suivantes dans un script file. Exécuter le script et commenter
les résultats:

x = [1; 2; 3];
y = [4; 5; 6];
v = x.2
b = sum(x.2 )
s = y0 ∗ x
u = x. ∗ y
p = x.x

Exercice 4. Définir le vecteur x = [ π6 π4 π3 ] et calculer s = si n(x) et c = cos(x). En déduire tan(x) à


l’aide des vecteurs s et c. Vérifier le résultat à l’aide de la commande t an(x).

Exercice 5 (If, for, while).

1. A l’aide de "for", puis "while" construire le vecteur 2i pour i = 1, . . . , 10.

3
2. A l’aide de commande "tic-toc", comparer le temps de calcul pour chaque boucle ("for" et
"while") dans la question précédente.

3. A l’aide de "while", écrire l’algorithme suivant: "tant que x > 10−6 faire, x = x/2" après avoir
initialisé ce dernier avec x = 1.

4. A l’aide de "for" et "if", construire la matrice A dont les coefficients a i , j sont donnés par la
formule ½
sin(i + j ) si cos(i + j ) > 0
ai , j =
0 sinon.
pour i , j = 1, . . . , 10.

Exercice 6. Coïncidences et anniversaires


Combien faut-il réunir d’individus dans une salle de classe pour être certain que deux d’entre eux
possèdent la même date de naissance? La réponse est presque évidente, il en faut 366: même si
les 365 premières personnes ont un anniversaire différent, la 366ème personne aura forcément une
date d’anniversaire commune avec une personne déjà présente.3

Maintenant, passons à une question moins évidente: combien faut il réunir de personne pour
avoir une chance sur deux que deux d’entre elles aient le même anniversaire? Au lieu de nous
intéresser à la probabilité que cet événement se produise, on va plutôt s’intéresser à l’événement
inverse: quelle est la probabilité pour que n personnes n’aient pas d’anniversaire en commun?

1. si n = 1 la probabilité est 1 (100%): puisqu’il n’y a qu’une personne dans la salle, il y a 1


chance sur 1 pour qu’elle n’ait pas son anniversaire en commun avec quelqu’un d’autre dans
la salle (puisque, fatalement, elle est toute seule dans la salle);

2. si n = 2 la probabilité est 364/365 (99,73%): la deuxième personne qui entre dans la salle a
364 chances sur 365 pour qu’elle n’ait pas son anniversaire en commun avec la seule autre
personne dans la salle;

3. si n = 3 la probabilité est 364/365 × 363/365 (99,18%): la troisième personne qui entre dans
la salle a 363 chances sur 365 pour qu’elle n’ait pas son anniversaire en commun avec les
deux autres personnes dans la salle mais cela sachant que les deux premiers n’ont pas le
même anniversaire non plus, puisque la probabilité pour que les deux premiers n’aient pas
d’anniversaire en commun est de 364/365, celle pour que les 3 n’aient pas d’anniversaire
commun est donc 364/365 × 363/365;

4. si n = 4 la probabilité est 364/365 × 363/365 × 362/365 (98,36%) et ainsi de suite jusqu’à:

5. si n = k la probabilité est 364/365 × 363/365 × 362/365 × · · · × (365 − k + 1)/365

On obtient la formule de récurrence


(
P 1 = 1,
P k+1 = P k 365−k+1
365 .
3
On va oublier les années bissextiles et le fait que plus d’enfants naissent neuf mois après le premier de l’an que neuf
mois après la Toussaint.

4
Tracer un graphe qui affiche la probabilité que deux personnes ont la même date de naissance en
fonction du nombre de personnes. Calculer pour quel k on passe sous la barre des 50%.

Source: [Link]

Exercice 7. Traitement mathématique des images numériques


Dans cette exercice nous allons nous intéresser à la manipulation d’images. Nous utiliserons des
méthodes basées sur l’algèbre linéaire et l’analyse matricielle.

Les pixels d’une image: une image numérique en niveaux de gris (grayscale image en anglais) est
un tableau de valeurs. Chaque case de ce tableau, qui stocke une valeur, se nomme un pixel. En
notant N le nombre de lignes et M le nombre de colonnes de l’image, on manipule ainsi un tableau
de N × M pixels.

La figure ci-dessous DarkVador montre une visualisation d’un tableau rectangulaire avec N = 324
M = 688, ce qui représente 324 × 688 = 222912 pixels. Les appareils photos numériques peuvent
enregistrer des images beaucoup plus grandes, avec plusieurs millions de pixels.

Les valeurs des pixels sont enregistrées dans l’ordinateur ou l’appareil photo numérique sous forme
de nombres entiers entre 0 et 255, ce qui fait 256 valeurs possibles pour chaque pixel. La valeur 0
correspond au noir et la valeur 255 correspond au blanc. Les valeurs intermédiaires correspondent
à des niveaux de gris allant du noir au blanc.

Pour transformer une image en une matrice il suffit d’indiquer dans notre script:

A=imread(’[Link]’);
colormap(gray(256));
A=double(A);
[row,col]=size(A)

Octave la transforme en matrice avec la fonction imread. On obtient bien une matrice de taille
324 × 688 × 3, où 3 signifie les composants de trois couleurs R,V,B, car notre image est en couleur.
On peut voir notre image avec:

colormap(gray(256));
imshow(uint8(A));

5
Vous pourrez aller chercher les images dans le dossier [Link]
TP_CalcMatr/Images/ en faisant vous même les opérations suivantes:

1. En utilisant une manipulation élémentaire de la matrice (sans faire des boucles et sans utiliser
de fonction) obtenir une image grise carré

2. En utilisant une manipulation élémentaire de la matrice (sans faire des boucles et sans utiliser
de fonction) obtenir le "miroir" de votre image, comme c’est présenté sur la figure suivante:

3. On peut modifier le contraste en “mappant” par une fonction croissante plus rapidement
ou plus lentement que la fonction identité i : [0; 255] → [0; 255], i (g ) = g . Par exemple, pour
avoir une image plus foncée, on pourra utiliser la fonction

f : [0; 255] → [0; 255]


g3
g 7→
2552

Appliquer cette transformation pour obtenir votre image du type:

6
4. Pour obtenir le négatif de votre image il suffit de prendre le complémentaire par rapport à
255

f : [0; 255] → [0; 255]


g 7→ 255 − g

Appliquer cette transformation pour obtenir l’image négatif du type:

7
5. Que devez-vous faire pour obtenir les images suivantes:

6. Entraînez - vous sur les autres images du dossier [Link]


TP_CalcMatr/Images/ faire les opérations précédentes.

Exercice 8. Dans cet exercice, il s’agit de comprendre et d’analyser des signaux temporels simples
(musique, onde, . . . ).

1. On considère le signal S 1 (t ) = a cos(2πkt ), t ∈ [0, 1] d’amplitude a = 2 et de fréquence k = 50.

a) Tracer k → T F (S)(k) et retrouver graphiquement l’amplitude et la fréquence du signal


f.

b) Vérifier que R(T F (S)) 6= 0 et I (T F (S)) = 0 où R(X ), I (X ) désignent respectivement la


partie réelle et imaginaire de X .

Indication : on utilise abs pour le module, real pour R et imag pour I . Vous pouvez utiliser
l’exemple de code "exo1_1.m" fourni à l’adresse [Link]
TP_CalcMatr/Codes/.

8
2. Refaire le même travail avec les signaux :

• S 2 (t ) = a sin(2πkt ), t ∈ [0, 1] d’amplitude a = 2 et de fréquence k = 50;

• S 3 (t ) = a 1 cos(2πk 1 t )+a 2 sin(2πk 2 t ) pour t ∈ [0, 1] avec a 1 = 2, a 2 = 1, k 1 = 50 et k 2 = 100.

Vous aimerez peut-être aussi