Vous êtes sur la page 1sur 17

2012-2013

Université de Jijel

Département :TCST (2eme Année)


Module: informatique

TRAVAUX PRATIQUES -MATLAB

Préparé par: LAHLOU NADJIB


Groupe: 01
Section: A

1
Introduction

Matlab est un langage simple et très efficace, optimisé pour le traitement des
matrices, d’où son nom. Pour le calcul numérique, Matlab est beaucoup plus
concis que les “vieux” langages (C,Pascal, Fortran, Basic). Un exemple: plus
besoin de programmer des boucles modifier pour un à un les éléments d’une
matrice. On peut traiter la matrice comme une simple variable. Matlab contient
également une interface graphique puissante, ainsi qu’une grande variété
d’algorithmes
Scientifiques.

2
Les Différentes fenêtres de Matlab
1. En utilisant la fenêtre d'espace de travail (Workspace), j'ai obtenu ces résultats :
>> a=2+3i
a=
2.0000 + 3.0000i

>> b=[1 2;3 4]


b=
1 2
3 4

>> c='abcd'
c=
abcd

>> d={'Paul' 2;'Claire' 1}


d=
'Paul' [2]
'Claire' [1]

Donc les classes des objets a,b,c,d sont :


a et b: Double array
c: char array
d: cell array

2. Who / Whos

>> lookfor who


who - List current variables.
whos - List current variables, long form.
>> who

Your variables are:

a ans b c d
>> whos
Name Size Bytes Class Attributes

a 1x1 16 double complex


ans 0x0 0 char

3
b 2x2 32 double
c 1x4 8 char
d 2x2 276 cell
Donc: l'instruction who nous donne les objets qui se trouvent dans l'espace de travaille;
quant à whos elle vous donne les détails des objets qui sont : name, size, byte, classe ….

3. Après avoir terminé l'exercice on utilise clear pour vider les fenêtres de commandes,
d'historique et de travail.

Utilisation de l'aide en ligne.

1. On veut trouver comment calculer les différentes normes de vecteurs (norme euclidienne,

norme1, norme infini), le produit scalaire de 2 vecteurs, et le produit vectoriel de deux vecteurs. Pour
cela il est recommandé de taper lookfor vector dans la fenêtre de commande ; et on obtiendra :

>> lookfor vector

TargetsComms_VectorApplicationChannel - class representing information about vector application


chanels

idnlfunVector - Create array of multiple nonlinearity estimator objects.

xregvectorinput - function obj = xregvectorinput(FigureHandle , 'Name' , vector ,


'Callback')

mbctransform - vectorized transform object

all - True if all elements of a vector are nonzero.

any - True if any element of a vector is a nonzero number or is

isvector - True if array is a vector.

length - Length of vector.

linspace - Linearly spaced vector.

logspace - Logarithmically spaced vector.

cross - Vector cross product.

dot - Vector dot product.

eig - Eigenvalues and eigenvectors.

norm - Matrix or vector norm.

4
detrend - Remove a linear trend from a vector, usually for FFT processing.

On peut aussi faire différentes recherches sur les commandes et fonctions (norm, cross, dot …) e.i :

>> help dot

DOT Vector dot product.

C = DOT(A,B) returns the scalar product of the vectors A and B.

A and B must be vectors of the same length. When A and B are both

column vectors, DOT(A,B) is the same as A'*B.

DOT(A,B), for N-D arrays A and B, returns the scalar product

along the first non-singleton dimension of A and B. A and B must

have the same size.

DOT(A,B,DIM) returns the scalar product of A and B in the

dimension DIM.

Class support for inputs A,B:

float: double, single

Soit :

>> a=[1 3 5 1]'

a =1

b=[1 1 2 2]'

b =1

5
2

>> dot(a,b)

ans = 16

>> norm(a)

ans = 6

>> norm(a,2)

ans = 6

>> norm(a,inf)

ans = 5

2. Par défaut, Matlab utilise une précision de 4 chiffres après la virgule pour l'affichage de
résultats. L'utilisateur peut changer la précision des nombres en choisissant parmi les formats ci-
dessous: (tester sur le nombre PI)
>> format short : 4 chiffres après la virgule (par défaut)
>> pi
ans =
3.1416

>> format long: 14 chiffres après la virgule


>> pi
ans =
3.141592653589793

>> format short e : 4 chiffres après la virgule+ l'exposant.


>> pi
ans =
3.1416e+000

