Vous êtes sur la page 1sur 20

Atelier Informatique

Compte rendu sur









Elabor par : Nidhal AKROUT
Elve ingnieur de lcole polytechnique


Anne universitaire 2012 2013
Rpublique Tunisienne
Ministre de lEnseignement
Suprieur et de la Recherche
Scientifique
Ecole Polytechnique de
Tunisie
I I. . I In nt tr ro od du uc ct ti io on n e et t d d f fi in ni it ti io on n : :
MATLAB

est un langage de haut niveau et un environnement interactif pour le calcul


numrique, la visualisation et la programmation. MATLAB permet danalyser des
donnes, de dvelopper des algorithmes et de crer des modles et des applications. Le
langage, les outils et les fonctions mathmatiques intgres vous permettent dexplorer de
nombreuses approches et datteindre la solution plus rapidement quavec des feuilles de
calcul ou des langages de programmation traditionnels, comme C/C++ ou Java

.
MATLAB peut tre utilis pour toute une srie dapplications, y compris le traitement de
signaux et les communications, le traitement des images et des vidos, les systmes de
contrle, les tests et mesures, la finance sur ordinateur et la biologie sur ordinateur. Plus
dun million dingnieurs et de scientifiques dans l'industrie et l'enseignement utilisent
MATLAB, le langage de l'informatique technique.
http://www.mathworks.fr/products/matlab/index.html
I II I. . P Pr r s se en nt ta at ti io on n d de e l la a m ma an ni ip pu ul la at ti io on n : :
Cette manipulation a pour but de :
Se familiariser avec la manipulation des matrices, et le calcul matriciel.
Introduire des graphes.
Faire quelques rsolutions des problmes et d'quations diffrentielles de premier,
second, troisime et quatrime ordre.
I II II I. . M Ma an ni ip pu ul la at ti io on n : :
1 1. . P Pa ar rt ti ie e A A : :
a a. . M Ma an ni ip pu ul la at ti io on n d de es s m ma at tr ri ic ce es s : :
Matlab fonctionne avec un seul type de structure de donne : des matrices lments
numriques rels ou complexes.
On peut dclarer une matrice avec diffrentes manires.

o Saisie directe d'une matrice :

Pour passer dune colonne une autre en utilise lespace et pour passer dune ligne une
autre, on utilise le ;



