Vous êtes sur la page 1sur 53

Initiation à la modélisation

(support électronique)

Prof. Lahoucine EL MAIMOUNI


Faculté Polydisciplinaire de Ouarzazate, Université Ibn Zohr

Filière : Sciences de la Matière Physique (SMP), Semestre 6


Module : Initiation à la modélisation

1
Initiation à MATLAB
I. Logiciel Matlab :
Matlab est un logiciel de calcul scientifique, dont la base est le calcul matriciel
(MATrix LABoratory = MATLAB). C'est un logiciel interactif, où les instructions
peuvent être directement tapées en ligne de commande, ou bien sauvées dans un
fichier (un script).
On peut également utiliser des fonctions (comme en langage C). Le langage est
interprété (pas de compilation des programmes avant exécution), et utilise des
bibliothèques de fonctions très nombreuses, ce qui fait de Matlab un outil puissant
permettant d'écrire des programmes scientifiques beaucoup plus rapidement
qu'avec n'importe quel autre langage traditionnel comme le langage C, C++.
I.1. Répertoire de travail
Le répertoire par défaut est en général c:\matlab\work. Pour conserver vos données,
il faut donc changer de répertoire de travail, pour mettre ses fichiers dans un
répertoire personnel. On suppose qu’il existe un disque dur D. Créons un
répertoire de travail TP_Matlab sur le disque D :

I.2. Interpréter une ligne de commande


Les instructions sont interprétées dès qu’on a tapé sur « Entrée ».
On peut aussi faire afficher l’aide en ligne générale, via la commande help,
qui liste les fonctions disponibles, par thème.
2
» help
HELP topics:
matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Programming language constructs.
matlab\elmat - Elementary matrices and matrix manipulation.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear algebra.
matlab\datafun - Data analysis and Fourier transforms.
matlab\polyfun - Interpolation and polynomials.
matlab\funfun - Function functions and ODE solvers.
……………………

I.3. Variables et espace de travail


Dans Matlab, toute variable est une matrice de dimensions m x n, avec m correspond
au nombre de lignes, n correspond au nombre de colonnes,
 scalaire : 1 x 1;
 vecteur ligne : 1 x m;
 vecteur colonne n x 1;
 matrice m x n

3
Un nom de variable doit respecter les règles suivantes :
 commencer par une lettre (a-z ou A-Z)
 avoir au plus 63 caractères
 ne contenir ni blancs, ni caractères de ponctuation, ni caractères accentués,
ni opérateurs arithmétiques (-, +, ...), ...
Matlab fait la différence entre les majuscules et les minuscules.

Exemple :
» a=15  Affichage: a = 15
» SMP1=2*a  Affichage : SMP1 = 30
» SMP2=3*a  Affichage : SMP2 = 45

Matlab traite également les variables complexes ; le nombre complexe i (ou j)


existe par défaut dans l'espace de travail.

%  1 =i : » sqrt(-1)  Affichage : ans = 0 + 1.0000i


>> z1=5+2i  Affichage z1 = 5.0000 + 2.0000i
>> z2=6+3i  Affichage: z2 = 6.0000 + 3.0000i
>> z3=z1*z2  Affichage : z3 = 24.0000 +27.0000i
>> z4=z3'  Affichage : z4 = 24.0000 -27.0000i (z3’ c’est le transposé de z3)
>> Z5=z3'*z3  Affichage : z5 = 1305
>> z6=abs(z3)^2  Affichage : z6 =1.3050e+003
4
I.4. Format d’affichage dans la fenêtre de commande, double précision
Lorsque l’on met un point-virgule à la fin d’une ligne, le résultat de l’opération n’est
pas affiché, mais la commande a bien été exécutée.
»r=2 ;
% circonférence
» circonf=2*pi*r;  Affichage : circonf= 12.5664
% surface
» surf=pi*r^2;  Affichage : surface =12.5664
% volume d’une sphérique
»volsph=4/3*pi*r^3;  Affichage : volsph = 33.5103

L’affichage par défaut est de 4 chiffres après la virgule, bien que les valeurs
numériques soient en double précision. En double précision, les valeurs sont
stockées sur 8 octets et ont au moins 15 chiffres significatifs, soit une précision de
10-16
. On peut choisir le format d’affichage à l’écran :
» help format
FORMAT Set output format.
All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT Default. Same as SHORT.
FORMAT SHORT Scaled fixed point format with 5 digits.
5
FORMAT LONG Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point format with 5 digits.
FORMAT LONG G Best of fixed or floating point format with 15 digits.
FORMAT HEX Hexadecimal format.
FORMAT + The symbols +, - and blank are printed
for positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK Fixed format for dollars and cents.

Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE Puts the extra line-feeds back in.

Exemple:
>> f= cos(pi/3)-sqrt(3)/5  Affichage : f= 0.1536
>> format long
>> f= cos(pi/3)-sqrt(3)/5  Affichage : f = 0.15358983848622
>> format short
>> f= cos(pi/3)-sqrt(3)/5  Affichage : f= 0.1536

6
I.5. Manipulation des vecteurs : Opérations de base
» v=[1 3 5 7 11 13 17 19 23 29] il s’agit d’un vecteur ligne
l’écran affiche: v = 1 3 5 7 11 13 17 19 23 29

Calculer les dimensions d’un vecteur : » s=size(v)  Affichage : s = 1 10


Calculer la longueur d’un vecteur : » l=length(v)  Affichage: l = 10

On peut obtenir différents types de vecteurs en utilisant directement des fonctions