>> format short g: 5 chiffres en tout avec ou sans exposant.


>> pi
ans =
3.1416

>> format long e : 15 chiffres après la virgule + l'exposant.


>> pi
ans =
3.141592653589793e+000

>> format long g: 15 chiffres au total avec ou sans exposant.

6
>> pi
ans =
3.14159265358979

>> format bank: "dollars et sous" format.


>> pi
ans =
3.14

>> format hex : affiche les bits en format hexadécimal.


>> pi
ans =
400921fb54442d18

>> format + : seulement les signes sont affichés


>> pi
ans =
+
>> 21/5

ans =4.2000

>> 1/2+1/3

ans = 0.8333

construction de vecteurs.
La prévision de l'effet des commandes sans utiliser le logiciel:

1.
>> a=[1 2 3]

a =1 2 3

>> b=[1 2 3]

b=1 2 3

>> c=[1:2:3]

c =1 3

>> d=[1 2 3]'

d=1

7
>> e=[0;i]

e =0

0 + 1.0000i

>> e'

ans =

0 0 - 1.0000i

>> e.'

ans =

0 0 + 1.0000i

2.
>> a=0:10

a =0 1 2 3 4 5 6 7 8 9 10

>> b=0.10

b = 0.1000

>> c=[0:10]

c =0 1 2 3 4 5 6 7 8 9 10

>> d=[0;10]

d =0

10

>> e=[0,10]

e=0 10

>> f=0.7:3.4

f = 0.7000 1.7000 2.7000

3.
>> a=[0:0.1:1]

8
a=

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

>> b=[0:0.15:1]

b=

0 0.1500 0.3000 0.4500 0.6000 0.7500 0.9000

>> c=[1:-0.15:0]

c=

1.0000 0.8500 0.7000 0.5500 0.4000 0.2500 0.1000

>> d=linspace(0,1,10)

d=

0 0.1111 0.2222 0.3333 0.4444 0.5556 0.6667 0.7778 0.8889 1.0000

4. Explication de la différence entre les commandes:


- [Début: fin] : Dans Matlab , le pas est par défaut égal à 1.
- [Début: pas: fin]: Le pas est manuel; Càd on a tout à fait le choix de donner n'importe quelle
valeur logique au pas.
- linspace(a,b,n): C'est Matlab qui se charge de trouver le pas dans se cas; on n'a qu'à préciser
le début, la fin et les nombres entres les éléments de ce vecteur.
- Pour partager un intervalle borné en 50 intervalles de même longueur il suffit d'écrire la
combinaison suivante: linspace(a,b,50).
- linspace(0,1,k) nous donne un vecteur espacé linéairement ayant K espace.
- Si le début et supérieur à la fin, il faudra préciser le pas négatif sinon on aura comme réponse
empty matrix.

Construction de matrices et matrices particulières.


Soit: A = 1 2 3

4 5 6

1. B=[A, zeros(2,3); diag([1,2]),eye(2,4)] est ce qu'on appelle une concaténation.

>> zeros(2,3)

ans = 0 0 0

9
0 0 0

>> c=[A,zeros(2,3)]

c=1 2 3 0 0 0

4 5 6 0 0 0

>> diag([1,2])

ans = 1 0

0 2

>> eye(2,4)

ans =1 0 0 0

0 1 0 0

>> B=[A,zeros(2,3);diag([1,2]),eye(2,4)]

B=

1 2 3 0 0 0

4 5 6 0 0 0

1 0 1 0 0 0

0 2 0 1 0 0

_La taille de B est:

>> size(B)

ans = 4 6

2.Le remplacement de la 6 ème


colonne de B par le vecteur (7,8,9,10):

>> B(:,6)=[7 8 9 10]

B=

1 2 3 0 0 7

4 5 6 0 0 8

1 0 1 0 0 9

0 2 0 1 0 10

10
L'extraction de la matrice correspondante aux ligne 2 et 4, et aux colonnes 2 et 6:

>> B([2,4],[2,6])

ans =

5 8

2 10

3. les réponses aux instructions données :


>> A'

ans =1 4

2 5

3 6

>> diag(A)

ans = 1

>> diag(diag(A))

ans = 1 0

0 5

>> triu(A)

ans =1 2 3

0 5 6

Triu : veut dire la matrice triangulaire superieur.

>> tril(A)

ans = 1 0 0

4 5 0

Tril : nous donne la matrice triangulaire inférieur.

