Introduction à MATLAB pour débutants
Introduction à MATLAB pour débutants
Introduction à MATLAB
SMA- S5
2023/2024
1 Généralités
2 Découvrir Matlab
3 Vecteurs et matrices
4 Script
5 Représentations graphiques
6 Instructions de contrôle
7 Fonction
8 Équations diérentielles
Plan
1 Généralités
2 Découvrir Matlab
3 Vecteurs et matrices
4 Script
5 Représentations graphiques
6 Instructions de contrôle
7 Fonction
8 Équations diérentielles
Généralités
Généralités
Objectif
Généralités
etc...
Découvrir Matlab Interface de matlab
Interface de matlab
L'interface Matlab se compose d'une fenêtre principale divisée en quatre sous-fenêtres.
Découvrir Matlab Interface de matlab
Interface de Matlab
1- À gauche, " Current Folder" gère l'emplacement des chiers. Celui-ci sera utile pour
le travail avec les m-les.
2- En haut à droite, " Workspace" permet de gérer les variables utilisées.
Découvrir Matlab Interface de matlab
Interface de matlab
3- En bas à droite,Command History est visible par défaut ; il indique les dernières
commandes eectuées.
4- Au milieu, il y a une grand fenêtre :Command Window. La Command Window est la
fenêtre d'interaction avec Matlab ou la fenêtre principale pour l'exécution des
instructions.
Découvrir Matlab Interface de matlab
en créant des scripts (ou m-les) ou des fonctions (extension .m), on crée des "
programmes " sauvegardables
Découvrir Matlab Premier contact
Premier contact
▷ Exemple :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact
Premier contact
▷ Exemple :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact
Premier contact
▷ Exemple :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact
Premier contact
▷ Exemple :
>> 5 + 3 >> 5 ∗ 3
ans = ans =
8 15
5-3 >> 5/3
ans = ans =
2 1.6667
Découvrir Matlab Premier contact
Premier contact
▷ On peut taper plusieurs commandes Matlab sur une même ligne, en les
séparant par une virgule :
>> 1 ∗ 7, 5ˆ10, 8 + 6 ∗ 4ˆ101
▷ Les opérateurs arithmétiques ont la priorité habituelle (cf. calculette).
>> 13 + 2 ∗ 9ˆ2/3
▷ Une ligne d'instruction terminée par un point virgule (; ) est exécutée
immédiatement mais le résultat ne s'ache pas :
>> (3 + 5 ∗ 2ˆ5)/5;
Découvrir Matlab Premier contact
MATLAB dispose de plusieurs formats d'achage des réels. Le format par défaut est le
format court à 5 chires. Les autres principaux formats sont :
>> pi >> format long >> format short e >> format long e
ans = >> pi pi 3 pi 3
3.1416 ans = ans = ans =
3.14159265358979 3.1006e + 01 31.006
format short
Découvrir Matlab Les variables
Les variables
▷ Exemples :
Fonctions mathématiques
>> log 10(10) >> log (exp(1)) >> abs(−12) >> cos(pi)
Exemple :
ans = ans = ans = ans =
1 1 12 −1
Découvrir Matlab Constantes prédénies
Constante Signication
ans réponse à une expression sans assignation
realmax plus grand nombre ottant
realmin plus petit nombre ottant positif
pi
√π
i, j −1
inf ∞
NaN Not a Number
... ...
Découvrir Matlab Opérateurs relationnels
Opérateurs relationnels
== égal à (x == y)
∼= diérent de (x < y)
> strictement supérieur à (x > y)
>= supérieur ou égal à (x >= y)
< strictement inférieur à (x < y)
<= inférieur ou égal à (x <= y)
Découvrir Matlab Opérateurs relationnels
Opérateurs relationnels
Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels
Opérateurs relationnels
Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels
Opérateurs relationnels
Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs relationnels
Opérateurs relationnels
Exemple :
>> 100 > 24
ans =
1
>> 1956 == 3
ans =
0
>> 15∼= 9
ans =
1
>> [2 8 ; 7 3]<= [0 8 ; 7 2]
ans =
0 1
1 0
Découvrir Matlab Opérateurs logiques
Opérateurs logiques
Ces opérateurs eectuent un test logique entre deux variables logiques de même
dimension :
& et (x & y)
| ou (x | y)
∼ non (∼ x)
xor ou exclusif (xxory )
any(x) retourne 1 si un des éléments de x est non nul
all(x) retourne 1 si tous les éléments de x sont nuls
Remarque :
▷ Lorsque deux scalaires sont comparés, le résultat est un scalaire qui vaut
1 si la relation est vrai et 0 si elle est fausse.
Commandes Principales
▷ whos / who : L'ensemble des variables actives peut être consulté grâce
aux commandes whos et who.
Découvrir Matlab Sauvegarde
Sauvegarde
Vecteurs et matrices
▷ Sous Matlab, les scalaires, les vecteurs et les matrices sont tous
construit sur une base de matrice de 2D.
Vecteurs
hi
On dénit un vecteur à l'aide de la commande .
Exemple :
>> V1=[1 2 3 4 ] % vecteur ligne contenant 1 2 3 4
V1=
1 2 3 4
>> V2=[1 ; 2 ; 3 ; 4 ] % vecteur colonne
V2=
1
2
3
4
N.B : Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en
commentaire (MATALAB n'en tiendra pas compte à l'exécution).
Vecteurs et matrices Vecteurs
Vecteurs
hi
On dénit un vecteur à l'aide de la commande .
Exemple :
>> V1=[1 2 3 4 ] % vecteur ligne contenant 1 2 3 4
V1=
1 2 3 4
>> V2=[1 ; 2 ; 3 ; 4 ] % vecteur colonne
V2=
1
2
3
4
N.B : Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en
commentaire (MATALAB n'en tiendra pas compte à l'exécution).
Vecteurs et matrices Vecteurs
Vecteurs
▷ Les tableaux avec une seule ligne sont appelés des vecteurs lignes ou des
listes ;
▷ Les tableaux avec une seule colonne sont appelés simplement des
vecteurs.
Vecteurs et matrices Vecteurs
Vecteurs
▷ Matlab dispose également de moyens très simples pour créer des listes.
Vecteurs
Exemple :
>> V3 =[ 1 : 5 ] % Ce vecteur contient les nombres comprises
% entre 1 et 5 avec un pas par défaut égale à 1
V3=
1 2 3 4 5
>> V4 =[ 1 : 2 : 10 ] % on peut changer le pas, On aura donc
% tous les nombres comprises entre 1 et 10
% avec un pas égale à 2
>> z = [10 : 2 : −10]
z =
Empty matrix : 1-by-0
Vecteurs et matrices Matrices
Matrices
▷ Pour créer une matrice comportant plusieurs lignes, séparez les lignes à
l'aide de points-virgules.
>> A=[1 2 3 ; 4 5 6] % matrice de 2 lignes et 3 colonnes
A =
1 2 3
4 5 6
Matrices
Commandes Principales
Commande Description
ones(i,j) Matrice de i lignes j colonnes contenant des 1
zeros(i,j) Matrice de i lignes j colonnes contenant des 0
eye(i,j) Matrice de i lignes j colonnes avec des 1 sur la diagonale principale
et 0 ailleurs
diag(A) extrait la diagonale de la matrice A
triu(A) renvoie la partie supérieure de la matrice A
tril(A) renvoie la partie inférieure de la matrice A
Vecteurs et matrices Matrices
Commandes Principales
Commandes Principales
Commande Description
size(A) La taille de la matrice
A\b résolution du système linéaire Ax = b
cond(A) conditionnement d'une matrice (norme euclidienne)
det(A) déterminant d'une matrice
rank(A) rang d'une matrice
inv(A) inverse d'une matrice
norm(A) norme matricielle ou vectorielle
Vecteurs et matrices Matrices
Commandes Principales
Commande Description
′
A le transposé de A
A∗B multiplication matricielle
A+B addition matricielle
A−B soustraction matricielle
A. ∗ B multiplication des tableaux A et B terme à terme
A./B division du tableau A par le tableau B terme à terme
Vecteurs et matrices Matrices
Exemples :
> x = [1 2 3 4];
> x
x =
1 2 3 4
> disp(x)
1 2 3 4
Vecteurs et matrices Matrices
La fonction fprintf permet d'écrire des informations sur l'écran ou dans un chier.
La syntaxe pour l'écran est la suivante :
Description :
fprintf('texteMessage')
fprintf('formattexte',listdesVariables)
Exemples :
x=5, y = sqrt(x)
fprintf('La racine de %d vaut %f \n',x,y ) ;
Vecteurs et matrices Matrices
Spécication Description
%d décimal, utilisé en général pour les nombres entiers
%e Notation exponentielle. ex : 3.1415e+00)
%f notation en virgule xe
%s chaîne de caractères
Script
Script
Conseil :
▷ Ne jamais créer un script ou une fonction ayant le même nom qu'une
fonction prédénie !
▷ En cas de doute, vériez que le nom que vous voulez donner à votre
script n'est pas déjà utilisé : pour cela, rechercher l'aide avec help, si elle
existe, c'est qu'une fonction de ce nom existe déjà !
Script
Script
Dénition : Un script est un ensemble d'instructions identiques à celles que l'on peut
employer directement dans la fenêtre de commandes de MATLAB, et qu'on enregistre
dans un chier avec une extension de la forme .m et de les faire exécuter par MATLAB.
Exemple de script :
Script
Remarque :
▷ Puisqu'un script partage les mêmes variables que l'invite de commande,
il est d'usage de commencer par faire le ménage : clear all.
Exemple :
>> script1111
il va acher la gure qui contient un cercle.
Script
Script
Fonction which
La fonction which permet de savoir quel est le chemin du script ou de la fonction que
MATLAB trouve en premier.
Par exemple, pour notre script1111.m :
>> which('script1111')
D : \SMA − S 5 \ ELMASSOUDI \ COURS
ou pour la fonction prédénie 'log ' :
>> which('log')
built-in
(C : \ProgramFiles \ MATLAB − R 2019a \ toolbox \ matlab \ elfun \ @double \ log )
Représentations graphiques
Représentations graphiques
Fonction plot(x,y) :
Etant donné deux vecteurs de même taille, x et y, la fonction plot(x,y) trace le graphe
de y en fonction de x. En fait Matlab relie les points de coordonnées (x(i), y(i)) pour
1 ≤ i ≤ length(x).
En prenant un grand nombre de points dans le vecteur x et en dénissant ensuite
y = f (x) pour une certaine fonction f, la fonction plot(x,y) (ou plot(x,f(x)) ) nous
donnera le graphe de la fonction f.
Représentations graphiques Courbes dans le plan (2D)
Exemple
Courbes paramétrées
La fonction plot permet aussi le tracé de courbes planes dénies sous la forme :
x = f (t)
avec t ∈ [t0 , t1 ] Pour cela :
y = g (t)
on crée un vecteur t correspondant à une subdivision de l'intervalle [t0 , t1 ]
on crée deux vecteurs x et y en appliquant respectivement les fonctions f et g à t
Courbes paramétrées
t=0 : 2*pi/100 : 2 * pi ;
plot(cos(t), sin(t))
Représentations graphiques Courbes paramétrées
Admettons que je veux dénir une nouvelle fonction que j'appelle f dénie
mathématiquement par :
f (x) = sin(x) − xcos(x)
On écrira
f = inline('sin(x)-x.*cos(x)', 'x')
plot(x ; f(x)) ;
f = inline('sin(x)-a.*cos(x)', 'x','a')
Il va acher
f(x,a) = sin(x)-a.*cos(x)
f(1,2)
Représentations graphiques Command plot
Command plot
On peut spécier à MATLAB quelle doit être la couleur d'une courbe, quel doit-être le
style de trait et/ou quel doit être le symbole à chaque point (xi , yi ). Pour cela on donne
un troisième paramètre d'entrée à la commande plot qui est une chaîne de 3 caractères
de la forme 'cst' avec :
s : le symbole du point.
t : le type de trait.
Syntaxe : plot(x,y,'cst').
Représentations graphiques Command plot
Command plot
Représentations graphiques Command plot
Exemple :
Dans une gure, il est préférable de mettre une description textuelle aidant à comprendre
la signication des axes et de connaître le but ou l'intérêt de la visualisation concernée.
Les labels des axes :
◦ title('titre') : titre pour le graphique
◦ xlabel('titre') : légende pour l'axe des abscisses
⋄ ylabel('titre') : légende pour l'axe des ordonnées
⋄ legend('titre1','titre2',...) : légende pour chaque courbe du graphique
⋄ text(x,y,'texte') : texte explicatif à la position (x ; y)
⋄ gtext('texte') : texte positionné à l'aide de la souris
axis([xmin xmax ymin ymax]) : pour dénir les échelles des axes
• grid : quadrillage du graphique
• grid o : sans quadrillage
Représentations graphiques Améliorer la lisibilité d'une gure
Exemple :
>> plot(x, x.ˆ2, 'r +'), xlabel(' abscisse x'), ylabel(' Ordonnée A'), title(' la fonction
carrée'), grid
Représentations graphiques Tracer plusieurs courbes
Exemple
Exemple
Représentations graphiques Tracer plusieurs courbes
Superposition de graphiques
Il est possible de tracer des graphiques de natures diérentes, dans une même fenêtre
graphique.
Par défaut, les fonctions de tracés eacent systématiquement le graphique précédent. Il
est parfois utile de le conserver et de venir le surcharger avec le nouveau graphique. Pour
cela on utilise la commande hold.
Superposition de graphiques
Tracer avec la commande hold
Exemple :
x = −pi : pi/2 : pi;
subplot(1,3,1)
plot(x; exp(−x.2 )); 1 1 1
subplot(1,3,2)
bar (x; exp(−x.2 );′ g ′ );
0.9 0.9 0.9
0 0 0
-2 0 2 -2 0 2 -2 0 2
Représentations graphiques Tracer plusieurs courbes
Exemple
Par défaut la fenêtre graphique est eacée avant chaque commande plot. Pour
superposer des courbes par des appels successifs à cette fonction, il faut auparavant
avoir utilisé la commande hold on.
Exemple :
3
cos(x)
2.5 sin(x)
exp(-x)
hold on 2
plot(x,cos(x),'o-r') 1
plot(x,sin(x),'x-b')
0.5
plot(x,exp(-x),'*-g')
0
legend('cos(x)','sin(x)','exp(-x)')
-0.5
hold o
-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Représentations graphiques Tracer plusieurs courbes
Exemple
Exemple 1 :
plot(x,cos(x),x,sin(x),x,exp(-x))
% Matlab va automatiquement utiliser des couleurs diérentes pour chaque courbe
Exemple 2 :
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g')
% pour spécier le type de symbole et la couleur à utiliser pour chaque courbe
legend('cos(x)','sin(x)','exp(-x)')
% pour rajouter une légende
Représentations graphiques Tracer plusieurs courbes
Fonction plotyy
Pour représenter deux courbes ayant des ordonnées très diérentes (i.e. avec des ordres
de grandeurs très diérents), on utilise la fonction plotyy qui gère de manière
automatique et indépendante les échelles des ordonnées des deux tracés.
Exemple :
On veut représenter deux courbes dans le même domaine de dénition, mais ayant des
amplitudes très diérentes, :
108
1 5
0.8 4.5
0.6 4
y1 = sin(x) ; 0.2 3
y2 = exp( x) ; 0 2.5
-0.2 2
plotyy(x,y1,x,y2) ;
-0.4 1.5
-0.6 1
-0.8 0.5
-1 0
0 2 4 6 8 10 12 14 16 18 20
Représentations graphiques Tracer plusieurs courbes
Si vous venez d'eectuer un tracé, et que vous souhaitez appeler une autre
fonction de tracé, tout en conservant intacte la fenêtre graphique précédente, il est
possible d'en créer une nouvelle par la fonction gure.
Si la fonction gure est appelée sans argument, MATLAB crée une nouvelle fenêtre
graphique, en incrémentant le numéro de cette fenêtre. Il est possible de créer une
fenêtre spécique en précisant son numéro, comme argument de la fonction.
On peut dénir une courbe en 3D par une liste de triplets (x ;y ; z)et en utilisant
l'instruction plot3 avec trois arguments :
Syntaxe :
plot3(Vx,Vy,Vz) ;
Représentations graphiques Courbes dans l'espace (3D)
Exemple
Exemple :
Voici un exemple de courbe paramétrée tracée dans un espace à trois dimensions :
t = -2 * pi : 2 * pi/100 :2 * pi ;
plot3(exp(-t/10).* sin(t),exp(-t/10).*cos(t),exp(-t)) ;
grid ;
Exemple 2 :
t = 0 :pi/50 :10*pi ;
st = sin(t) ;
ct = cos(t) ;
plot3(st,ct,t)
Instructions de contrôle
Instructions de contrôle
Les instructions de contrôle sous MATLAB sont très proches de celles existant dans
d'autres langages de programmation.
Ces instructions sont :
▷ L'instruction conditionnée IF
Remarque :
Les structures de contrôle forment des blocs, délimités par :
Syntaxe :
Exemple :
Calculer n! avec la boucle for :
n = 5;
nfac = 1 ;
for k = 1 :n
nfac = nfac*k ;
end
nfac =120
Instructions de contrôle Boucle WHILE : tant que . . . faire
Syntaxe :
expression logique est une expression dont le résultat peut être vrai ou faux ;
séquence d'instructions est le traitement à eectuer tant que expression logique est vraie.
Interprétation :
Tant que expression logique est vraie le traitement séquence d'instructions est exécuté
sous forme d'une boucle. Lorsque expression logique devient faux, on passe à
l'instruction qui suit immédiatement l'instruction de n de boucle (end).
Instructions de contrôle Boucle WHILE : tant que . . . faire
Exemple :
Calculer n! avec la boucle while :
n = 5;
k = 1 ; nfac = 1 ;
while k <= n
nfac = nfac*k ;
k = k+1 ;
end
nfac =
120
Instructions de contrôle L'instruction conditionnée IF
L'instruction conditionnée IF
Syntaxe :
if expression logique
séquence d'instructions
.
.
end
expression logique est une expression dont le résultat peut être vrai ou faux ;
Interprétation :
la séquence d'instructions n'est exécutée que si le résultat de l'évaluation de l'expression
logique est vraie. Dans le cas contraire on exécute l'instruction qui suit le mot clé end.
Instructions de contrôle L'instruction conditionnée IF
L'instruction conditionnée IF
if expression logique
séquence d'instructions 1
else
séquence d'instructions 2
.
end
Interprétation :
Si expression logique est vraie la séquence d'instructions 1 est exécutée, sinon c'est la
séquence d'instructions 2 qui est exécutée. Le déroulement du programme reprend
ensuite à la première instruction suivant le mot clé end.
Instructions de contrôle L'instruction conditionnée IF
L'instruction conditionnée IF
Exemple :
x=input('Donner une valeur de x : x=') ;
if x >= 0
disp('x est un nombre positif ') ;
else
disp('x est un nombre strictement négatif ') ;
end
Instructions de contrôle L'instruction conditionnée IF
L'instruction conditionnée IF
if expression logique 1
séquence d'instructions 1
elseif expression logique 2
séquence d'instructions 2
...
elseif expression logique n
séquence d'instructions n
else
séquence d'instructions par défaut
end
Instructions de contrôle L'instruction conditionnée IF
L'instruction conditionnée IF
Interprétation :
▷ Si expression logique 1 est vraie la séquence d'instructions 1 est
exécutée et le programme reprend ensuite à la première instruction
suivant le mot clé end,
L'instruction conditionnée IF
Exemple :
n=input('Donner une valeur ') ;
if n == 1
A = ones(n)
elseif n == 2
A = magic(n)
elseif n == 3 | n == 4
A = rand(n)
else
error('numero d'exemple non prevu ...') ;
end
% A = magic(n) renvoie une matrice n2 construite à partir des entiers 1 à n2 avec des
sommes de ligne et de colonne égales.
% A = rand(n) renvoie une matrice n-par-n de nombres aléatoires.
Instructions de contrôle L'instruction switch
L'instruction switch
La commande switch est une autre forme d'instruction conditionnelle. Elle peut souvent
être utilisée à la place d'une instruction if imbriqué ou if-elseif.
Syntaxe :
switch expression
case valeur1,
instructions1...
case valeur2,
instructions2 ...
case valeur3,
instructions3 ...
...
otherwise
instructions ...
end
Instructions de contrôle L'instruction switch
L'instruction switch
Interprétation :
▷ L'expression testée, expression, doit être un scalaire ou une chaîne de
caractère.
▷ Une fois qu'un bloc instructions i est exécuté, le ux d'exécution sort de
la structure et reprend après le end.
▷ Si aucun case vérie l'égalité, le bloc qui suit otherwise est exécuté.
Instructions de contrôle L'instruction switch
L'instruction switch
Exemple :
Pour provoquer interruption d'une boucle de contrôle, on utilise l'une des deux
instructions suivantes :
fonction
Pour dénir une fonction sous Matlab, on écrit la dénition de la fonction dans un
chier avec une extension .m (fonction M-File).
fonction
où
Exemple de fonction
Méthode de dichotomie
function x = racine(a,b)
fa = f(a) ; fb = f(b) ;
if (fa * fb > 0)
x = -Inf ;
return ;
else
while (b-a) >1.e-5
x=(a+b)/2 ; fx=f(x) ;
if (sign(fx) == sign(fa))
a=x ; fa=fx ;
else
b=x ; fb=fx ;
end
end
end
x;
function y=f(x) % denition de f(x) (fonction locale)
y = x+3 ;
Remarque : Pour exécuter cette fonction on tape par exemple racine(-5,2).
Fonction Fonctions inline
Fonctions inline
* L'expression mathématique qui constitue le corps de la fonction ainsi que les variables
sont considérées par MATLAB comme des chaines de caractères et doivent donc être
tapées entre apostrophes.
* Il est préférable que les fonctions soient vectorisées comme le sont les fonctions
prédénies. Il faut alors n'utiliser que des opérateurs pointés dans l'expression dénissant
la fonction.
* La déclaration des variables peut être optionnelle dans la dénition des fonctions
Inline, MATLAB eectuant une déclaration implicite de celles-ci. Cette facilité, source
d'ambiguïtés dans le cas de fonctions de plusieurs variables n'est pas à recommander
dans ce cas.
Fonction Fonctions inline
Fonctions Inline
Exemple :
>> f = inline ('x . ˆ 2 + x .* y', 'x', 'y')
f =
Inline fonction :
f (x, y ) = x . ˆ 2 + x . * y
>> f (1, 2)
ans =
3.0000
>> f ([1 6], [2 1])
ans =
3.0000 42.0000
Fonction Fonctions anonymes
Fonctions anonymes
Ce troisième mode de dénition de fonctions utilise comme pour les fonctions Inline
l'espace de travail courant. La syntaxe minimale est peu explicite, mais les fonctions
ainsi dénies seraient plus ecaces que fonctions Inline.
Syntaxe :
Exemple :
la fonction fplot permet de tracer une fonction entre deux bornes, sans dénir un
ensemble d'abscisses.
Syntaxe : fplot(f,xinterval)
Exemple :
>> g = @(x) x.ˆ2 + x
g =
@(x) x.ˆ2 + x
fplot(g,[-1,2])
Fonction Fonctions anonymes
Remarque et conseil :
Lors de la dénition d'une fonction, il est important de bien choisir l'ordre des
variables de sortie, par ordre d'importance. Il est ainsi toujours possible de
récupérer les premières variables de sortie, en ignorant les suivantes.
Lorsque l'on dénit une fonction dans un chier, il est préférable de mettre un ( ;)
à la n de chaque commande constituant la fonction. Ainsi, on évitera l'achage
de résultats intermédiaires. Attention cependant à ne pas en mettre sur la première
ligne.
fonction
Structuration des programmes
Un programme peut être constitué d'un simple script MATLAB, mais pour résoudre des
problèmes complexes, ou nécessitant beaucoup de traitements, il est très souvent utile,
de structurer le programme en :
un ensemble de fonctions, qui sont appelées soit par le script principal, soit par les
fonctions elles-mêmes.
Fonction Fonctions anonymes
Équations diérentielles
Matlab possède plusieurs solveurs approchés pour les équations diérentielles du type
y (t0 ) = y0
Le solveur choisi, par exemple ode45, ode23, ode113, ode15s, ode23s, ode23t, ou
ode23tb, résout le problème de Cauchy ci-dessus en utilisant une méthode et une
précision choisies par l'utilisateur.
La syntaxe de base :
[T , Y ] =solver(odefun,tspan,y0).
Réformation du problème
Pour résoudre une équation à l'aide des solveurs ode, il faut l'exprimer sous une forme
vectorielle. Pour cela :
- On peut écrire une équation diérentielle quelconque
d ny dy d 2 y d n−1 y
=f t, y , , 2 , . . . , n−1
dt n dt dt dt
sous la forme d'un système d'équation diérentielles du premier ordre en faisant le
changement de variable suivant :
dy d 2y d (n−1) y
y1 = y , y2 = , y3 = , . . . , y =
dt 2 dt (n−1)
n
dt
et on obtient
ẏ1 = y2
ẏ2 = y3
.
.
.
ẏn = f (t, y1 , y2 ; ..., yn )
Équations diérentielles
Problème
ẏ1 = f1 (t, y1 , y2 , ..., yn )
ẏ2 = f2 (t, y1 , y2 , ..., yn )
.
.
.
ẏn = fn (t, y1 , y2 ; ..., yn )
avec les conditions initiales y1 (0) = y10 , ... ,yn (0) = yn0 .
Équations diérentielles
Méthode
La dénition d'un système repose sur la dénition de n fonctions de n+1 variables. Ces
fonctions devront être programmées dans une fonction MATLAB sous la forme
canonique suivante :
function ypoint = f (y, t)
ypoint(1) = une expression de y(1),y(2)...y(n) et t.
...
ypoint(n) = une expression de y(1),y(2)...y(n) et t.
ypoint = ypoint( :) ;
end
▷ Les yi et les ẏi sont regroupés dans des vecteurs, ce qui fait que la forme de cette
fonction est exploitable quel que soit le nombre d'équations du système diérentiel.
▷ La dernière ligne est nécessaire car la fonction doit renvoyer un vecteur colonne et non
un vecteur ligne.
Équations diérentielles
Méthode
Pour résoudre cette équation diérentielle, il faut appeler un solveur et lui transmettre
au minimum :
▷ le nom de la fonction.
Méthode
Exemple
2
▷ La solution exacte est y (t) = e −t /2 .
▷ Transformer cette équation en un système
Programme
exemple
Y ′ (t) = −y (t) + t + 1
Programme
clc, clear all, close all
f = @(t, y ) − y + t + 1;
y 0 = 1;
h = 0.001;
a = 0; b = 0.4;
h = 0.01 ;
N = floor ((b − a)/h);
t = [a : h : b];
[t 45, y 45] = ode 45(f , t, y 0);
hold on
plot(t 45, y 45)
yex = t + exp(−t);
plot(t, yex)
y = zeros(1, N + 1);
y (1) = y 0;
fori = 1 : N
y (i + 1) = y (i) + h ∗ f (t(i), y (i));
end
yeul = y ;
plot(t, yex,′ y ′ );
legend(′ e ′ ,′ d ′ ,′ r ′ )