Vous êtes sur la page 1sur 16

UNIVERSITÉ D’ÉTAT D’HAITI

FACULTÉ DES SCIENCES

Cours d’introduction à Matlab préparé par:


Jean-Marie Vilaire

1. Introduction
1.1. Objectif. Proportionner aux intéressés les connaissances basiques pour utiliser le MATLAB et les facilités pour sa
programmation.
1.2. Méthodologie. Suivant les explications basées dans les exemples inclus dans ce manuel, l’intéressé peut aquérir en
forme progressive et autonome les connaissances basiques pour utiliser MATLAB.
Pour progresser rapidement, on peut ouvrir deux fenêtres dans l’écran de votre ordinateur, une avec le programme
MATLAB et l’autre avec ce manuel, alors on peut écrire et vérifier chaque exemple dans la fenêtre de commande de
MATLAB.
1.3. Le programme MATLAB. MATLAB (Matrix Laboratory) est un programme interactif d’utilité générale. C’est
un instrument computationnel simple et de grand pouvoir pour les applications numériques, symboliques et graphiques.
Le MATLAB contient une grande variété de fonctions prédéfinies pour les applications en sciences et génie.
L’interaction se réalise suivant les intructions (commandes) et aussi des fonctions et programme dans un langage
structuré. Les objets basiques avec lesquels le MATLAB opère sont des matrices. l’assignation de mémoire a chaque
variable le MATLAB la réalise en forme ifficiente et dynamique, et donc les déclarations des variables sont nécessaires
avant ses utilisations.
1.4. Caractéristiques de MATLAB.
• Calcul numérique rapide avec haute précision
• Capacité pour manoeuvrer la máthématique symbolique
• Représentation graphique et visualisation avancée
• Programmation suivant un langage de haut niveau
• Support pour la programmation structurée et orientée-objet
• Facilités basiques pour les interfaces graphiques
• Bibliothèque de fonctions
• Paquets spécialisés dans quelques domaines de sciences et de génie
1.5. Opération.
• Simple et efficiente
• Interactif et programmable
• Système de HELP
• Interaction avec d’autres “environnements”
1.6. Utilisation de MATLAB. “L’environnement” MATLAB est organisé suivant des fenêtres qui sont
Command Window: C’est la fenêtre de commandes
Command History: Contient le registre des commandes qui ont été utilisées
Workspace Contient: La description des variables utilisées dans chaque session.
1
2

1.7. Symboles Spéciaux en MATLAB. Le symbole >> indique que le programme est prêt à recevoir les instructions
(commandes)
[] pour définir les vecteurs et les matrices
() pour définir les sous-indices
, pour séparer les éléments d’un vecteur (on peut utiliser aussi un espace)
; pour séparer les lignes et pour éviter montrer le contenu des variables
% pour initier un commentaire (programme et fonction)
... pour continuer une commande a la ligne suivante.
Opérateurs arithmétiques
+ (addition), - (soustraction), * (multiplication), / (division a droite),
\ (division a gauche, pour les matrices)
Fonctions mathématiques
sin=sinus, sinh=sinus hyperbolique, asin=inverse sinus, asinh=inverse sinus hyperbolique
Opérateurs logiques
< (infrieur), <= (inferieur ou egal), > (superieur), >= (superieur ou egal), == (egal),
~= (different), & (et), | (ou), ~ (negation)
Exemple√ Pour calculer
sin(2π) + 3 + 43 on se dirige à la fenêtre de commande de MATALAB et on écrit
x=sin(2*pi)+sqrt(3)+4^3
(dessin)
1.8. Pratique avec les commandes de MATLAB. Dans cette section on utilise des commandes principales de
MATLAB en commençant avec les plus élémentaires. On doit écrire chaque exemple et presser la touche ENTER.
Le MATLAB montrera le résultat immédiatement, ou un message d’erreur (s’il y a une erreur).
Exemple
>> exp(2)/3
ans =
2.4630
>>x=exp(2)/3
x =

2.4630
>>y=x^2
y=

6.0665

>> x=[1 2 3 4 5 6;-1 0 2 4 9 6;2 3 4 1 8 4;sqrt(2) 2 3 4 5 6] matrice 4 lignes et 6 colonnes

x =

1.0000 2.0000 3.0000 4.0000 5.0000 6.0000


-1.0000 0 2.0000 4.0000 9.0000 6.0000
2.0000 3.0000 4.0000 1.0000 8.0000 4.0000
1.4142 2.0000 3.0000 4.0000 5.0000 6.0000

>> x(3,4)
3

ans =

>> y=x’ matrice transposee de x

y =

1.0000 -1.0000 2.0000 1.4142


