Introduction
Matlab est la fois un logiciel de calcul et un langage de
programmation haut niveau. Cest un logiciel payant, dont il existe
deux quivalents gratuits
Octave est un logiciel qui utilise le langage de matlab et peut donc
utiliser les fonctions crites en matlab. Il est plus lent et un peu
moins beau.
Scilab est dvelopp par lINRIA et la syntaxe diffre un peu de
celle de matlab mais lesprit est le mme. Il est de mon point de vue
encore un peu moins pratique que matlab.
Matlab est un logiciel de calcul numrique pas de calcul formel la
diffrence de Maple. Il ne sait rsoudre que des quations
numriques.
Le nom Matlab vient de Matrix Laboratory. En Matlab les objets sont
tous par dfaut des matrices. Une variable relle est donc vu par
Matlab comme une matrice 11. Le produit est donc par dfaut un
produit matriciel. Il faut se mer.
Le type des variables nest pas trs important. Matlab peut
additionner un boolen et un rel, multiplier un entier par un
complexe sans problme.
Pour lancer Matlab, il suft de lancer la commande matlab dans un
terminal. Souvre alors la fentre principale de matlab. On peut y
lancer directement des lignes de commande mais la plupart du
temps on passera par lditeur de Matlab qui permet de raliser des
scripts et des fonctions.
[Link] Du logiciel Matlab.
1- Fonctions usuelles
sqrt(x) : racine carre de x,
log(x) : logarithme nprien de x,
exp(x) : exponentielle de x.
mod(n,m) : n modulo m, reste de la division euclidienne de m par
n.
abs(z) : module de z,
angle(z) : argument dun nombre complexe z.
real(z) : partie relle de z,
imag(z) : partie imaginaire de z,
i ou j : nombre complexe i = e /2, sauf si on change la valeur de i
ou j dans une boucle par exemple,
sort : permet de trier un vecteur (regarder laide), la commande
sort renvoie galement la permutation qui permet de passer du
vecteur au vecteur ordonn. Il arrive souvent que seule cette
permutation soit intressante.
length(A) : donne la plus grande dimension dune matrice A,
sum(V) : somme les composantes dun vecteur V,
diff(V) : renvoie un vecteur dont les composantes sont les
diffrences des composantes conscutives du vecteur V,
while ... end : permet de faire une boucle while,
a==b : renvoie le boolen 1 si a = b et 0 si a 6 = b,
A : matrice transpose de A,
oor(x) : partie entire de x.
ceil(x) : partie entire suprieure de x.
max(x) : maximum dun vecteur x.
min(x) : minimum dun vecteur x.
mean(x) : moyenne dun vecteur x.
2- Les boucles
Il y a deux types de boucles en Matlab : les boucles while et les boucles for. La boucle for
parcourt un vecteur d'indices et efectue chaque pas toutes les instructions dlimites
par l'instruction end.
Boucle FOR : parcours d'un intervalle
Une premire possibilit pour excuter une squence
d'instructions de manire rpte consiste effectuer une boucle
pour les valeurs d'un indice, incrment chaque itration,
variant entre deux bornes donnes. Ce processus est mis en
oeuvre par la boucle for.
Syntaxe :
forindice=borne_inf:borne_sup
squence d'instructions
end
o
Indice est une variable appele l'indice de la boucle;
Borne_inf etborne_sup sont deux constantes relles
(appeles paramtres de la boucle);
Squence d'instructions est le traitement effectuer pour
les valeurs d'indices variant entre borne_inf et borne_sup avec
un incrment de 1. On parle du corps de la boucle.
Interprtation :
Si borne_inf est plus petit ou gal borne_sup, le
traitement squence d'instructions est excut borne_sup -
borne_inf fois, pour les valeurs de la variable indice gales
borne_inf, borne_inf+1, ..., borne_sup. Si borne_inf est strictement
plus grand que borne_sup, on passe l'instruction qui suit
immdiatement l'instruction de n de boucle(end).
Remarque:
L'indice de boucle ne prend pas ncessairement des valeurs
entires. D'autre part il n'est pas ncessaire que l'indice de la
boucle apparaisse dans le corps de la boucle; par contre il est
interdit de modier sa valeur s'il apparat. Il est possible d'imbriquer
des boucles mais elles ne doivent pas se recouvrir. On peut utiliser
un incrment (pas) autre que 1 (valeur par dfaut). La syntaxe est
alors borne_inf: pas : borne_sup. Le pas peut tre ngatif. Attention
bien grer la borne suprieure! Voici un exemple (idiot) venant
illustrer les possibilits de variations de l'indice de la boucle
>> for r=1.1:-0.1:0.75
disp(['r = ', num2str(r)]);
end
r = 1.1
r = 1
r = 0.9
r = 0.8
>>
Voici un exemple d'utilisation d'une boucle pour calculer n! (le lecteur
attentif sait calculer n! plus simplement ... par exemple en
excutant prod([1:n])).
>> n = 4;
>> nfac = 1;
>> for k = 1:n
nfac = nfac*k;
end
>> nfac
nfac =
24
>>
Boucle WHILE : tant que . . . faire
Une seconde possibilit pour excuter une squence d'instructions de manire rpte
consiste effectuer une boucle tant qu'une condition reste vrifie. On arrte de
boucler ds que cette condition n'est plus satisfaite. Ce processus est mis en oeuvre
par la boucle while.
Syntaxe :
whileexpression logique
squence d'instructions
end
expression logique est une expression dont le rsultat peut
tre vrai ou faux;
squence d'instructions est le traitement effectuer tant
que expression logique est vraie.
Interprtation:
Tant que expression logique est vraie le traitement squence
d'instructionsest excut sous forme d'une boucle.
Lorsque expression logique devient faux, on passe l'instruction qui
suit immdiatement l'instruction de n de boucle (end).
Remarque:
expression logique est en gnral le rsultat d'un test (par
exemple i < Imax) ou le rsultat d'une fonction logique (par
exemple all(x)). Il est impratif que le traitement de la squence
d'instructions agisse sur le rsultat de expression logique sans quoi
on boucleindniment (-:.
Voici comment calculer n! avec une boucle while:
>> n = 4;
>> k = 1; nfac = 1;
>> while k <= n
nfac = nfac*k;
k = k+1;
end
>> nfac
nfac =
24
>>
L'instruction conditionne IF
On a parfois besoin d'excuter une squence d'instructions seulement dans le cas o
une condition donne est vrifie au pralable. Diffrentes formes d'instruction
conditionne existent sous MATLAB.
L'instruction conditionne la plus simple a la forme suivante:
Syntaxe :
ifexpression logique
squence d'instructions
end
expression logique est une expression dont le rsultat peut tre vrai ou faux;
squence d'instructions est le traitement effectuer si expression logique est
vraie.
Interprtatio:
la squence d'instructions n'est excute que si le rsultat de
l'valuation de l'expression logique est vraie (c'est--dire vaut 1).
Dans le cas contraire on excute l'instruction qui suit le mot
cl end. Dans le cas o l'expression logique est vraie, aprs
excution de la squence d'instructions on reprend le programme
l'instruction qui suit le mot cl end.
Remarque:
Contrairement certains langages de programmation, il n'y
a pas de mot cl << then >> dans cette instruction
conditionne. Notez galement que la marque de n de bloc
conditionn est le mot cl end et non pas<< endif >>.
Il existe une squence conditionne sous forme d'alternatives:
Syntaxe
ifexpression logique
squence d'instructions 1
else
squence d'instructions 2
end
expression logique est une expression dont le rsultat peut tre vrai ou
faux;
squence d'instructions 1 est la squence d'instructions excuter
dans le cas o expression logique est vraie et squence d'instructions
2 est la squence d'instructions excuter dans le cas o expression
logique est faux.
Interprtation :
Si expression logique est vraie la squence d'instructions 1 est
excute, sinon c'est la squence d'instructions 2 qui est excute.
Le droulement du programme reprend ensuite la premire
instruction suivant le mot cl end.
Il est bien entendu possible d'imbriquer des squences
d'instructions conditionnes (au sens o la squence d'instruction
conditionne contient des squences d'instructions conditionne).
Pour une meilleure lisibilit, il est recommand d'utiliser des
indentations an de mettre en vidence l'imbrication des squences
d'instructions conditionnes.
Il est possible d'effectuer un choix en cascade:
Syntaxe :
ifexpression logique 1
squence d'instructions 1
elseif expression logique 2
squence d'instructions 2
...
elseif expression logique N
squence d'instructions N
else
squence d'instructions par dfaut
end
Interprtation :
Si expression logique 1 est vraie la squence d'instructions 1 est
excute et le programme reprend ensuite la premire instruction
suivant le mot cl end, sinon si expression logique 2 est vraie
la squence d'instructions 2 est excute et le programme reprend
ensuite la premire instruction suivant le mot cl end, etc. Si
aucune des expressions logiques 1 N n'est vraie alors squence
d'instructions par dfaut est excute.
Remarque :
Attention ne pas laisser d'espace entre else et if; le mot cl
est elseif.
On utilise frquemment un choix en cascade lors d'initialisation de
donnes. Par exemple, on initialise une matrice A en fonction de la
valeur d'une variable numex (numro d'exemple) de la manire
suivante:
if numex == 1
A = ones(n);
elseif numex == 2
A = magic(n);
elseif numex == 3 | numex == 4
A = rand(n);
else
error('numero d''exemple non prevu ...');
end