>> A= [1 2 3 ; 4 5 6 ; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9

o Saisie dun vecteur :

Pendant laffichage dune matrice, matlab calcule les formules et donne une valeur finale.

o Extension dun vecteur :

On peut faire agrandir un vecteur en ajoutant une nouvelle composante abs(X(1)) la
position 5.

o Construction dune matrice plus grande :

On peut concatner des matrices de diffrentes tailles (vecteur et matrice 3x3) condition
que le rsultat finale soit une matrice rectangulaire.

o Extraction dune matrice plus petite :

>> A=A(1:3,:)
A =
1 2 3
4 5 6
7 8 9
>> B = [A;r]
B =
1 2 3
4 5 6
7 8 9
10 11 12

>> C = [A A]
C =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
>> X(5)= abs(X(1))
X =
-1.3000 1.7321 1.2000 0 1.3000
>> X=[-1.3 sqrt(3) (1+2+3)/5]
X =
-1.3000 1.7321 1.2000
Lextraction dune matrice partir dune autre se fait en choisissant les lignes et les
colonnes extraire.
Dans ce cas : 1 :3 extraction de la ligne 1 la ligne 3.
: extraction de toutes les colonnes.

o Gnration des matrices :

Il sagit dun vecteur ligne dont les lments sont entre 1 et 5 de pas =1 (par dfaut).


Dans ce cas, on a prcis le pas qui est gale /2. Le pas est donc encadr entre la
nombre suprieur et le nombre infrieur spar par :


Les deux bornes doivent sinverser si le pas est ngatif.


La fonction sin sapplique chaque lment du vecteur.


De mme pour les matrices, cette commande applique la fonction sin, ou autre fonction,
chaque lment de la matrice, mais pas la matrice toute entire.

>> sin(A)
ans =
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 0.4121
>> sin(x)
ans =
0.8415 0.9093 0.1411 -0.7568 -0.9589
>> z= 6:-1:1
z =
6 5 4 3 2 1
>>y= 0:pi/5:pi
y =
0 0.6283 1.2566 1.8850 2.5133 3.1416
>> x=1:5
x =
1 2 3 4 5

Loprateur .* dsigne une multiplication lment par lment, soit dun vecteur ou dune
matrice.


Pour la dclaration dune matrice vide.




b b. . F Fo on nc ct ti io on ns s q qu ui i g g n n r re en nt t d de es s m ma at tr ri ic ce es s : :


Dclaration dune matrice nulle 2 lignes et 3 colonnes.


Dclaration dune matrice dont tous les lments gaux 1.


>> rand(2:3)
ans =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
>> ones(2:3)
ans =
1 1 1
1 1 1
>> zeros(2:3)
ans =
0 0 0
0 0 0
>> V= [ ]
V =
[ ]
>> V= [ ]
V =
[ ]
>> y= exp(-x) .* sin(x)
y =
0.3096 0.1231 0.0070 -0.0139 -0.0065
Cest une matrice dont les lments sont pris alatoirement.

Cest la matrice identit 3x3


Donne un vecteur ligne form par 100 lments linairement espacs.


Donne un vecteur ligne form par 50 lments logarithmiquement espacs.


Ceci permet de tracer des graphes en 3D pour les fonctions deux variables en prcisant
le domaine et la prcision du graphe par la modification du pas.
N.B. Le symbole ; masque le rsultat.




On obtient donc le graphe suivant :




c c. . M Ma at tr ri ic ce es s s sp p c ci ia al le es s : :

Ca donne une matrice diagonale. Les lments de la diagonale sont -2 -1 0 1 2

On peut citer dautre exemple de matrice sont utiles dans lanalyse numrique comme la
matrice companion compan , la matrice de Hilbert hilb , la matrice de Vandermond
vander



>> diag(-2:2) ;

>> [X,Y] = meshgrid(-2 : .2 : 2, -2 : .2 : 2) ;
>> Z = X .* exp(-X.^2 - Y.^2) ;
>> surf(X,Y,Z)
>> logspace(1,5)
>> linspace(1,5)
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
-2
-1
0
1
2
-2
0
2
-0.5
0
0.5
d d. . C Co om mm ma an nd de e : :
who : affiche toute les variables utilises
whos : affiche et donne des information sur les variables
Exemple :




e e. . L L u ut ti il li is sa at ti io on n d du u h he el lp p : :
La commande help permet de donner quelque information et des exemples sur la fonction
souhaite.

Exemple :



f f. . L Le es s f fo on nc ct ti io on ns s: :
Bibliothque :

On applique la fonction racine carr au logarithme dcimal de 2

>> x= sqrt(log(2))
x =
0.8326
>> help compan
COMPAN Companion matrix.
COMPAN(P) is a companion matrix of the polynomial
with coefficients P.

Class support for input P:
float: double, single

Reference page in Help browser
doc compan
>> whos
Name Size Bytes Class Attributes
A 3x3 72 double
Y 21x21 3528 double
d 1x7 14 char

Elle permet de dterminer la matrice de passage de la matrice A en la stockant dans V et
la matrice diagonale en la stockant dans D.


La commande max permet de dterminer pour chaque colonne le nombre maximum en le
mettant dans le vecteur Y et en indiquant lindice de ligne o il se trouve ce maximum.


Lapostrophe aprs la matrice dsigne son transpos.




>> Z = Y
Z =
4
6
8

>>X =
1 6 3
4 5 6
1 0 8
>> [Y,i]= max(X)
Y =
4 6 8
i =
2 1 3
>> [V,D]= eig(A)
V =
-0.2320 -0.7858 0.4082
-0.5253 -0.0868 -0.8165
-0.8187 0.6123 0.4082
D =
16.1168 0 0
0 -1.1168 0
0 0 -0.0000
Opration arithmtique :

Les oprations classiques tels que + * / ^ reste les mme. Mais il faut
faire attention en manipulant des matrices.
c..d, et comme lexplique lexemple prcdent, il y a une grande diffrence entre * et
.* . Ce point qui se situe avant lopration fait changer une telle opration entre des
matrices en une opration entre les lments des matrices.
Lutilit dune multiplication lment par lment apparait dans le calcul du produit
scalaire, par exemple.

>> A= [1 2 3 ; 4 5 6 ; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9
>> B= ones(3)
B =
1 1 1
1 1 1
1 1 1
>> A*B
ans =
6 6 6
15 15 15
24 24 24
>> A.*B
ans =
1 2 3
4 5 6
7 8 9

La fonction exp est applique chaque lment de A

En ajoutant la lettre m la fin de la fonction, cette dernire sapplique dsormais la
matrice : exponentielle dune matrice.
La mme chose pour dautre fonction prdfinie comme sqrt log


Opration relationnelle :

Il existe plusieurs opration relationnelles tels que :
>= suprieur ou gal
== gale (car le symbole = est rserv pour laffectation)
~= diffrent
La valeur boolenne est reprsent en Matlab en binaire : 0 pour dire faux et 1 pour vrai.

Exercice :
Calcul et reprsentation graphique des fonctions de Bessel de premire et deuxime espces : Jn(x) et
Yn(x), n= 0,1,2,3 :





>> 3<4
ans =
1
>> expm(A)
ans =
1.0e+006 *
1.1189 1.3748 1.6307
2.5339 3.1134 3.6929
3.9489 4.8520 5.7552
>> exp(A)
ans =
1.0e+003 *
0.0027 0.0074 0.0201
0.0546 0.1484 0.4034
1.0966 2.9810 8.1031

1
re
espce :



2 espce :


0 1 2 3 4 5 6 7 8 9 10
-0.5
0
0.5
1
0 1 2 3 4 5 6 7 8 9 10
-7
-6
-5
-4
-3
-2
-1
0
1
x 10
5
>> hold on
fplot ('bessely(0,x)',[0 10])
fplot ('bessely(1,x)',[0 10],'y')
fplot ('bessely(2,x)',[0 10],'g')
fplot ('bessely(3,x)',[0 10],'r')
>> hold on
fplot ('besselj(0,x)',[0 10])
fplot ('besselj(1,x)',[0 10],,'g')
fplot ('besselj(2,x)',[0 10], 'y')
fplot('besselj(3,x)',[0 10],'r')
hold off

Puis on compare les rsultats obtenus avec les valeurs calcules par excel. Onc charge ces
rsultat par la commande load . On trouve presque les mmes rsultats


2. P Pa ar rt ti ie e B B : :
I I. . L Le es s f fo on nc ct ti io on ns s e et t l le es s q qu ua at ti io on ns s: :
Une classe de fonctions Matlab ne fonctionne pas avec des matrices numriques, mais avec
des fonctions mathmatiques. Ces fonctions sont reprsentes par Matlab avec des Script
ayant lextension .m
Il faut dabord enregistrer la fonction avant de lappeler dans lespace de travail.
Exemple :
Dans ce petit exemple, on va calculer la fonction pour des valeurs diffrente de et tracer
son graphe. Avec
=
1
0.3
2
+0.01
+
1
0.9
2
+0.04
6

Pour dfinir une fonction, on utilise [File- New- Script] (pour la version 7)








Puis on saisie le code de la fonction dans la fentre correspondante et on enregistre le fichier
pour quil soit dtect par Matlab.






Enfin, on revient la fentre principale de Matlab o on prcise le domaine de calcul
souhait de cette fonction et on trace la courbe dans ce domaine.

Et on trouve le graphe suivant :

Ceci est valable pour une variable relle, mais ce nest pas le mme cas pour les matrices.

On applique la fonction sinus la matrice A.


Permet de calculer lintgrale numrique de la fonction exemp entre 0.5 et 1


Dterminer le minimum dune fonction. Pour les fonctions plusieurs variables, on doit
utiliser la commande fmins .


Dtermine les racines de fonctions une variable. Les racines sont les antcdents des
points proches de 0.

-1 -0.5 0 0.5 1 1.5 2
-20
0
20
40
60
80
100
x0= fzero('exemp',0) ;
x= fmin('exemp',0.5,1) ;
q= quad('exemp',0.5,1) ;
>> Y = funm(A,'sin')
Y =
-0.6928 -0.2306 0.2316
-0.1724 -0.1434 -0.1143
0.3479 -0.0561 -0.4602

>> x = -1 : .02 : 2 ;
>> plot(x,exemp(x)) ;


I II I. . E Eq qu ua at ti io on ns s d di if ff f r re en nt ti ie el ll le es s: :
Matlab nous permet, partir des diverses commandes, de rsoudre les quations
diffrentielles. Pour la commande ode23 : 2
me
/3
me
ordre avec la mthode de Runge
Kutta, et la commande ode45 : 4
me
/5
me
ordre avec la mthode de Runge Kutta
Fehlberg.
Exemple : Equation diffrentielle de Van der Pol
Cette quation est de second ordre +
2
1 + = 0. On peut la rsoudre en se faisant
un changement de variables et en se rfrant un systme de deux quations.

1
=
1
1
2
2

2

2
=
1



Pour rsoudre une telle quation diffrentielle il faut parcourir ces mmes tapes.
On doit crer tout dabord une fonction avec script.

Puis on commence par faire linitialisation de x0

x0 doit tre un vecteur colonne afin dinitialiser x1 et x2.


Cette instruction permet de rsoudre lquation vdpol sur lintervalle t [0 20] en x0.
Puis on trace la courbe :


>> plot ( t , x )
>> [t,x] = ode23('vdpol',[0 20],x0);
>> x0 = [0 0.25]'
x0 =
0
0.2500

On remarque ici la prsence de deux courbes qui reprsentent la variation des deux fonctions
x(t) et x(t).En fait x est un vecteur qui a 2 composantes x et x. Pour visualiser seulement la
variation de x, on doit extraire la deuxime composante de x.

Et on obtient enfin :

I II II I. . L Le es s i in ns st tr ru uc ct ti io on ns s d de e c co on nt tr r l le e: :
Matlab, comme le reste des langages de programmation, offre un ensemble dinstruction de
contrle.
Exemple :
Boucle Pour :
for v = dbut :fin
instructions
end

0 2 4 6 8 10 12 14 16 18 20
-3
-2
-1
0
1
2
3
0 2 4 6 8 10 12 14 16 18 20
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
>> plot( t , x( : , 2 ) )
Boucle Tant que :
while expression
instructions
end
I IV V. . A Ap pp pl li ic ca at ti io on ns s: :
Exercice 1 :
o Recherche des racines de la fonction =
3
2 5


On commence par crire un script




Puis on utilise la fonction fzero pour le calcul des racines :
>> fzero('f',0)
ans =
2.0946

o Reprsentation graphique de la suite de fonction

= cos avec
= 0,1,2,3 et 0 < < 20 :


On dclare cette fonction comme un script



Puis on utilise la commande plot :

>> for i=1:3
plot(x,T(i,x));
hold on;
end

o Reprsentation et calcul de lintgrale sur tout le domaine de dfinition de la fonction
=
1
1 +

On suit le mme dmarche :









Pour le calcul de lintgrale, on utilise la commande quad .


0 2 4 6 8 10 12 14 16 18 20
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
x 10
4
-50 -40 -30 -20 -10 0 10 20 30 40 50
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
>> quad ( 'g ' , -99 , 99 )
ans =
3.1214
>> plot(-50:50,g(-50:50));
o Calcul de deux manires diffrentes les sin de la matrice =
1 2
3 5


1
ere
mthode :

Cest, en effet la mthode classique quon a dj vue.

2
me
mthode :
On se ramne la diagonalisation de la matrice A et on applique la fonction sin aux lments de D,
c..d. la diagonale.

Pour les autres fonction comme log et exp, on peut utiliser la commande expm ou
logm comme une 3
me
mthode..

>> [V,D]=eig(A)
V =
-0.8646 -0.3613
0.5025 -0.9325
D =
-0.1623 0
0 6.1623
>> V * sin(D) * inv(V)
ans =
3.0166 2.7092
-4.0638 -2.4018

>> funm ( A , 'sin' )
ans =
3.0166 2.7092
-4.0638 -2.4018
>> A= [1 2 ; 3 5]
A =
1 2
3 5

o Rsolution dune quation diffrentielle rgissant le mouvement dune pendule simple
+
2

= +sin

avec = 10 ; = 0.5 ; = 0.02 ;


= 10 ; = 9.8


On commence par la fonction suivante :

Puis

et on obtient le graphe suivant :


La courbe montre que la limite de cette fonction est gale a en +. Donc on a pris un
repre dont le zro des angles est dirig vers le haut.
Pour changer lamortissement, on peut changer la valeur de B. Dans ce cas B=1


o Calcul des entiers dont les carrs sont entre M et N
Pour cas ou M= 3 et N = 40, on dclare le bloc suivant :
>> x0= [0 pi/3];
>> [t,x]=ode23('teta',[0 100],x0);
>> plot( t , x( : , 2 ) )




V V. . C Co on nc cl lu us si io on n : :
Ainsi, Matlab est un logiciel qui offre lutilisateur tant davantages surtout au niveau du calcul
matriciel, la manipulation des fonctions et le traage des courbes mathmatiques.




>>M=3;
N=40;
i=1;
for x=min(M,N):max(M,N)
if (floor(sqrt(x)))^2==x
X(i)=sqrt(x);
i=i+1;
end
end
X