2.0000 0 3.0000 2.0000
3.0000 2.0000 4.0000 3.0000
4.0000 4.0000 1.0000 4.0000
5.0000 9.0000 8.0000 5.0000
6.0000 6.0000 4.0000 6.0000

>> x(1,:) premire colonne de x

ans =

1 2 3 4 5 6

>> x(:,4) quatrieme ligne de x

ans =

4
4
1
4

>> eye(5) matrice identite d’ordre 5

ans =

1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Fonctions et Opérations avec les matrices
>> x=[1 2 3 4 4 6]
>>y=[1 5 -4 5 0 6]
>>a=[x;y]
>>n=length(x)
>>[m,n]=size(a)
>> t=dot(x,x)
>>k=rank(x)
>>t=trace(a)
>>b=eye(5)
4

>>d=det(b)
>>c=inv(b)
>>h=norm(a,1) norme par rapport aux colonnes de a
>>h=norm(a,inf) norme par rapport aux lignes de a
>>c=cond(a) conditionnement de a
>>[L,U,P]=lu(a) decomposition LU de a
>>L=chol(a,’lower’) decomposition de Choleski de a
>>e=eig(a) valeurs propres de a
>>p=poly(a) polynome caracteristique de a
>>r=roots(ans) valeurs propres de a
help matfun aide sur les fonctions pour les matrices
1.9. Réutilisation des commandes. On peut réutiliser les commandes en appuyant sur les touches ↑↓
>>y=x^2; z=2*x+3, t=sqrt(z)
z =

7.9260

t =

2.8153

2. Le système HELP de MATLAB


Exemples
MATLAB offre une description détallée de l’utilisation de chaque commande et chaque fonction en appuyant sur HELP
et le nom de la commande ou la fonction.
2.1. Quelques exemples de pratique en MATLAB. Résoudre

2x + 3y =4
5x − 2y =6
>> a=[2 3;5 -2];
>> b=[4;6];
>> x=inv(a)*b

x =

1.3684
0.4211

Primitives, Intégration et Dérivation


>> f=’x^2-log(x)’;
>> g=int(f)
Warning: The method char/int will be removed in a future relase. Use sym/int instead. For example
int(sym(’x^2’)).
> In char.int at 10

g =
5

(x*(x^2 - 3*log(x) + 3))/3

>> h=diff(f)
Warning: The method char/diff will be removed in a future release. Use sym/diff instead.
For example diff(sym(’x^2’)). After removal diff(’x^2’) will return diff(double(’x^2’)).
> In char.diff at 10

h =

2*x - 1/x

>> i=eval(int(f,1,2))
Warning: The method char/int will be removed in a future relase. Use sym/int instead.
For example int(sym(’x^2’)).
> In char.int at 10

i =

1.9470

>> f=’exp(-x^2)’;
>> t=int(f,-inf,inf)
Warning: The method char/int will be removed in a future relase. Use sym/int instead. For example
int(sym(’x^2’)).
> In char.int at 10

t =

pi^(1/2)

>> u=’x*exp(x^2+y^3)’;
>> v=diff(u,’x’)
Warning: The method char/diff will be removed in a future release. Use sym/diff instead. For example
diff(sym(’x^2’)). After removal diff(’x^2’) will return diff(double(’x^2’)).
> In char.diff at 10

v =

exp(x^2 + y^3) + 2*x^2*exp(x^2 + y^3)

>> w=diff(u,’y’)
Warning: The method char/diff will be removed in a future release. Use sym/diff instead. For example
diff(sym(’x^2’)). After removal diff(’x^2’) will return diff(double(’x^2’)).
> In char.diff at 10

w =

3*x*y^2*exp(x^2 + y^3)
6

Zéros d’équations non linéaires


>> f=’exp(x^2)-pi*x’;
>> x=solve(f)

x =

0.36319308631998885183545068213531

>> x=eval(x)

x =

0.3632

Résoudre
a2 + a ∗ b − b = 3
a2 − 4 ∗ b =5
>> [a,b]=solve(’a^2+a*b-b=3’,’a^2-4*b=5’);
>> a=eval(a)

a =

-1.0000
-3.8284
1.8284

>> b=eval(b)

b =

-1.0000
2.4142
-0.4142
Résoudre l’équation cubique 5x3 + 2x2 − 3x + 2 = 0;
>> a=[5 2 -3 1];
>> x=roots(a)

x =

-1.1060
0.3530 + 0.2371i
0.3530 - 0.2371i

Expression symbolique
>> syms x;
y=x^5-32;
>> t=factor(y)
7

t =

(x - 2)*(x^4 + 2*x^3 + 4*x^2 + 8*x + 16)

>> t=taylor(sqrt(1+x),6)
Warning: The syntax of TAYLOR has changed. The old syntax is partially supported in this release, but
will be removed in a future release. Second argument must be a variable. See doc taylor for details.
> In sym.taylor at 97