>> rand(size(A))

ans =

0.8147 0.1270 0.6324

11
0.9058 0.9134 0.0975

Rand: nous donne des nombres aléatoires limités entre 0 et 1.

>> eye(size(A))

ans = 1 0 0

0 1 0

4.
>> A(1,2)=0

A=1 0 3

4 5 6

Cette commande fait remplacer le chiffre 2 de la 1ère ligne et la 2ème colonne par le chiffre 0 .

>> A(4,2)=5

A=1 2 3

4 5 6

0 0 0

0 5 0

Cette commande a ajouter deux nouvelles lignes à la matrice A, et a fait remplacer le ch iffre 0
de la 4ème ligne de la 2ème colonne par le chiffre 5.

>> A(10)

ans = 6

Opération sur les matrices.


Soient: A =1 2 3 et u=2

4 5 6 4

1.
>> B=A+2

12
B =3 4 5

6 7 8

L'addition d'un scalaire à une matrice revient à l'ajout de ce dérnier à tous ces élèments.

>> C=A*3

C =3 6 9

12 15 18

La même chose pour la multiplication.

D=[A+3*eye(size(A))] , On exclue les commandes interne après on execute les autres commandes.

>> size(A)

ans = 2 3

>> eye(2,3)

ans =1 0 0

0 1 0

>> 3*eye(size(A))

ans =3 0 0

0 3 0

>> D=[A+3*eye(size(A))]

D=4 2 3

4 8 6

2.
>> E=A*A

??? Error using ==> mtimes

Inner matrix dimensions must agree.

Le nombre de colonne n'est pas égal au nombre de ligne.

>> F=A.*A

F =1 4 9

16 25 36

13
C'est une multiplication dite élément par élément.

>> G=A^3

??? Error using ==> mpower

Matrix must be square.

Car A n'est pas une matrice carrée.

>> H=A.^3

H =1 8 27

64 125 216

>> I=exp(A)

I = 2.7183 7.3891 20.0855

54.5982 148.4132 403.4288

>> J=sqrt(A)

J =1.0000 1.4142 1.7321

2.0000 2.2361 2.4495

>> K=A*u

??? Error using ==> mtimes

Inner matrix dimensions must agree.

>> L=A.*A'

??? Error using ==> times

Matrix dimensions must agree.

>> M=A*A'

M =14 32

32 77

Le rôle du point est d'effectuer la multiplication élèment par élèment.

14
Utilisation d'un fichier externe (script) et de la fenêtre de
l'éditeur (Curent Directory).
Pour créer un nouveau fichier, allez dans le menu de sélection à:

"File/New/M-file"
Pour ouvrir un fichier déjà créé, allez à:
"File/Open" et choisissez le nom du fichier en question.
La fenêtre "Edit Window" peut être vue comme un éditeur de texte où:
• Les commentaires sont écrits en vert et débutent par "%"
• Les variables et équations apparaissent en noir
• Les caractères apparaissent en rouge

La boucle <for>
La boucle "for" s'écrit de la manière suivante:
for index = expression



end
où "expression" prend généralement la forme suivante:
début:incr:fin

Exemple 1:

function [factn]= factn


fact n=1
for i= 1:4
fact n = fact i
end

Exemple 2:

function A = matA(n)
A= zeros (n)
for i= 1:n
for j= 1:n
A(i,j)= 1/(i^2+j^2+1)
end
end

La boucle <if … end>


"if" et "if – else" sont utilisés pour imposer des conditions. Si la condition est respectée,
alors le code qu'elle contient est exécuté. A noter qu'il faut toujours terminer le "if" par un
"end" en Matlab.
Forme:

15
if "expression"
---
---
elseif "expression"
---
---
else
---
end

Exemple:

function [sol] = equa2(a,b,c)


% On va essayer de calculer les racines réelles de se polynôme
delta=b^2-4*a*c
if delta<0
sol [pas de racines]
elseif delta == 0
sol [-b/2a , -b/2a]
else delta>0
sol [b+sqrt(delta)/2a , -b+sqrt(delta)/2a]
end

La boucle <While …end>


Dans Matlab, la boucle "while" s'écrit de la façon suivante:
while expression



end
Le code dans la boucle est exécuté aussi longtemps que la condition de départ est "vrai".

Exemple:

function [n]= test(K,epss)


n=1
y=1
while y>epsilon
n=n+1
y=1/n^K ;
end

16
17