Matlab. Par exemple, la fonction zero produit un vecteur de zéros, ones produit
un vecteur de 1. Il faut préciser les dimensions lors de l’appel à la fonction.
par exemple trois vecteur lignes à 3 éléments a pour paramètres (3,3), pour indiquer
3 lignes et 3 colonnes.
» zeros(3,3)  Affichage : ans = 0 0 0
0 0 0
0 0 0
» ones(3,8)  Affichage : ans = 11111111
11111111
11111111
II. Opérations sur les matrices
II.1. Opérateurs arithmétiques
+ Addition ; - Soustraction ; * multiplication ; / Division ; \ division à gauche
^ puissance ; ' transposition ou complexe conjugué ; .* multiplication de matrice "point par point"
./ division de matrice "point par point" ; .^ puissance de matrice "point par point"
7
Une matrice est souvent le résultat d’un calcul. Elle peut être définie par une
commande d’affectation simple :
A = [9 1 4 5; 5 6 18 4; 7 2 3 15; 3 7 11 4]
Si on ne termine pas la ligne de commande par le caractère de ponctuation ";"
MATLAB affiche le résultat de l'affectation dans la fenêtre de commande :
A= 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
Cette matrice est maintenant mémorisée dans l'espace de travail MATLAB et
pourra être utilisée durant toute la séance de travail courante. L'instruction who
Donne la liste des variables mémorisées dans l'espace de travail MATLAB.
L'instruction whos donne la liste des variables avec leur taille et leur classe (type)

II.2. Ajouter retrancher une constante:


>> X=A+100  Affichage X=
109 101 104 105
105 106 118 104
107 102 103 115
103 107 111 104
>> Y=A-A  Affichage Y=
0 0 0 0
0 0 0 0
0 0 0 0 8
0 0 0 0
>> B=[5 3 8 6;10 7 8 10;2 0 4 6;11 3 4 9]  Affichage B =
5 3 8 6
10 7 8 10
2 0 4 6
11 3 4 9
>> y=A+B  Affichage y = 14 4 12 11
15 13 26 14
9 2 7 21
14 10 15 13
II.3. Multiplication et diviser par une constante.
>> X =A*2  X = 18 2 8 10
10 12 36 8
14 4 6 30
6 14 22 8
II.4. Multiplication de matrice.
>> A * B  ans = 118 49 116 133
165 69 176 234
226 80 144 215  Il s’agit d’une vraie multiplication de matrice.
151 70 140 190

II.5. Matrice puissance une constante


>> A^2  ans = 129 58 121 129
213 105 226 335
139 130 238 148  La matrice A à la puissance 2 ( A*A)
151 95 215 224 9
>> A^3  ans = 2685 1622 3342 3208
5029 3640 7105 6215  La matrice A à la puissance 3 ( A*A*A)
4011 2431 5238 5377
4011 2719 5423 5256
II.6. Matrice puissance une matrice
>> A ^ B
??? Error using ==> mpower
At least one operand must be scalar.
Matrix dimensions must agree.
On ne sait pas calculer une matrice carrée puissance une matrice carré

II.7. Multiplication élément par élément (mode tableau)


Chaque élément de A est multiplié par l'élément correspondant dans B.
On utilise l'opérateur .*
>> X1 = A.*B  X1 = 45 3 32 30
50 42 144 40
14 0 12 90
33 21 44 36
II.7. Division élément par élément (mode tableau)
Chaque élément de A est divisé par l'élément correspondant dans B.
On utilise l'opérateur ./
>> X =A./B  Warning: Divide by zero. X = 1.8000 0.3333 0.5000 0.8333
 On remarque que la division par zéro a généré 0.5000