t =

(7*x^5)/256 - (5*x^4)/128 + x^3/16 - x^2/8 + x/2 + 1

Résolution d’équations différentielles ordinaires: y 00 + 3y 0 + 2y + 3x − 1 = 0, y(0) = 1, y 0 (0) = 1


>> y=dsolve(’D2y+3*Dy+2*y+3*x-1=0’,’y(0)=1,Dy(0)=1’,’x’)

y =

11/4 - exp(-x) - (3*exp(-2*x))/4 - (3*x)/2

Optimisation Rencontrer le minimum local de f (x) = 2ex sin x, −4 ≤ x ≤ 4


>> f=’2*sin(x)*exp(x)’;
[x,y]=fminbnd(f,-4,4)

x =

-0.7854

y =

-0.6448

Format des nombres


>> format short MATLAB par defaut
>> pi

ans =

3.1416

>> format long 14 chiffres decimaux


>> pi

ans =

3.141592653589793
8

>> format bank 2 chiffres decimaux


>> pi

ans =

3.14

>> format rat Notation rationnelle (fractions)


>> pi

ans =

355/113

>> format short e Notation scientifique


>> pi

ans =

3.1416e+00

>> format long e


>> pi

ans =

3.141592653589793e+00
Nombres complexes conj, real, imag, abs, angle, complex
>> x=2*i-1

x =

-1.0000 + 2.0000i

>> y=x^2

y =

-3.0000 - 4.0000i

>> z=abs(y)

z =

5
t=conj(x)

t =
9

-1.0000 - 2.0000i
Variables
>> x=’message’ x est de type litteral
x =

message

>> syms x x est redefini comme symbole

>> disp(’valeur’); montrer le contenu

>> x=input(’donnee’); entree de donnee


chaı̂nes de caracter
>> x=’mathematique’; assignation d’un caracter
>> x(6)

ans =

>> y=x(1), z=x(4)

y =

z =

>> n=length(x)

n =

12

>> t=x(1:12)

t =

mathematique

>> t=x(3:7) enumerer les caracteres de 3 a 7

t =

thema
10

Polynomes

>> a=[-2 1 3 4 7]

a =

-2 1 3 4 7

>> y=polyval(a,2) evaluer le polynome en x=2

y =

>> x=roots(a) calculer les zeros de a

x =

2.0768
-1.2411
-0.1678 + 1.1532i
-0.1678 - 1.1532i

>> b=[-3 4 5 6]

b =

-3 4 5 6

>> c=conv(a,b) produit des ploynomes a et b

c =

6 -11 -15 -7 16 66 59 42

>> [c,r]=deconv(a,b) division euclidienne de a par b ’’c=quotient, r=reste’’

c =

0.6667 0.5556

r =

0 0 -2.5556 -2.7778 3.6667

>> u=interp1(x,y,z,’linear’) interpolation lineaire


>>u=spline(x,y,z) spline cubique
>>a=polyfit(x,y,2) moindres carres d’ordre 2
help
11

MATLAB Symbolique

>> syms x;
>> a=[x 3; 2*x 7]

a =

[ x, 3]
[ 2*x, 7]

>> t=inv(a)

t =

[ 7/x, -3/x]
[ -2, 1]

>> f=x^2-4

f =

x^2 - 4

>> factor(f)

ans =

(x - 2)*(x + 2)

>> expand(ans)

ans =

x^2 - 4

>> taylor(exp(x))

ans =

x^5/120 + x^4/24 + x^3/6 + x^2/2 + x + 1

>> limit((1-(cos(x))^2)/2)

ans =

>> limit((1-(cos(x))^2)/x^2)

ans =
12

>> syms y;
>> g=x^2+y^2

g =

x^2 + y^2

>> diff(f,y)

ans =

>> diff(g,y)

ans =

2*y

>> diff(g,x)

ans =

2*x

>> x=2

x =

>> z=eval(g)

z =

y^2 + 4

>> x=2, y=3

x =

y =
13

>> eval(g)

ans =

Fonctions spéciales pour mesurer l’efficacité des algorithmes


>> tic; Inicier le chronometre
>> toc; Montrer le temps
Elapsed time is 4.159956 seconds.
>> tic;a=inv(rand(500,500)); toc temps utilise pour inverser une matrice de 500x500
Elapsed time is 0.034903 seconds.
Représentation graphiques des fonctions. Devoir.

3. Programmation en MATLAB
Pour utiliser la composante programmable de MATLAB on doit ouvrir une fenêtre en faisant click sur NEW SCRIPT.
Écrire le programme dans la fenêtre d’édition et l’enregistrer avec une nom quelconque. Fnalement, activer le pro-
gramme en écrivant le nom dans la fenêtre de commande. Introduire les donnés et obtenir les résultats (dessin).

