Cours Matlab
Cours Matlab
Cours Matlab
1 Introduction
2 Scalaires et variables
2.1 Ordre dans lequel les calculs sont effectués
2.2 Quelques fonctions numériques
3 Les formats
4 Les vecteurs
4.1 Construction de vecteurs
4.2 Opérations portant sur les vecteurs (ou tableaux)
4.3 Opérations portant sur les fonctions mathématiques
5 Quelques commandes et fonctions
5.1 Fonctions polyval, plot et roots
5.2 Commandes clear et whos
6 Accès aux éléments d’une liste ou d’un vecteur
1 Introduction
Matlab offre une interface via laquelle on peut entrer des commandes, c’est
”l’invite”, ou en anglais, le ”prompt”: la ligne qui commence avec >>. On y écrit les
lignes de commandes qui vont créer des tableaux, les manipuler, tracer des
graphiques... Une fois que la ligne de commande est écrite, on tape sur ”entrée” et
l’ordinateur évalue cette commande, vérifie qu’elle est conforme, qu’elle veuille dire
quelque chose. Si il y a un problème: on appelle un tableau qui n’existe pas, on
utilise un nom de fonction qui n’existe pas, on demande quelque chose qui n’est pas
possible, il y a un message d’erreur qui nous donne une indication sur le problème. Il
faut lire ces messages et corriger l’erreur.
2 Scalaires et variables
>> a = 3
a=
3
>> b = 4;
Ici, je mets un point-virgule à la fin de la ligne pour dire à matlab de ne pas afficher
à l’écran le résultat de l’opération.
1
>> a = 3;
>> b = a+1;
>> x = a+b;
>> 3*4
ans =
12
Le résultat est stocké dans la variable ans (answer)
>> a = 3; b = 4; x = a*b
Exemple 1 Calculer
>> 3*5*6
>> z1 = 34;
>> z2 = 17;
>> z3 = -8;
>> z1/z2
>> z1-z3
>> z2+z3-z1
Exemple 2 Calculer
( )
^ Puissance
/ et *
+ et -
2
>> a*(b+c*(c+d))*a
Réponse: 124
1+2/3*4-5
1/2/3/4
1/2+3/4*5
5-2*3*(2+7)
(1+3)*(2-3)/3*4
(2-3*(4-3))*4/5
avec a = 3, b = 5 et c = −3.
Solution:
a=3; b = 5; c = -3;
x = b-a/(b+(b+a)/(c*a))
Remarque:
x = 45e9; % x = 45 × 10 ^9
y = 3.123e-7; % y = 0.0000003123
xy = x*y; % Ne pas confondre le nom de la variable xy avec le produit x * y
Fonction Résultat
abs valeur absolue ou module (nb. complexes)
angle argument (nb. complexes)
real partie réelle (nb. complexes)
imag partie imaginaire (nb. complexes)
conj complexe conjugué
sqrt racine carrée
cos cosinus (angle en radian)
sin sinus (angle en radian)
tan tangente (angle en radian)
acos arc cosinus (résultat en radian)
asin arc sinus (résultat en radian)
atan arc tangente (résultat en radian)
exp exponentielle
log logarithme népérien
3
log10 logarithme base 10
round entier le plus proche
fix partie entière mathématique
floor troncature par défaut
ceil troncature par excès
Example 6 Calculer les expressions: sin 60◦ (et la même quantité au carré),
exp(ln(4)), cos 45◦ −sin 45◦, ln exp(2+cos π) and tan 30◦/(tan π/4+tan π/3).
Solution:
>> x = sin(60/180*pi)
x=
0.8660
>> y = xˆ2
y=
0.7500
>> exp(log(4))
ans =
4
>> z = 45/180*pi; cos(z)-sin(z)
ans =
1.1102e-16 % inférieure à eps ( taper eps)
>> log(exp(2+cos(pi)))
ans =
1
>> tan(30/180*pi)/(tan(pi/4)+tan(pi/3))
ans =
0.2113
3 Les formats
La commande format permet de choisir entre plusieurs modes d’affichage
4 Les vecteurs
>> a = [1 2 3];
>> 2*a
ans =
246
>> a = [1 2 3];
>> b = [4 5 6];
>> a*b
??? Error using ==> *
Inner matrix dimensions must agree.
5
La multiplication des tableaux est aussi une multiplication élément par élément, et se
note .* et non *
>> a = [1 2 3];
>> b = [4 5 6];
>> a.*b
ans =
4 10 18
De la même façon on peut effectuer la division élément par élément:
>> a = [1 2 3];
>> b = [4 5 6];
>> a . / b
ans =
0.2500 0.4000 0.5000
Exemple 8 :
Construisez les deux vecteurs s= [ 1 2 3 4 5 6 ] et t= [-6 -5 -4 -3 -2 -1].
Effectuer les opérations suivantes:
s+t % ans = -5 -3 -1 1 3 5
s-t % ans= 7 7 7 7 7 7
s.*t %ans = -6 -10 -12 -12 -10 -6
s./t % ans= -0.1667 -0.4000 -0.7500 -1.3333 -2.5000 -6.0000
s.^2 % ans = 1 4 9 16 25 36
1./s % ans = 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667
s/2 % ans = 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
s+1 % ans = 2 3 4 5 6 7
Solution
x = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0];
% Ou bien
x = 0:0.1:1.0;
% Ou avec la commande linspace
x = linspace(0,1,11);
y = x^2
??? Error using ==> ^
Matrix must be square
6
% Si les dimensions des vecteurs sont incompatibles avec l'opération
matricielle, MATLAB affiche un message d'erreur. Dans ce cas
effectuer la multiplication élément par élément .*
y = x .^2 % Ou bien y = x .* x
y=
Columns 1 through 7
0 0.0100 0.0400 0.0900 0.1600 0.2500 0.3600
Columns 8 through 11
0.4900 0.6400 0.8100 1.0000
Solution
x = -1:0.1:1;
f = x+2; % Fonction intermédiaire
g = x.^3+1; % Fonction intermédiaire
y = (f .^2) .* (g); % Utiliser les opérateurs élément par élément
Solution
x = 1:0.02:3;
f = x .* cos(x);
g = x.^2+3*x+1;
y = sin(f ./ g);
Solution
x = 1:6;
% On sera vigilant à l'ordre dans lequel seront rangés les coefficients du
% polynôme: le premier élément du vecteur c est le coefficient du monôme
% de plus haut degré
c = [1 3 -1 -1]
% La fonction polyval renvoie les valeurs du polynôme aux points x
y = polyval(c,x)
7
Exemple 12 Tracer entre x= -2 et x= 2 en utilisant 50 points.
Solution
x = linspace(-2,2,50);
c = [1 0 1 0 -1];
y = polyval(c,x);
plot(x,y)
Solution
c = [1 -3 2 0];
r = roots(c)
r=
0
2
1
Remarque:
La fonction size retourne le couple (nl,nc) formé du nombre de lignes nl et du
nombre de colonnes nc du tableau associé à la variable donnée comme argument.
La fonction length retourne le nombre d’éléments ou longueur de la liste ou du
vecteur.
8
Exemple 14
l = [1 2 3 4] ; length(l)
ans =
4
[nl, nc] = size(l)
nl =
1
nc =
4
Exemple 15
>> s = [1 3 5] ; s(1)
ans =
1
>> s(3)
ans =
5
>> s(end)
ans =
5
>> s(4)
??? Index exceeds matrix dimensions.
9
SERIE 1 : CALCULS SIMPLES AVEC MATLAB
Exercice 4 Utiliser les fonctions round, ceil, floor et fix pour x = 0.3, x = 1/3, x =
0.5, x = 1/2,
x = 1.65 et x = −1.34.
1. y = + 3 + 1
2. y = sin
3. y =
4. y = sin2x + x cos 4x
10
Exercice 9 Le code suivant est supposé calculer la fonction
x = linspace(0,1);
clear all
g = x^3+1;
H = x+2;
z = x.^2;
y = cos xpi;
f = y*z/g*h
x = -2:0.1:2;
c = [1 0 0 -1];
y = polyval(c,x);
plot(y,x)
x = linspace(0,3);
f = x^3.*cos x+1;
%x=2
f(2)
%x=3
f(End)
11
2 Scripts, m-files et fonctions
1 Scripts et m-files
1.1 Scripts
1.2 Création de m-files
1.3 Exécution d’un m-file
1.4 Eléments d’écriture de m-files
2 Fonctions et m-files
2.1 Syntaxe
2.2 Optimisation des calculs
1 Scripts et m-files
1.1 Scripts
Exemple 1 :
a=
0.5000
ans =
1
ans =
6.2832
c=
1.5708
12
fonctions prédéfinies de MATLAB sont stockées sous forme de m-files dans la
toolbox matlab.
Exemple 2 :
% script - essai . m
a = .5;
b = pi;
c=a*b
Exemple 3 :
>> essai
c=
1.5708
Commentaires
Les lignes de commentaires sont précédées du caractère %.
Exemple 4 :
– La fonction menu génère un menu dans lequel l’utilisateur doit choisir une option :
result = menu (’titre’, ’opt1’, ’opt2’, ..., ’optn’)
La valeur retournée dans la variable result est égale au numéro de l’option choisie.
menu est souvent utilisé en relation avec la structure algorithmique switch-case.
13
Exemple 5 :
Exemple 6 :
>> a = [1 2] ;
>> a
a=
12
Exemple 7 :
Exemple 8 :
>> a = [1 2;3 4] ;
>> disp(a)
12
34
>> disp ([ ’ordre de la matrice a : ’ num2str(size(a,1)) ] );
ordre de la matrice a : 2
14
Pause
La commande pause permet de ménager une pause dans l’exécution d’un m file :
– sans argument pause suspend l’exécution jusqu’a ce que l’utilisateur presse sur
une touche.
– pause (n) suspend l’exécution pendant n secondes.
2 Fonctions et m-files
Les m-files sont aussi le moyen pour l’utilisateur de MATLAB de définir ses
propres fonctions.
Exemple 9 :
La fonction moyenne définie ci-dessous calcule la moyenne des éléments d’une liste
ou d’un vecteur. Le texte de cette fonction est saisi dans l'éditeur de matlab.
1 function m = moyenne(x)
2 % MOYENNE(X) : moyenne des elements d’une liste ou d’un vecteur
3 % un argument autre qu’une liste ou un vecteur conduit a une erreur
4 [ k,l ] = size(x) ;
5 if ( (k~=1) & (l~=1) ) % & :et logique ~= non égalité
6 error (’ l''argument doit être une liste ou un vecteur’)
7 end
8 m = sum(x)/length(x);
La fonction est enregistrée sous le nom moyenne.m. Elle est ensuite appelée depuis
la fenêtre de commande :
>> x = 1 : 9
x=
123456789
>> y = moyenne(x)
y=
5
>> A = [1 2 ; 3 4] ;
>> moyenne(A)
??? Error using ==> moyenne
l'argument doit être une liste ou un vecteur
2.1 Syntaxe
Une fonction est constituée par :
– un en-tête :
function resultat = nom de la fonction (liste de paramètres)
– une section de commentaires : dont chaque ligne commence par le symbole % ;
– le corps de la fonction défini par un script.
Remarques:
• Le nom de la fonction et celui du fichier m-file qui en contient la définition
doivent être identiques. Ce fichier est le fichier m-file associé à la fonction.
15
• La commande help affiche les neuf premières lignes de la section de commentaires
; la première ligne est utilisée par la commande lookfor pour effectuer des recherches
parmi les fonctions MATLAB accessibles.
Exemple 10 :
Les résultats obtenus montrent que test2 est plus efficace que test1.
>>test1(1000)
ans =
0.0054
>>test2(1000)
ans =
1.7433e-004
16
SERIE 2
Exercice 1 Exécuter le script contenu dans le m-file reste.m
a = input ('Entrez la valeur a : ');
b = input ('Entrez la valeur b : ');
res = rem (a, b);
str1 = 'Le reste est ';
str2 = ' quand ' ;
str3 = ' est divise par ';
disp ([str1 num2str(res) str2 ...
num2str(a) str3 num2str(b)])
N=input('Enter N )
for i=1:n
sum = 1/j + 1/(j+2)*(j+3)
end
disp( ' The answer is ' s])
17
3 Structures algorithmiques
1 Opérateurs booléens
2 Structures algorithmiques
2.1 Sélection - if...end et if...else...end
2.2 Répétition - for...end
2.3 Itération conditionnelle - while...end
2.4 Construction switch...case
1 Opérateurs booléens
Classés par ordre de priorité décroissante, les opérateurs booléens utilisés
par MATLAB sont les suivants :
– opérateurs booléens avec par ordre de priorité :
– les opérateurs de comparaison
– <, >, <= et >=
– égalité ==, non égalité ~=
– puis les opérateurs logiques
– et logique &
– ou logique |
– et logique court-circuité &&
– ou logique court-circuité ||
Les opérateurs logiques court-circuités sont des opérateurs pour lesquels le
résultat est acquis dès que l’évaluation du premier opérande permet d’affirmer le
résultat global sans évaluer le second opérande. Si a et b sont des variables
booléennes :
– a && b vaut false dès que a vaut false
– a || b vaut true dès que a vaut true.
D’autre part on rappelle qu’il n’existe pas dans MATLAB de “vrai” type booléen
: false est représenté par la valeur 0 et que true est représentée par la valeur 1
et par extension par toute valeur non nulle, ce qui est confirmé par l’évaluation
des expressions suivantes :
Exemple 1 :
>> 2&3
ans =
1 % true ET true vaut true
>> 2&0
ans =
0 % true ET false vaut false
18
>> 2|3
ans =
1 % true OU true vaut true
>> ~3
ans =
0 % le contraire de true (= 3) est false
>> 2==3
ans =
0 % l’égalité est bien celle des nombres et non celle des prédicats !
2 Structures algorithmiques
Syntaxe
Le symbole / remplace l’un des symboles séparateur : virgule (,), point-virgule (;) ou
saut de
ligne. L’usage du point-virgule est vivement conseillé pour éviter les affichages
souvent redondants.
Exemple 2 :
>> m = -1;
>> if (m<0) a =-m, end
a=
1
>> if (m<0)
a = -m ;
end
Utilisation de elseif
if (exp1)
script1 (évalué si exp 1 est vraie)
elseif (exp2)
script2 (évalué si exp 2 est vraie)
elseif (exp3)
...
else
19
script (évalué si aucune des expressions exp1, exp2, . . . n’est vraie)
end
Syntaxe
Exemple 3 :
>> x = [ ]; % initialisation
>> for k = 1 : 5
x = [x, sqrt(k)]
end
Exemple 4:
>> for l = 1 : 3
for k = 1 : 3
A(l,k) = l^2 + k^2 ;
end
end
>> disp(A)
2 5 10
5 8 13
10 13 18
Utilisation de break
Exemple 5 :
epsi = 1;
for n = 1 : 100
epsi = epsi / 2;
if ((epsi + 1) <= 1)
epsi = epsi*2
n
20
break
end
end
epsi =
2.2204e-016
n=
53
Syntaxe
Exemple 6 :
>> n = 1;
>> while (2^n <= 100)
n = n + 1;
end
>> disp(n-1)
6
Syntaxe
switch (sélecteur)
case valeur 1, . . . / script 1 /
case Valeur 2, . . . / script 2 /
...
otherwise / script
end
Sélecteur désigne une expression dont les valeurs peuvent correspondre aux valeurs
associées aux différents case. Lorsque la valeur du sélecteur correspond à une
valeur de case, une fois le script correspondant exécuté, l’exécution se continue
immédiatement après le end.
Exemple 7 :
result = menu('Tableau des mentions', '< 11', '>= 11& < 12'...
,'>= 12& < 14','>=14' );
switch result
case 1 ,disp('Passable')
case 2 ,disp('Assez bien')
21
case 3 , disp(' Bien')
otherwise, disp('Tres bien')
end
x=lnspace(-4,4);
N = length x
for j = 1;N
if x(j)>=0 and x(i)<=1
f(j) = x(j);
elseif x(j)>1 or x(i)<2
f(j) = 2 - x
else
f(j) = zero;
end
22
Vérifier le code en traçant la fonction f(x).
23