Cours OPM Partie 2
Cours OPM Partie 2
Cours OPM Partie 2
1. Introduction :
Pour évaluer des expressions en les écrivant dans la ligne de commande (Après le prompt
>>), par conséquent les commandes utilisées s’écrivent généralement sous forme d’une
seule instruction éventuellement sur une seule ligne.
Cependant, il existe des problèmes dont la description de leurs solutions nécessite
plusieurs instructions, ce qui réclame l’utilisation de plusieurs lignes.
Une collection d’instructions bien structurées visant à résoudre un problème donné
s’appelle un programme.
2. La programmation Matlab
2.1 Les commentaires
Les commentaires sont des phrases explicatives ignorées par MATLAB et destinées pour
l’utilisateur afin de l’aider à comprendre la partie du code commentée.
Exemple:
F. BOUCHAIB Page 1
2.3 Entrées/sorties
Pour le développement d'un programme interactif, la sortie écran et l'entrée clavier se
font respectivement a l'aide des fonctions disp et input.
La sauvegarde et le chargement des variables se font respectivement à l'aide des fonctions
save et load.
Pour une gestion plus souple de la lecture et de l‘écriture d'un fichier, on peut être amène
a utiliser les fonctions fopen, fclose, fprintf, fscanf, fgetl et fgets.
F. BOUCHAIB Page 2
Exemple
Mohammed
Il existe des cas où on désire afficher uniquement la valeur de la variable (sans le nom et
sans le signe =). Pour cela, on peut utiliser la fonction disp,
La valeur de l’objet peut être un nombre, un vecteur, une matrice, une chaine de
caractères ou une expression.
On signale qu’avec un vecteur ou une matrice vide, disp n’affiche rien.
F. BOUCHAIB Page 3
Les opérations logiques : Une variable logique peut prendre les valeurs 1 (vrai) ou 0 (faux)
avec une petite règle qui admette que :
Exemple :
F. BOUCHAIB Page 4
3. Programme Matlab
Cette approche est définie en MATLAB par les M-Files, qui sont des fichiers pouvant
contenir les données, les programmes (scripts) ou les fonctions que nous développons.
Pour créer un M-Files il suffit de taper la commande edit, ou tout simplement aller dans
le menu :
Dans tous les cas une fenêtre d’édition comme celle-ci va apparaitre :
>> tp
F. BOUCHAIB Page 5
Pour retourner à la fenêtre d’édition (après l’avoir fermer) il suffit de saisir la commande :
>> edit tp
Exemple: programme qui trouve les racines d’une équation de second degré désigné
par : ax2+bx+c=0.
Voici le M-File qui contient le programme qui est enregistré avec le nom :
exemple.m
F. BOUCHAIB Page 6
Pour l’exécution du programme, il suffit de taper le nom du programme :
>> exemple
Entrez la valeur de a : -3
Entrez la valeur de b : 2
Entrez la valeur de c : 1
'Deux solutions distinctes :
x1 =-1/3
x2 =1
Remarque :
Il existe la fonction solve prédéfinie en MATLAB pour trouver les racines
d’une équation.
>> solve(‘3*x^2+4*x+2=0','x')
ans =
-2/6
1
F. BOUCHAIB Page 7
Exemple:
x = input ('Entrez un nombre : ') ;
switch(x)
case 0
disp('x = 0 ')
case 10
disp('x = 10 ')
case 100
disp('x = 100 ')
otherwise
disp('x n''est pas 0 ou 10 ou 100 ')
end
L’exécution donne :
Entrez un nombre : 30
x n'est pas 0 ou 10 ou 100
La variable va parcourir tous les éléments du vecteur et pour chacun, il va exécuter le groupe
d’instructions.
F. BOUCHAIB Page 8
Exemple :
Tant que l’expression de while est évaluée à true, l’ensemble d’instructions s’exécutera en
boucle.
Exemple :
a=1 ;
while (a~=0)
a = input ('Entrez un nombre (0 pour terminer) : ') ;
end
4.5 L’instruction continue, Break
- [break] pour sortir immédiatement de la boucle,
- [continue] pour passer directement à l'itération suivante de la boucle.
a = 10;
while a < 20
if a == 15
a = a + 1;
continue;
end
fprintf('value of a: %d\n', a);
a = a + 1;
end
Exercices:
Il existe des fonctions prédéfinis en MATLAB.
F. BOUCHAIB Page 9
Essayons de les programmer (pour un vecteur donnée V).
F. BOUCHAIB Page 10
5. Les fonctions
5.1 Fonctions en informatique ou en mathématique
En informatique, une fonction est une routine (un sous programme) qui accepte des
arguments (des paramètres) et qui renvoie un résultat.
En mathématique une fonction f est une relation qui attribue à chaque valeur x au
plus une seule valeur f(x).
MATLAB contient un grand nombre de fonctions prédéfinies comme sin, cos, sqrt, sum, …
etc.
Il est possible de créer nos propres fonctions en écrivant leurs codes source dans des fichiers
M-Files (portant le même nom de fonction) en respectant la syntaxe suivante :
Où: r1...rn sont les valeurs retournées, et arg1...argn sont les arguments.
Exemple : écrire une fonction qui calcule la racine carrée d’un nombre par la méthode de
Newton.
function r = racine(nombre)
r = nombre/2; precision = 6;
for i = 1: precision
r = (r + nombre ./ r) / 2;
end
F. BOUCHAIB Page 11
Exécution :
>> x = racine(9)
x=
3
>> x = racine(196)
x=
14.0000
>> x = racine([16,144,9,5])
x=
Remarque :
Contrairement à un programme (un script), une fonction peut être utilisée dans une
expression par exemple : 2*racine(9)‐1.
5.3 La récursivité
Dans la définition d’une fonction f, il arrive que l’on désire rappeler la même fonction f
pour des valeurs différentes. L’exemple typique étant le cas de la définition de la fonction
factorielle sur les entiers.
F. BOUCHAIB Page 12
Ceci est possible en MatLab, comme dans bien des langages de programmation, mais il
faut être attentif au fait que cet outil amène souvent des boucles sans fin, si la condition
d’arrêt n’est pas bien pensée. Voilà l’exemple de la factorielle programmée en MatLab.
function nn =factoriel(n)
%calcule le n factoriel en fonction de n.
reponse=1;
if n==0
nn=1;
else
reponse= n*factoriel(n-1);
end
nn=reponse;
Inline fonction :
>> f(1, 2)
ans =
3.0000
L’exemple suivant met en évidence le mécanisme de déclaration implicite.
Exemple
La définition
>> f = inline(‘x.^2’)
F. BOUCHAIB Page 13
f=
Inline fonction :
f(x) = x.^2
est équivalente à :
La définition
est équivalente à :
alors que
>> f = inline(’x.^2 + x.*t’)
est équivalente à :
Exemple :
>> g = @(x, y) x.^2 + x.*y
g=
@(x, y) x.^2 + x.*y
>> g(1, 2)
ans =
3.0000
F. BOUCHAIB Page 14
5.6 Fonctions argument d’autres fonctions
Une façon simple d’utiliser une fonction comme argument d’une autre fonction est de
transmettre à la fonction utilisatrice le handle de la fonction (le handle d’une fonction est
la référence (l’adresse en mémoire) du code MATLAB qui définit le traitement
effectué par la fonction).
Le handle d’une m-fonction ou d’une fonction prédéfinie de MATLAB est obtenu en faisant
précéder le nom de la fonction par le symbole @. Par exemple, le handle de la fonction
prédéfinie exp est @exp.
Le handle d’une fonction Inline ou d’une fonction anonyme est le nom avec lequel la
fonction a été définie.
Exemple:
function y = trapèze(f, a, b)
% Input : f : handle
% a : borne inférieure
% b : borne supérieure
return
carre =
Inline fonction :
carre(x) = x.^2
>> trapeze(carre, 1, 2)
ans =
2.5000
F. BOUCHAIB Page 15
>> carre = @(t) t.^2 ;
>> trapeze2(carre, 1, 2)
ans =
2.5000
La fonction menu génère une fenêtre contenant 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 ;
-La fonction menu est souvent utilisée en relation avec la structure algorithmique switch-
case
Exemple
Si l’utilisateur sélectionne Gauss, la variable result prend la valeur 1, la valeur 2 s’il sélectionne
Gauss-Jordan et la valeur 3 s’il sélectionne Quitter.
Exemple:
s=
F. BOUCHAIB Page 16
La commande disp sera souvent utilisée avec num2str pour afficher les valeurs des
expressions numériques.
Exemple:
>> s
s=
la valeur de pi est : 3.1416
La commande disp sera souvent utilisée avec num2str pour afficher les valeurs des
expressions numériques.
Exemple :
>> a = [1 2;3 4] ;
>> disp(a)
12
34
……………………………………………………………………..Suite partie 3
Références :
[1] Cours Outils de programmation pour les mathématiques, Y.BAZIZ, Centre Universitaire RELIZANE, Institut
des Sciences et Technologies, Spécialité : Mathématique et Informatique, LMD 1ére année 2013/2014.
[2] Tutoriel MATLAB, Introduction aux Méthodes Numériques 2013-2014.
[3] poly introduction Matlab, Introduction à Matlab
[4] Introduction à MATLAB, André Casadevall, Université Paris-Dauphine, Département MIDO, mars 2013
[5] Outils Mathématiques et utilisation de Matlab, Quentin Glorieux , Cours 2013-2014,
Université Pierre et Marie Curie - Paris VI, Licence Professionnelle (L3) Instrumentation Optique
et Visualisation,.
F. BOUCHAIB Page 17