3.1. Fichiers de commandes. Pour créer un fichier de commandes (programme, script), sélectionner FILE → NEW
→ M-File ou oprimer au bouton respectif une fenêtre d’édition s’ouvrira.
Dans le fenêtre d’édition écrire les commandes et les enregistrer dans un fichier avec un nom. On peut inclure des
commentaires avec le symbole %

Exemple 3.1. Écrire dans la fenêtre d’édition les instructions pour représenter graphiquement sin x entre 0 et 2π
x = 0 : 0.1 : 2 ∗ pi;
y = sin x;
plot(x, y);
Enregistrer le fichier sous le nom de preuve (par exemple). Pour executer le programme écrire dans la fenêtre de commande
>> preuve

Pour éditer un fichier de commandes, sélectionner FILE → Open ou sélectionner l’icone respectif.

4. Structures de control de flux en MATLAB


4.1. Intructions d’entrée et de sortie. Entre une donnée depuis le clavier: variable=input(’message’);

if conditions
4.2. Décision (Instruction if ). instructions
end
if conditions
instructions
else
instructions
end

Exemple
Écrire et enregistrer le programme suivant pour montrer le maximum entre deux nombres
14

function[]=maximum()
clc
disp(’CE PROGRAMME CALCULE LE MAXIMUM ENTRE DEUX NOMBRES’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
%syms a b;
a=input(’Entrez le premier donne:’);
b=input(’Entrez le deuxieme donne:’);
if a$>$b
m=a;
else
m=b;

end
sprintf(’Le maximum entre a et b est "\%d":’,m)
disp(’Si vous voulez continuer, tapez "y" sinon "n"’)
var=input(’’,’s’);

if strcmp(var,’y’)==1
maximum()
else
clc
end

4.3. Répétition conditionnée au début (Intruction WHILE). while condition


instructions
end
Exemple
Faire la somme des n premiers termes de la série harmonique:
function[]=harmwhile()
clc
disp(’CE PROGRAMME CALCULE LA SOMME DES n PREMIERS TERMES DE LA SERIE HARMONIQUE’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
syms n;
n=input(’Entrez n:’);
s=0;
while n>0
s=s+1/n;
n=n-1;
end
sprintf(’La somme des "%d" premiers termes de la serie harmonique est "%d":’,n,s)
disp(’Si vous voulez continuer, tapez "w" sinon "n"’)
var=input(’’,’s’);

if strcmp(var,’w’)==1
harmwhile()
else
clc
end
15

4.4. Répétition conditionnée a une séquence (Intruction FOR). for variable=début:pas:final


instructions
end
Exemple
Faire la somme des n premiers termes de la série harmonique:

function[]=harmfor()
clc
disp(’CE PROGRAMME CALCULE LA SOMME DES n PREMIERS TERMES DE LA SERIE HARMONIQUE’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
syms n;
n=input(’Entrez n:’);% entree de donees
s=0;
for i=1:n
s=s+1/i;
end
sprintf(’La somme des n premiers termes de la serie harmonique est "%d":’,s)
disp(’Si vous voulez continuer, tapez "w" sinon "n"’)
var=input(’’,’s’);

if strcmp(var,’w’)==1
harmfor()
else
clc
end

4.5. Fonctions en MATLAB. En général une fonction est une ensemble d’instructions qui s’écrivent séparément du
programme et qui realisent un devoir quelconque.
Le mecanisme usuel pour transmettre des données aux fonctions est selon une liste de variables (parametres).

4.6. Déclaration d’un fonction en MATLAB. function[]=nom()


instruction
Les fonctions s’écrivent dans la fenêtre d’édition de MATLAB.
Écrire une fonction qui imprime l’aire latérale et le volume d’un cylindre (rayon, hauteur donnés)
function[]=cylindre()
clc
disp(’CE PROGRAMME imprime l’aire lat\’erale et le volume d’un cylindre’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
r=input(’Entrez le rayon:’);% entree de donnees
h=input(’Entrez la hauteur:’);% entree de donnees
airelaterale=2*pi*r*h;
vol=pi*r^2*h;
16

sprintf(’L’aire laterale est "%d":’,airelaterale)


sprintf(’Le volume est "%d":’,vol)
Exemple
Écrire une fonction qui imprime la moyenne des éléments d’un vecteur.
function[]=moy()
clc
disp(’CE PROGRAMME donne la moyenne d’un vecteur’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
disp(’--------------------------------------------------------------------’)
n=length(x);
s=0;
for i=1:n
s=s+x(i);
end
moy=s/n;
sprintf(’La moyenne est "%d":’,moy)
Exemple
Additionner les n premiers termes de la série harmonique avec l’instruction “for”

References
[1]
[2]
[3]

Vous aimerez peut-être aussi