3.5000
0.8571 2.2500 0.4000
Inf 0.7500 2.5000
un simple warning. Le calcul global est terminé. 10
Les divisions par zéro produisent inf 0.2727 2.3333 2.7500 0.4444
II.8. Puissance de n élément par élément (mode tableau)
Chaque élément de A est élevé a la puissance n.
On utilise l'opérateur .^
>> A.^2  ans = 81 1 16 25
25 36 324 16
49 4 9 225
9 49 121 16
II.9. Puissance élément par élément (mode tableau)
Chaque élément de A est élevé à la puissance de l'élément correspondant dans B.
On utilise l'opérateur .^
>> X = A.^B  X = 1.0e+010 *
0.0000 0.0000 0.0000 0.0000
0.0010 0.0000 1.1020 0.0001
0.0000 0.0000 0.0000 0.0011
0.0000 0.0000 0.0000 0.0000
III. Opération, Contrôler l’exécution
III.1 Opérateurs de comparaison
Ces opérateurs sont essentiellement utilisés avec les instructions if else,while
== est égal à ; ~= est différent de ; > supérieur à ;
< inférieur à ; >= supérieur ou égal à <= inférieur ou égal à
Exemple: (if, else, end)
if a == b
faire quelque chose
else
faire autre chose 11
end
III.3. Contrôler l’exécution
III.3.1. Boucles « for » :
>> for i = 1:4
for j = 1:3
Affichage  M= 2 3 4
M (i,j) = i^2 + j;
5 6 7
end
10 11 12
end
17 18 19
III.3.2 Boucles « if »
La structure générale de “if” et “else” est la suivante:
III.3.3. Boucles « while »
if expression logique 1 >> while (expression)
instructions A {commandes}
elseif expression logique 2 end
instructions B  Pour stopper une boucle en cours d’exécution
else expression logique 3 en utilise l’instruction: « Ctrl C »
instructions C
end
IV. M-files ou scripts
Un script (ou M-file) est un fichier (question.m par ex) contenant des instructions matlab
% ce programme affiche un message
clear all;
reponse = input ('fait-il beau? (y/n)', 's');
if (reponse=='y')
fprintf ('vous êtes de bonne humeur \n');
else
fprintf ('vous êtes de mauvaise humeur \n'); 12
end
IV. 1. Fonctions
On peut écrire des fonctions Matlab que l’on peut ensuite appeler dans un script
ou directement dans l’espace de travail
Exemple
function imax = index_max(vecA)
% fonction qui calcule l’indice de la valeur maximale d’un vecteur
% utilisation : i = index_max (vecteur)
[a,ia] = max (vecA);
imax = ia;
>> help index_max
fonction qui calcule l’indice de la valeur maximale d’un vecteur
utilisation : i = index_max (vecteur)
>> vec = [1 5 6 3 5 2];
>> i = index_max (vec)  i=6
IV. 2. Les indices et l'opérateur : (deux points)
A(i,j) est l'élément situé à la ligne i et à la colonne j
>> A(2,3)  l’écran affiche 18
>> A(2,2)  l’écran affiche 6
>> A(3,3)  l’écran affiche 3
L'opérateur ":" est fondamental sous MATLAB, il permet de définir une suite d'éléments.
En l'utilisant dans les indices, on peut accéder à une partie d'une matrice.
>> 3:10  l’écran affiche: ans = 3 4 5 6 7 8 9 10
>> 0:0.5:4  l’écran affiche: ans =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
13
>> 12:-2:2  l’écran affiche : ans = 12 10 8 6 4 2
>> A(1,2:4) (dans la première ligne, on affiche les valeurs du deuxième, troisième
et quatrième colonnes. : 1, 4 et 5
>> A(2,2:4)  6 18 4
>> A(3,2:4)  2 3 15
>> A(4,2:4)  7 11 4
>> A(1,:) : affiche toutes les valeurs du première lignes  Résultat : 9 1 4 5
>> A(2,:)  5 6 18 4
>> A(3,:)  7 2 3 15
>> A(4,:)  3 7 11 4
>> A(:,1) : affiche toutes les valeurs du première lignes: 9
5
7
3
A(:,2)  1 A(:,3)  4 A(:,4)  5
6 18 4
2 3 15
7 11 4

Si on essaye d'utiliser un élément en dehors de la matrice, il se produit une erreur :


>> A(7,2)  ??? Index exceeds matrix dimensions.

D'un autre coté, si on définit un nouvel élément de la matrice en de hors de la taille initiale, la
matrice est redimensionnée pour inclure le nouvel élément, les éléments non définis sont
complétés par des zéros :
14
>> A(3,7) = 10 >> A(3,8) = 15
A= 9 1 4 5 0 0 0 A= 9 1 4 5 0 0 0 0
5 6 18 4 0 0 0 5 6 18 4 0 0 0 0
7 2 3 15 0 0 10 7 2 3 15 0 0 0 15
3 7 11 4 0 0 0 3 7 11 4 0 0 0 0
On peux retrouver facilement notre matrice originale en utilisant l’instruction : A(:,1:4)
>> A=A(:,1:4)
A= 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
On peut aussi accéder à plusieurs éléments non adjacents
>> A([1 3],[2 4]) Ligne 1 et 3 puis colonnes 2 et 4 : Résultats ans = 1 5
2 15
IV.3 Concaténation : Ajouter des blocs de matrices
>> X=[A A] >> X=[A A A]
X = X=
9 1 4 5 9 1 4 5 9 1 4 5 9 1 4 5 9 1 4 5
5 6 18 4 5 6 18 4 5 6 18 4 5 6 18 4 5 6 18 4
7 2 3 15 7 2 3 15 7 2 3 15 7 2 3 15 7 2 3 15
3 7 11 4 3 7 11 4 3 7 11 4 3 7 11 4 3 7 11 4

15
>> X = [A; A] >> X = [A; A;A]  X =
X= 9 1 4 5
9 1 4 5 5 6 18 4
5 6 18 4 7 2 3 15
7 2 3 15 3 7 11 4
3 7 11 4 9 1 4 5
9 1 4 5 5 6 18 4
5 6 18 4 7 2 3 15
7 2 3 15 3 7 11 4
3 7 11 4 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
IV.4. Transposition : les lignes devinent des colonnes
La transposition d’une matrice est obtenue à l'aide du caractère de ponctuation '
>> C=A'  C=
9 5 7 3
1 6 2 7
4 18 3 11
5 4 15 4
IV.5. Fonction de sommation sum
La fonction sum calcule la somme colonne par colonne, mais dans le cas où la matrice se réduit
à un vecteur ligne, elle calcule la somme de tous les éléments du vecteur :
>> X=sum(A)  X = 24 16 36 28 ; >> Y = sum(X)  Y =104
Pour transformer un vecteur ligne en vecteur colonne et vice versa, il suffit de transposer :
>> Z=X'  Z = 24; 16; 36; 28 16
Pour calculer la somme lignes par lignes, il suffit de transposer avant d'utiliser la fonction sum :
>> C=A'  C =
9 5 7 3
1 6 2 7
4 18 3 11
5 4 15 4
>> XX=sum(A’)  XX = 19 33 27 25
IV.5.1. Fonction Diag
Cette fonction retourne une colonne contenant la diagonale d'une matrice
A=
9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
>> Vp=diag(A)  Vp = 9
6
3
4
>> H=diag(A)'  H=9 6 3 4
La fonction MATLAB triu avec comme argument la matrice originale seule, génère une nouvelle
matrice qui a la même diagonale principale que A et les même valeurs situées au dessus de
cette diagonale, avec des 0 partout ailleurs. La fonction triu(A,k) est une matrice qui a la même
taille et les mêmes éléments que A qui sont situés sur et au dessus de la kième diagonale;
on complète la nouvelle matrice obtenue avec des 0.

17
>> A4=triu(A) A4 = >> A5=triu(A,-1)  A5 =
9 1 4 5 9 1 4 5
0 6 18 4 5 6 18 4
0 0 3 15 0 2 3 15
0 0 0 4 0 0 11 4
>> A6=triu(A,-2)  A6 =
9 1 4 5 >> B1=tril(A)  B1 =
5 6 18 4 9 0 0 0
7 2 3 15 5 6 0 0
0 7 11 4 7 2 3 0
>> A7=triu(A,-3)  A7 = 3 7 11 4
9 1 4 5 >> B2=tril(A,+1)  B2 =
5 6 18 4 9 1 0 0
7 2 3 15 5 6 18 0
3 7 11 4 7 2 3 15
3 7 11 4
>> B3=tril(A,+2)  B3 = >> B4=tril(A,-1)  B4=
9 1 4 0 0 0 0 0
5 6 18 4 5 0 0 0
7 2 3 15 7 2 0 0
3 7 11 4 3 7 11 0

IV.5.2. Les fonctions fliplr et flipud


Ces deux fonctions permettent de retourner une matrice de gauche à droite
ou de droite à gauche :
Fliplr : intervertit de la gauche vers la droite ; flipud : intervertit de haut en bas. 18
>> A1=fliplr(A) A1= >> A2=flipud(A)  A2 =
5 4 1 9 3 7 11 4
4 18 6 5 7 2 3 15
15 3 2 7 5 6 18 4
4 11 7 3 9 1 4 5

IV.5.3. Fonctions ones et zeros:


Les fonctions zeros et ones permettent de générer des matrices remplie
avec des zéros ou des uns.
>> X = zeros(4)  X = >> X = ones(4)  X =
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
>> X=zeros(4,6)  X =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
IV.5.4. Fonctions length et size
La fonction length retourne la longueur d'un vecteur (ligne ou colone) et la fonction size retourne
la dimension d'une matrice: A = 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
>> L=length(A)  L = 4, >> size(A)  ans = 4 4 19
IV.5.5. Fonctions min et max
Les fonctions min et max retournent le plus petit et le plus grand élément d'un vecteur.
>> min(A)  ans = 3 1 3 4
>> max(A)  ans = 9 7 18 15
IV.5.6. Fonction fix
La fonction fix retourne la partie entière d'un nombre
>> A3=A+0.00125
 A3= >> fix(A3)  ans = 9 1 4 5
9.0013 1.0013 4.0012 5.0012 5 6 18 4
5.0012 6.0012 18.0012 4.0012 7 2 3 15
7.0012 2.0013 3.0013 15.0013 3 7 11 4
3.0013 7.0012 11.0013 4.0012

IV.5.7. Fonction reshape


Pour redimensionner une matrice, On utilise la fonction reshape() :
A= 9 1 4 5
>> B2=reshape(A,8,2) 
5 6 18 4
B2 =
7 2 3 15
9 4
3 7 11 4
5 18
A4=(A,1,7)
7 3
>> B1=reshape(A,2,8)
3 11
B1=
1 5
9 7 1 2 4 3 5 15
6 4
5 3 6 7 18 11 4 4
2 15
7 4 20
V. Opérateur logiques
Ces opérateurs sont utilisés avec des grandeurs logiques. Une grandeur logique peut avoir
deux valeurs: true ou false. Les grandeurs numériques peuvent aussi être manipulé comme
logique: tout ce qui est différent de 0 est true, 0 = false
& ET logique --> (a & b) est varie si a est vraie ET b est vraie
| OU logique ; ~ NON logique ; xor OU exclusif
Exemple: if, elseif else, else, end
if a == b & b > c
faire les devoirs d’analyse
elseif
faire les devoirs d’électronique
else
faire les devoirs de mécanique
end
V.1. Opérateurs logique de court-circuit
&& similaire à & sauf que le 2ème opérande n'est évalué que si le premier est vrai
|| similaire à | sauf que le 2ème opérande n'est évalué que si le premier est vrai
Dans beaucoup de cas, ceci va éviter des messages d'erreur. Par exemple, si la variable
x n'existe pas et le programme rencontre:
if x > 0
y = log(2x);
end
Le programme va générer le message d'erreur ??? Undefined function or variable 'x'
On peut éviter le message d'erreur comme suit:
if exist('x') && x > 0
y = log(2x);  La variable x ne sera comparée à 0 que si elle existe 21
end
V.3. Fonctions logiques prédéfinies
Voici une liste de fonctions logiques prise comme telle dans la doc officielle
exist Check existence of variable, function, isevent Determine if input is Component Object
folder, or class Model (COM) object event
isa Detect object of given MATLAB isfield Determine if input is MATLAB structure
class or Java® class array field
isappdata Determine if object has specific isfinite Detect finite elements of array
application-defined data
isfloat Determine if input is floating-point array
iscell Determine if input is cell array
isglobal Determine if input is global variable
iscellstr Determine if input is cell array
of strings ishandle Detect valid graphics object handles
ischar Determine if input is character array ishold Determine if graphics hold state is on
iscom Determine if input is Component Object isinf Detect infinite elements of array
Model (COM) object isinteger Determine if input is integer array
isdir Determine if input is folder isinterface Determine if input is Component Object
isempty Determine if input is empty array Model (COM) interface
isequal Determine if arrays are numerically equal isjava Determine if input is Java object
isequaln Determine if arrays are numerically equal, iskeyword Determine if input is MATLAB keyword
treating NaNs as equal
ismethod Determine if input is object method
isletter Detect elements that are alphabetic letters
isnan Detect elements of array that are not a number
islogical Determine if input is logical array (NaN)
ismac Determine if running MATLAB for Macintosh isnumeric Determine if input is numeric array
OS X platform
isobject Determine if input is MATLAB object
ismember Detect members of specific set
22
VI. Graphismes
L’idée générale est de d’écoper la fenêtre graphique en pavés de même taille, et d’afficher
un graphe dans chaque pavé. On utilise l’instruction subplot en lui spécifiant le nombre de
pavés sur la hauteur, le nombre de pavés sur la largeur, et le numéro du pavé dans lequel
on va tracer : subplot (Nbre pavés sur hauteur, Nbre pavés sur largeur, Numero pavé). La
virgule peut être omise. Les pavés sont numérotés dans le sens de la lecture d’un texte :
de gauche `a droite et de haut en bas :

Exemple:

subplot(2,2,1)  1 2  subplot(2,2,2)
subplot(2,2,3)  3 4  subplot(2,2,4)

Pour revenir à la 1ère fenêtre, effacer la fenêtre, puis fermer toutes les fenêtres :
» figure(1)
» clf
» close all

VI.1. Affichage de plusieurs graphiques sur une même fenêtre, gestion des fenêtres
On peut afficher plusieurs courbes sur un même graphique en utilisant hold on et hold off, ou
plusieurs graphiques sur une même fenêtre en utilisant la fonction subplot, ou encore passer
d'une fenêtre à une autre avec figure.
Exemple : sur l’intervalle et
23
% SMP_TP1.m
%Tracé de la fonction sin(2*pi*w1*t) sur l’intervalle et
figure(1)
%définir l'intervalle et le pas 1
t=-1.5:0.01:1.5; f1
% calcul de la fréquence 0.5 f2
w1=1/3;

f1,f2
% calcul de la fonction f1, f2 et f3 0
f1=sin(2*pi*w1*t);
-0.5
f2=cos(2*pi*w1*t);
f3= tan(2*pi*w1*t); -1
subplot(2,1,1) -1.5 -1 -0.5 0 0.5 1 1.5
plot(t,f1,'k') t
16
xlabel('t') x 10
2
ylabel('f1,f2')
grid; 1
hold on
plot(t,f2,'m') 0
f3

subplot(2,1,2)
plot(t,f3,'r') -1
xlabel('t')
ylabel('f3') -2
-1.5 -1 -0.5 0 0.5 1 1.5
grid;
t

 Avec la commande hold, on maintient le stylo graphique sur la fenêtre, alors que hold off
le relève. La commande hold seule fait passer d'un état à l'autre. Pour afficher plusieurs
graphiques dans une même fenêtre, on utilise subplot de la façon suivante : 24
Exemple
t=-10:0.1:10; w1=3/2; x=(1+cos(2*pi*w1*t))/2; y=exp(-abs(t/3)) ;
subplot(2,2,1) ; plot(t,x,’r’) ; grid ; xlabel('t en secondes') ; ylabel('x') ;
title(['x(t)=(1+cos(2\pi w1 t))/2, w1 = ',num2str(w1),' rad/s'])
subplot(2,2,2) ; plot(t,y,’b’) ; grid ; xlabel('t en secondes'); ylabel('y'); title('y(t) = exp(t/3)');
subplot(2,2,3) ; plot(t,x.*y,’k’) ; grid ; title('p(t)=x(t)y(t)') ; xlabel('t en secondes'); ylabel('p(t)')
subplot(2,2,4) ; plot(t,x./y,’g’) ; grid ; title('d(t)=x(t)/y(t)') ; xlabel('t en secondes'); ylabel('d(t)')
x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t/3)
1 1

0.5 0.5
x

y
0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes
p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 30

20
p(t)

d(t)

0.5
10

0 0
-10 -5 0 5 10 -10 -5 0 5 10 25
t en secondes t en secondes
x(t)=(1+cos(2 w1 t))/2, w1 = 1.5 rad/s y(t) = exp(t/3)
1 1

0.5 0.5
x

y
0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes
p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 30

20
p(t)

d(t)
0.5
10

0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes

Les 4 figures de la fenêtre peuvent être vues comme les 4 éléments d'une matrice 2x2,
numérotés de 1 à 4 en suivant les lignes de gauche à droite.
26
VI.1. Images et surfaces
VI.1.1. Affichage d’images
En Matlab, toute matrice peut être considérée comme une image que l'on peut afficher
avec image ou imagesc. La commande imagesc ajuste les valeurs d’une matrice pour
que toute la palette des couleurs courante soit utilisée et affiche celle-ci en tant qu’image.
%SMP_TP4.m
Z1=rand(2) Z2=rand(4)
figure (1) figure (2)
subplot(2,1,1) subplot(1,2,1)
image(Z1) % Affiche une image image(Z) % Affiche une image
subplot(2,1,2) subplot(1,2,2)
imagesc(Z1) % Met à pleine échelle et affiche imagesc(Z) % Met à pleine échelle et affiche

0.5 0.5
0.5

1.5
1 1
2

2.5
0.5 1 1.5 2 2.5
1.5 1.5
0.5

2 2
1.5

2.5
0.5 1 1.5 2 2.5 2.5
0.5 1 1.5 2 2.5
2.5
0.5 1 1.5 2
27
2.5
VI.1.2. Affichage graphique en 3D (surfaces)
Pour afficher des surfaces dans une fenêtre graphique, voir les fonctions de help graph3d.
On ne présente ici que les fonctions les plus courantes.
On veut représenter sous forme d'une surface les valeurs prises par une fonction de deux
variables x et y. Par exemple, on veut évaluer la fonction z(x,y), en fonction des deux variables
x et y, cette fonction étant définie par z(x,y)= xy. On veut calculer des valeurs de z pour et .
En choisissant une grille de points espacés de 1, on devra évaluer z pour tous les couples de
coordonnées possibles .
La fonction meshgrid permet d'obtenir ces points :

%SMP_TP5.m 800 800

x=-1:20 600 600

y=-1:20 400 400

[X,Y]=meshgrid(x,y) 200 200

0 0
Z=X.^2+Y.^2 20 20
10 20 10 20
subplot(2,2,1) 0 0
10
0 0
10

mesh(X,Y,Z) -10 -10 -10 -10

subplot(2,2,2)
surf(X,Y,Z) 20

subplot(2,2,3)
15
contour(X,Y,Z)
10

0
0 5 10 15 20
28
Exemple : Evaluer cette fonction sur une grille de points espacés de 0.1 avec x  [0,20]
et x  [-1,20] .
%Master_TP6.m
x=-1:0.1:2;
y=-1:0.1:2; 1
%fréquence en Hz
f=1.0
%pulsation 0
w=2*pi*f
[X,Y] = meshgrid(x,y); -1
Z=cos(w*X/2).*sin(w*Y/2); 2
1 2
subplot(2,1,1) 0 1
0
mesh(X,Y,Z); -1 -1
subplot(2,1,2)
surf(X,Y,Z);
 Pour avoir une surface pleine, en utilise la fonction surf(X,Y,Z)
subplot(3,1,3)
contour(X,Y,Z); 1

-1
2
1 2
0 1
0
-1 -1
29
La fonction contour permet d'afficher les lignes de niveau : contour(X,Y,Z)

1
0
-1
2 2
1 1
0 0
-1 -1

1
0
-1
2 2
1 1
0 0
-1 -1
2

-1
-1 -0.5 0 0.5 1 1.5 2
30
VI.1.3. Histogramme
%défini l’intervalle et les largeurs des canaux de l’histogramme
x=-2.9 : 0.2 : 2.9;
% génère des nombres aléatoires répartis selon une distribution normale
y=randn(50000,1);
% dessine l’histogramme MatLab1_fig3 VI.1.4. Grillage en perspective: mesh:
hist(y,x) Graphe3D.m
4000
x = linspace(-3, 3, 30); y = linspace(-3, 3, 30);
[X Y] = meshgrid(x,y);
3500 % peaks est une fonction à 2D définie dans matlab
3000
Z = peaks(X, Y); % grillage 3D; mesh(X, Y, Z)
% grillage 3D avec les contours sur le plan de base
2500 meshc(X, Y, Z)
2000

10
1500

5
1000

500 0

0 -5
-3 -2 -1 0 1 2 3

-10
4
2 4
0 2
0
-2 -2 31
-4 -4
VI.1.5. Surface avec illumination
clf
[X,Y,Z] = peaks(30); 10

% graphique avec illumination 5


surfl(X,Y,Z)
% meilleure interpolation 0

shading interp -5
%choix d’une palette de couleurs prédéfinie
colormap pink -10
-4
view(-37.5+90, 30) -2 4
2
% changement point de vue: view(azimut, elevation) 0
0
2 -2
4 -4
VI.1.6. Contour
La commande contour permet de tracer les lignes de niveau d’une fonction de deux
variables réelles. Cette fonction peut être définie par une expression matlab.
z  ( x  1) 2  10( x 2  y ) 2 3
3

[X,Y] = meshgrid(-2:.2:2, -2:.2:2); 2 2

Z = (X-1).^2 + 10*(X.^2-Y).^2; 1 1
[C,h] = contour(X,Y,Z,40);
clabel(C,h,'manual') 0 0

-1 -1

-2 -2

-3 -3
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
32
contour(X,Y,Z,10) contour(X,Y,Z,40)
VI.1.7.Interpolation
Une interpolation consiste à relier des points expérimentaux par une courbe formée de segment
de droites ou de courbes polynomiales. Ceci est réalisé par la fonction interp1. la commande
interp1(x,y,z) retourne un vecteur de mêmes dimensions que z dont les valeurs correspondent
aux images des éléments de z déterminés par interpolation sur x et y.
f=interp1(x,y,z,’type’)
La chaine ‘type’ spécifie un type d’interpolation parmi les suivants :
‘linear’ : interpolation linaire.
‘spline’ : interpolation par splines cubiques
‘cubic’ : interpolation cubique
SMP_TP7.m %interpolation par splines cubiques
%y=cos(x);On peux tester par la fonction cos(x) figure(2)
%y=tan(x);On peux tester par la fonction tan(x) f=interp1(x,y,z,'spline');
y=x.^2;% On peux tester par une fonction polynôme plot(x,y,'-',z,f);
xlabel('x')
%pas du vecteur z inférieur à celui de x. ylabel('x^2')
z=-pi:pi/10:pi grid;
%interpolation lineaire title('interpolation pas splines cubiques');
figure(1)
f=interp1(x,y,z); %interpolation par cubiques
%tracé des valeurs réelles et de la courbe d'interpolation figure(3)
plot(x,y,'o',z,f); f=interp1(x,y,z,'cubic');
xlabel('x') plot(x,y,'--',z,f);
ylabel('x^2') xlabel('x')
grid; ylabel('x^2')
title('interpolation lineaire'); grid;
title('interpolation pas cubiques'); 33
interpolation lineaire interpolation pas splines cubiques
10 10

9 9

8 8

7 7

6 6

x2
5
x2

4 4

3 3

2 2

1 1

0 0
-4 -3 -2 -1 0 1 2 3 4 -4 -3 -2 -1 0 1 2 3 4
x interpolation pas cubiques x
10

5
x2

0 34
-4 -3 -2 -1 0 1 2 3 4
x
VII. Systèmes linéaires
Tout système linéaire peut être représenté sous forme matricielle. La résolution d'un tel système
fait appel à la notion d'inverse d'une matrice.
Exemple : 4 x  5 y  8 z  12
Considérons le système d'équations suivant: 
  x  2 y  3z  8
2 x  y  z  2

Ce système peut être écrit sous une forme matricielle: AX = B, avec:
 4 5  8  12   x
A   1 2 3  B   8  X   y 
 2 1  1  2  z 
Résoudre ce système d'équations, il faut trouver X tel que AX = B.
MATLAB permet de résoudre ce problème en écrivant les instructions suivantes:
A = [4 5 -8;-1 2 3;2 1 -1]; B = [12 ;8 ;-2];
X = inv(A)*B
On obtient comme résultat:
X=
-3.2444
3.6444
-0.8444
Remarque :
On peut aussi utiliser la commande MATLAB X = A\B pour retrouver les mêmes
valeurs propres de X.
35
Exercice :
Résoudre les systèmes d'équations ci-dessous en utilisant la commande X=inv(A)*B Et X=A\B
4 x  5 y  8 z  w  2t  12
 x  2 y  3 z  3w  5t  8
4 x  5 y  8 z  w  12 
4 x  5 y  12 
  x  5 y  2 z  w  8 2 x  y  z  6w  t  2
 x  2 y  8 2 x  y  z  2 w  0  x  2 y  z  w  t  3
 
3 x  y  2 z  w  2t  1
Un aperçu de quelques fonctions MATLAB

[] Énumération d’éléments
: Descripteur d’éléments de vecteur/matrice
() Ensemble d’arguments
, Séparateur d’arguments
; Séparateur des lignes dans les matrices supression du résultat de l’évaluation
d’une instruction
’ Transposition de matrice
. Force l’opérateur à s’appliquer sur chaque élément du vecteur/matrice
% Délimitateur de commentaire
... Continuation de l’instruction sur la ligne suivante

36
Fonctions signification
plot Représentation graphique plane
loglog Représentation plane logarithmique
semilogx somilogy Représentation plane en semilog

polar Représentation en coordonnées polaires


mesh Représentation graphique en trois dimensions
contour Contour plot
title Titre de la figure
xlabel Titre de l’axe des abscisses
ylabel Titre de l’axe des ordonnées
gtext Positionne la souris sur du texte
ginput Donne les coordonnées d’un point
axis Changement d’axe
hold Maintient la figure à l’écran
shg Montre la figure à l’écran
clg Efface la figure
subplot Subdivise la fenêtre de graphe
text Ecrit du texte sur la figure
37
grid Cadrille la figure
Exercices d’application
Ex2: créations de boucles
Ex1: créations de boucles
t = 0:pi/50:10*pi;
t=0:0.01:3.5; c='rgbmck:';
plot3(sin(t),cos(t),t,'linewidth',2)
close all;hold on;
grid on
for i = 1 : length(c)
axis square
plot(t,i*sin(i*t),c(i));
xlabel('sin(t)');
end;
ylabel('cos(t)');
grid;
zlabel('t')
8

6
40
4
30
i*sin(i*t),c(i)

0 20

t
-2 10

-4
0
1
-6 0.5 1
0
-8 0
0 0.5 1 1.5 2 2.5 3 3.5 -0.5
t cos(t) -1 -1
sin(t)
38
2
Ex3: Fonction de deux harmoniques
1.5
n=300;

sin(2*pi*f1*t)+sin(2*pi*f2*t)
f1=1000; 1
f2=1500;
0.5
fe=15000;
te=1/fe; 0
t=0:te:(n-1)*te;
y=sin(2*pi*f1*t)+sin(2*pi*f2*t); -0.5
close all;
-1
plage=1:91;
plot(t(plage),y(plage)); -1.5
xlabel('plage du temps (ms)');
ylabel('sin(2*pi*f1*t)+sin(2*pi*f2*t)'); -2
0 1 2 3 4 5 6
s=abs(fft(y))/(n/2); plage du temps (ms) -3
x 10
fmax=4000; 1.4
df=fe/(n-1);
f=0:df:fmax; 1.2
m=length(f);
Transformée de Fourier

s=s(1:m); 1
figure;
plot(f,s); 0.8

xlabel('fréquence (KHz)');
ylabel('Transformée de Fourier'); 0.6

grid;
0.4

0.2

0 39
0 500 1000 1500 2000 2500 3000 3500 4000
fréquence (KHz)
Ex 4: Comparaison entre fenêtre carrée et fenêtre de Hanning
clear
7
fo=470;
fe=4000;
te=1/fe; 6
N=512;
t=0:te:(N-1)*te; 5
x=7*sin(2*pi*fo*t);

Amplitude
y=2*abs(fft(x)/N); 4
df=fe/N;
f=0:df:800;
3
y=y(1:length(f));
x=x.*hanning(N)';
z=3.98*abs(fft(x)/N); 2
z=z(1:length(f));
close all; 1
plot(f,y,f,z,'r');
xlabel('Fréquence (KHz'); 0
ylabel('Amplitude'); 0 100 200 300 400 500 600 700 800
grid; Fréquence (KHz

40
Ex5: Sinus cardinal en 3D
t = 0:0.1:10; % axe des x Ex6: Signal modulé en amplitude
t0 = 0:2:6; fp=1000;
[tt, tt0] = meshgrid(t,t0); fm=100;
dt = tt - tt0 + eps; im=0.5;
% le eps est ajouté juste pour y = am(fp,fm,im);
%éviter la division par 0 S='signal modulé en amplitude '
z = sin(pi*dt) ./ (dt); S = [S 'fp=' num2str(fp) ' fm=' num2str(fm) ‘…
close all, im =' num2str(im)];
plot3(tt, t, abs(z)); plot(y);
axis('ij'); title(S);
grid;
xlabel('t'); signal modulé en amplitude fp=1000 fm=100 im =0.5
1.5
ylabel('to');
zlabel('sinc(t-t0)');
1

4
0.5
3
sinc(t-t0)

0
2

1 -0.5

0 -1
0
10
8
5 6 -1.5
4 0 50 100 150 200 250 300
2 41
to 10 0
t
mesh(x, y, z)

Ex7: Fonction meshgrid


[x,y] = meshgrid(-5:0.2:5); 4
r = sqrt(x.^2 + y.^2) + eps;
3
z = sin(pi*r) ./ r;
2
close all;

z
mesh(x, y, z); 1
figure; 0
meshc(x, y, z);
-1
figure; 5
5
meshz(x, y, z);
0
0
-5 -5
y x
meshc(x, y, z)
meshz(x, y, z)

4
4
3
3
2
2
z

1
z

1
0
0
-1
5 -1
5 5
0 5
0
0
-5 0
y -5 42
x -5 -5
y x
Ex7: Fonction meshgrid 4

[x,y] = meshgrid(-5 : 0.2 : 5); 3


r = sqrt(x.^2 + y.^2) + eps;
2
z = sin(pi*r) ./ r;

z
close all; 1
surf(x, y, z); 0
xlabel('x');
ylabel('y'); -1
5
zlabel('z'); 5
figure; 0
0
surf(x, y, z,'FaceColor','interp','FaceLighting','phong','EdgeColor','none');
-5 -5
daspect([5 5 5]) y x
axis tight
view(-50,30)
camlight left
xlabel('x');
ylabel('y');
zlabel('z');
3
2
z

1
0
5
5

0
0

-5 -5 x 43
y
Ex8 Exemple d’une fonction de hannin 0.5
fo =400Hz fe =1600 Hz N =12 L =12

clear; 0.45

%fe/fo=4 0.4

0.35
fo=400;fe=1600; te=1/fe;
0.3
% on trace d'abord W(f) en pointillé avec une bonne résolution 0.25
N=240;L=12;df=fe/N;t=0:te:(L-1)*te; 0.2

x=sin(2*pi*fo*t); 0.15

y1=abs(fft(x,N)/L); 0.1

f1=0:df:(N-1)*df; 0.05

close all; 0
0 200 400 600 800 1000 1200 1400 1600

for N = [22 28 36 L];df=fe/N;y=abs(fft(x,N)/L);f=0:df:(N-1)*df;


figure;
plot(f1,y1,':');hold on;plot(f,y,'o','MarkerFaceColor','r');
title(strcat('fo = ',num2str(fo), 'Hz fe = ',num2str(fe),' Hz N = ',num2str(N),' L = ',num2str(L)));
grid;end;
fo =400Hz fe =1600 Hz N =36 L =12
fo =400Hz fe =1600 Hz N =22 L =12 fo =400Hz fe =1600 Hz N =28 L =12
0.5 0.5
0.5

0.45 0.45

0.4 0.4
0.4

0.35 0.35

0.3 0.3
0.3

0.25 0.25

0.2 0.2
0.2

0.15 0.15

0.1 0.1
0.1

0.05 0.05

0 0 0
0 200 400 600 800 1000 1200 1400 1600 0 200 400 600 800 1000 1200 1400 1600 0 200 400 600 800 1000 1200 1400 1600

44
Ex9 fonctions avec subplot
t=-2:0.1:2; w1=0.5; x=(log(2*pi*w1*t))/2;
figure(2)
subplot(2,2,1) ;
plot(t,x,'r') ; grid; xlabel('t en secondes'); ylabel('x') ;
title(['x(t)=(1+cos(2\pi w1 t))/2, w1 = ',num2str(w1),' rad/s'])
%=================================
y=exp(-abs(t.^2/3)) ; x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t2/3)
subplot(2,2,2) ; 1 1
plot(t,y,'b') ; grid; xlabel('t en secondes') ;
ylabel('y') ; title('y(t) = exp(t^2/3)')
0 0.5
x

y
%=======================
p=x.*y;
subplot(2,2,3) ;
plot(t,p,'k') ; grid; 0
-1
title('p(t)=x(t)y(t)') -2 0 2 -2 0 2
xlabel('t en secondes') t en secondes t en secondes
ylabel('p(t)') p(t)=x(t)y(t) d(t)=x(t)/y(t)
%==================== 0.5 4
subplot(2,2,4)
d=x./y; plot(t,d,'g')
grid ; title('d(t)=x(t)/y(t)') 0 2

d(t)
p(t)

xlabel('t en secondes')
ylabel('d(t)') -0.5 0

-1 -2
-2 0 2 -2 0 2
t en secondes t en secondes
45
Ex10 fonctions avec subplot
% affichage des quatre figures dans une seule fenêtres
%définir la base du temps avec un pas de 0.1 par exemple
t=-5:0.1:5;
% définir la fréquence
w1=0.5;
% fonction x(t)=(1+cos(2*pi*w1*t))/2
x=(1+cos(2*pi*w1*t))/2; x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t/3)
% fonction y(t)=exp(-abs(t/3)) 1 1
y=exp(-abs(t/3)) ; %figure(2)
subplot(2,2,1)
plot(t,x) ; grid ; xlabel('t en secondes'); 0.5 0.5

y
ylabel('x')
title(['x(t)=(1+cos(2\pi w1 t))/2, …
w1 = ',num2str(w1),' rad/s'])
subplot(2,2,2) 0 0
-5 0 5 -5 0 5
plot(t,y) ; grid ;
t en secondes t en secondes
xlabel('t en secondes')
ylabel('y') p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 4
title('y(t) = exp(t/3)')
subplot(2,2,3) 3
% tracé de la fonction p(t)=x(t)*y(t)
p(t)

d(t)
plot(t,x.*y) 0.5 2
grid
title('p(t)=x(t)y(t)') ; xlabel('t en secondes') ; 1
ylabel('p(t)') ;
0 0
subplot(2,2,4) -5 0 5 -5 0 5
% tracé de la fonction d(t)=x(t)./y(t) t en secondes t en secondes
plot(t,x./y) ; grid ; title('d(t)=x(t)/y(t)')
xlabel('t en secondes') ; ylabel('d(t)') 46
Ex11 allure d'un polynôme tra c é p o ly n ô m e d e K (x )
6
x=0:0.001:4;
r=[1 2 3];
4
K=poly(r);
y=polyval(K,x); 2
z=polyval(K,x);
plot(x,y)

K(x)
0
xlabel('x')
ylabel('K(x)') -2
title('tracé polynôme de K(x)')
grid -4
figure
mesh(x,y,z) -6
0 0 .5 1 1 .5 2 2 .5 3 3 .5 4
x

47
Problème à résoudre:

48
49
50
figure(3)
clc; clear all; plot(r1, 45*Er1/5e11,'r')
r0=0.53e-10; hold on;
e1=1.6e-19; plot(r2, 45*Er2/5e11,'b')
K=9e9; hold on;
r1=0:0.0001*r0:r0; plot(r1, Vr1,'r')
r2=r0:0.0001*r0:3*r0; hold on;
Er1=(e1*K/r0^3).*r1; plot(r2, Vr2,'b')
Er2=e1*K./r2.^2; xlabel(' Rayon')
Vr1=(e1*K*0.5)*(3-r1.^2/r0^2)./r0; ylabel(' Er(r) et Vr(r)')
Vr2=e1*K./r2;
figure (1)
plot(r1, Er1,'r')
hold on;
plot(r2, Er2,'b')
xlabel(' Rayon')
ylabel(' Champ électrique Er(r)')
figure (2)
plot(r1, Vr1,'r')
hold on;
plot(r2, Vr2,'b')
xlabel(' Rayon')
ylabel(' Potentiel électrique Vr(r)')
51
2.5

4000 2
250
1.5
2000 200
1
150 y(t)
0
0.5
100
-2000
0 y'(t)
50
-4000 -0.5
10 0
5 10 10 -1
0 5 5 10
0 5 -1.5
-5 0
-5 0
-10 -10 -5 -5 -2
-10 -10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

52
clc;clear all;
plot(t(1:length(t)-1), dy_dt,'r')
x=-10:0.001:10;
gtext('y(t)') % legende de la courbe
y=-10:0.001:10;
y(t)
z1=x.^2.*y+3*x.*y.^2;
gtext('y''(t)') % legende de la courbe
z2=(x.^2.+y.^2).*exp(-0.5.*cos(x+y));
y'(t)
figure(1)
figure (4)
stem3(x,y,z1)
% Polynôme représentant la fonction
figure(2)
polynômiale y(t)
stem3(x,y,z2)
p=[1/4 0 -1 1 0]
%===============================
% Evaluation des valeurs de y(t)
figure (3)
t=-1:0.01:1;
t=-1:0.01:1;
% Evaluation du polynôme p sur
y=(1/4)*t.^4-t.^2+t; % fonction à dériver
l'ensemble p sur l'ensemble t
plot(t,y,'b‘)
y=polyval(p,t);
dt=diff(t); % incréments dt de la variable % calcul de la dérivée
t p_derivee=polyder(p);
dy=diff(y); % incréments dy de la % Evaluation de la dérivée sur
fonction y(t) l'ensemble de t
dy_dt=dy./dt; % dérivée de la fonction dy=polyval(p_derivee,t);
y(t) % tracé de la fonction y(t)
hold on; plot(t,y,'b');
% la fonction dérivée y'(t) possede un % tracé de la fonction dy(t)
élément de moins que y(t) hold on; plot(t,dy,'r'); 53

Vous aimerez peut-être aussi