46 1 2MB
UNIVERSITÉ CHOUAIB DOUKKALI
École Nationale des Sciences Appliquées EL JADIDA - ENSAJ
Introduction à MATLAB Années Préparatoires au Cycle Ingénieur S2
Préparé et présenté par : Pr : Mhamed SAYYOURI
Année universitaire 2016-2017
UNIVERSITÉ CHOUAIB DOUKKALI
Ecole Nationale des Sciences Appliquées d’El Jadida-ENSAJ
Cours : Introduction à MATLAB Filière : Années Préparatoires au Cycle Ingénieur S2 Pr: Mhamed SAYYOURI Année universitaire 2016-2017 1
PLAN Introduction
P L A N
Interface de Matlab Calculs élémentaires
Evaluation: Contrôle
: 25%
Examen TP
: 25%
Examen Ecrit : 50%
Commandes de base Variables et fonctions. Matrices et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab 2
1
Introduction Introduction Interface de Matlab
Matlab (MATrix LABoratory) est l’une des principales plateformes de développement. Matlab est un système interactif de calcul numérique et de visualisation graphique.
Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Il possède un langage de programmation simple et efficace, constitué de : de nombreux outils du calcul matriciel, des principaux algorithmes de l’analyse numérique (schémas d’intégration, différentiation...), des outils pour le traitement du signal, des outils de visualisation en 2D et 3D, l’outil Simulink, pour modéliser et simuler des systèmes en utilisant des schémas-blocs, des outils pour concevoir des interfaces utilisateur graphiques (GUI pour « Graphical User Interface ») personnalisées, la prise en charge d’échange de données et de signaux avec plusieurs type de matériels (oscilloscope, carte d’acquisition, carte de contrôle, etc.), l’intégration d’applications externes écrites en C, C++, Fortran, Java, Excel, etc. la conversion d'applications MATLAB en C et C++ .
3
M.SAYYOURI
Interface de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
La fenêtre de commande (ou ligne de commande): c’est l’outil de base de Matlab. Elle permet entre autre de faire n’importe quelle opération, de définir et affecter les variables d’environnement, d’utiliser les toolboxes via leurs fonctions, …
4
M.SAYYOURI
2
Interface de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D
La fenêtre d’historique de commande :
Programmation sous
permet de répéter les commandes précédentes en
Matlab
double-cliquant sur la commande concernée dans
Applications de Matlab
cette fenêtre. On peut obtenir le même résultat en ligne de commande par l’appui répétitif sur la touche « flèche haut » du pavé numérique.
5
M.SAYYOURI
Interface de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
La fenêtre d’espace de travail : Cette fenêtre permet de visualiser les différentes variables existantes, en affichant leur nom, leur contenu (ou leur dimension) ainsi que le min et le max des données qu’elle contient. On peut obtenir la liste des variables ainsi que leurs dimensions en ligne de commande en tapant la commande « whos ». 6
M.SAYYOURI
3
Interface de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux
La fenêtre de répertoire courant : Cette fenêtre permet de visualiser le répertoire de travail dans lequel vous êtes. C’est ici que sont chargés / enregistrés les scripts, les modèles ou les données.
graphiques 2D Programmation sous Matlab Applications de Matlab
7
M.SAYYOURI
Calculs élémentaires Introduction Interface de Matlab Calculs élémentaires
Matlab comme Calculatrice Le symbole [>>] indique à l’utilisateur où il faut rentrer la commande Commençons par les operateurs les plus courants : +, -, *, /, ^. Le dernier signifie «puissance». Les parenthèses s’utilisent de manière classique.
Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D
>> (3*2)/(5+3) ans = 0.7500
«
variable temporaire choisie par Matlab
»
4 décimales par omission
Programmation sous Matlab Applications de Matlab
>> r = (3*2)/(5+3) r= 0.7500
«
>> r r=
»
« 0.7500
» variable choisie par l’utilisateur
r conserve la dernière valeur calculée 8
M.SAYYOURI
4
Calculs élémentaires Introduction Interface de Matlab
>> x=3*r^2-r/3+2 x= 3.4375
«
»
Calculs élémentaires Commandes de base Variables et fonctions.
>> y=(x+2*i)^2 « » y= 7.8164 +13.7500i
Matrice et tableaux graphiques 2D
Un dernier point sur les variables :
Programmation sous
MATLAB fait la différence entre les minuscules et les majuscules.
Matlab
Les noms de variables peuvent avoir une longueur quelconque.
Applications de Matlab
Les noms de variables doivent commencer par une lettre. >> 1z=5 ??? 1z=5 Error: Unexpected MATLAB expression. 9
M.SAYYOURI
Commandes de base Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
Matlab comporte un très grand nombre d’opérateurs, de commandes et de fonctions. On peut taper à titre d’exemple les commandes suivantes : • • • • • •
help permet d’obtenir l’aide de l’aide et donne une liste thématique ; help nom de fonction donne la définition de la fonction désignée et des exemples d’utilisation ; lookfor sujet donne une liste des rubriques de l’aide en ligne en relation avec le sujet indiqué, clear permet d’effacer une partie ou toutes les variables définies jusqu’à Présent, who affiche les noms de toutes les variables en cours, whos affiche toutes les variables avec les détails.. >> who Your variables are: ans r x y >> whos Name Size Bytes ans 1x1 8 r 1x1 8 x 1x1 8 y 1x1 16
Class double double double double
Attributes
complex
>> clear x >> who Your variables are: ans r y >> clear all >> who >> 10
5
Variables prédéfinies Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux
Dans Matlab, on trouve des variables prédéfinies : • • • • • •
ans qui contient le dernier résultat de calcul i et j qui représentent racine 1. Pi qui représente eps qui est un nombre prédéfini. inf qui représente plus infini NaN : pas un nombre (not a number)
graphiques 2D Programmation sous Matlab Applications de Matlab
Attention : Ces variables ne sont pas protégées, donc si vous les affectez, elles ne gardent pas leur valeur. C’est souvent le problème pour i et j que l’on utilise souvent spontanément comme indices de boucles, de telle sorte qu’on ne peut plus ensuite définir de complexe ! !
>> pi ans = 3.1416 >> eps ans = 2.2204e-016 >> a=3*i+2 a= 2.0000 + 3.0000i >> b=3*j+2 b= 2.0000 + 3.0000i >> x=1/0 x= Inf >> y=x/x y= NaN 11
M.SAYYOURI
Fonctions prédéfinies Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous
Toutes les fonctions courantes et moins courantes existent dans Matlab. On retiendra que pour appliquer une fonction à une valeur, il faut mettre cette dernière entre parenthèses. >> a1=sin(pi/3), a2=cos(pi/3), a3=tan(pi/3) a1 = 0.8660 a2 = 0.5000 a3 = 1.7321
Matlab Applications de Matlab
Voici une liste non exhaustive : • • • • •
M.SAYYOURI
>> b1=sqrt(9) , b2=log(2), b3=log10(10), b4=exp(2) b1 = 3 b2 = 0.6931 b3 = 1 b4 = 7.3891
Fonctions trigonométriques et inverses : sin, cos, tan, asin, acos, atan Fonctions hyperboliques (on rajoute «h») : sinh, cosh, tanh, asinh, acosh, atanh racine, logarithmes et exponentielles : sqrt, log, log10, exp Fonctions erreur : erf, erfc La notion de fonction est plus générale dans Matlab, et certaines fonctions peuvent avoir plusieurs entrées (comme besselj par exemple) mais aussi plusieurs sorties.12
6
Exercices Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Exercice 1 Exécutez l'introduction de Matlab, chargez l'aide. Bref, faites un petit tour du propriétaire selon la liste ci-dessous... • intro lance une introduction a Matlab • help produit une liste de toutes les commandes par thèmes • demo démonstration donnant une représentation des fonctionnalités de bases de Matlab • Info information sur la boite a outils disponibles Exercice 2 1. Tapez la commande a=1:7; puis Tapez les commandes a, who et whos. 2. Utilisez pour modifier a : a=1:2; 3. Tapez la commande b=a+2;. ré-exécutez les commandes who et whos en utilisant 4. Tapez clear a et b. Exercice 3 1. Calculer sous Matlab
.
3
2 , ln(5) , log (5) , sin( ) , 1 , 1 2i (1 3i ) 4 2 4 2. Trouver le volume d’une sphère de rayon r=2m v r 3 3. Afficher les résultats précédents sous format long , long e short e et rationnelle. 2
1.25
11 , e , 9
2
10
3
13
M.SAYYOURI
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Dans Matlab, toutes les variables représentent des matrices. On peut considérer donc qu’il y a un seul type principal de données : le type matrice. Les éléments d’une matrice peuvent être : des nombres (réels ou complexes), ou des caractères.
Exemple: Un scalaire est une matrice 1 × 1,
1 un vecteur colonne de dimension n est une matrice n × 1: Exemple 2 , 3 un vecteur ligne de dimension n est une matrice 1 × n : Exemple 1 2 3
On utilise les crochets [ et ] pour définir le début et la fin de la matrice. Ainsi pour définir une variable M contenant la matrice
, on écrira: 14
M.SAYYOURI
7
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
>> % 3 écriture d'une matrice >> M=[1 2 3 456 7 8 9] M= 1 2 3 4 5 6 7 8 9 >> M=[1 2 3; 4 5 6 ; 7 8 9] M= 1 2 3 4 5 6 7 8 9 >> M=[1, 2 ,3 ; 4, 5, 6 ; 7, 8, 9] M= 1 2 3 4 5 6 7 8 9
>> % écriture d'un vecteur ligne >> A=[1 2 3 4] A= 1 2 3 4 >> A=[1 ,2 ,3 ,4] A= 1 2 3 4 >> % écriture d'un vecteur colonne >> B=[1 ; 2 ; 3 ; 4] B= 1 2 3 4 >> C=[1 2 3 4 ; 5 6 7 8] C= 1 2 3 4 5 6 7 8
>> % la taille de la matrice M >> size(M) ans = 3 3 >> % la taille du vecteur A >> size(A) ans = 1 4 % la taille du vecteur B >> size(B) ans = 4 1 % la taille de la matrice C >> size(C) ans = 2 4
15
M.SAYYOURI
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Matlab propose des commandes pour créer certaines matrices particulières très simplement. Pour plus d’information, lire le help de chaque fonction. Commande ones(n,m) zeros(n,m) eye(n,m) diag(v) rand(n,m) >> ones(3,2) ans = 1 1 1 1 1 1
Description Matrice de taille n × m ne contenant que des 1. Matrice de taille n × m ne contenant que des 0. Matrice de taille n × m contenant des 1 sur la première diagonale et des 0 ailleurs. Matrice diagonale où les éléments de la diagonale sont les composantes du vecteur v. Matrice de taille n × m contenant des nombres aléatoires >> zeros(2,3) ans = 0 0 0 0 0 0
>> eye(3,3) ans = 1 0 0 0 1 0 0 0 1
>> rand(3,3) ans = 0.7922 0.0357 0.6787 0.9595 0.8491 0.7577 0.6557 0.9340 0.7431
>> diag([1 2 3]) ans = 1 0 0 0 2 0 0 0 3
Matlab dispose également de moyens très simples pour créer des listes. La commande [a:p:b] crée une liste dont les éléments sont: a, a + p, a + 2*p, . . . , a + n*p, où n N, a+n*p b < a+(n+1)*p 16 M.SAYYOURI
8
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Le cas particulier [a : b] est un raccourci pour [a:1:b]. Si les conditions initiales sont erronées, Matlab renvoie un message d’erreur. >> x=[0:10:50] x= 0 10 20 30 40 >> format rational , x=[-1:0.5:1] x= -1 -1/2 0 1/2 1 >> format short , x=[-1:0.5:1] x= -1.0000 -0.5000 0 0.5000 1.0000 >> x=[1:5] x= 1 2 3 4 5
50
linspace : Un autre cas particulier de [a:p:b] est la fonction linspace(a,b,n). Celle-ci crée une liste de n éléments uniformément répartis entre a et b. Autrement dit, linspace(a,b,n) est la même chose que [a: (b a)/(n 1):b]. 17
M.SAYYOURI
Matrices et tableaux Introduction Interface de Matlab
>> linspace(-1,1,9) ans = -1.0000 -0.7500 -0.5000 -0.2500
0 0.2500 0.5000 0.7500 1.0000
Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux
Une dernière méthode pour créer des tableaux est la concaténation. Si A et B sont deux tableaux, alors [A B], ou [A,B] est le tableau obtenu en collant B à la droite de A, et [A ;B] est le tableau obtenu en collant B au-dessous de A. Comme d’habitude, il faut faire attention aux tailles de A et de B.
graphiques 2D Programmation sous Matlab Applications de Matlab
>> A=[1 2 3; 4 5 6] A= 1 2 3 4 5 6 >> B=eye(2,2) B= 1 0 0 1
>> C=[A B] C= 1 2 3 1 4 5 6 0 >> D=ones(1,5) D= 1 1 1 1
0 1 1
>> E=[C;D] E= 1 2 3 4 5 6 1 1 1
1 0 1
0 1 1
>> F=[E; zeros(2,5)] F= 1 2 3 1 0 4 5 6 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
18
M.SAYYOURI
9
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires
La fonction logspace(i, j, k) génère un vecteur de k éléments allant de 10 à 10
>> a=logspace(0,2,5) % 10^0 10^0.5 10^1 10^1.5 10^2 a= 1.0000 3.1623 10.0000 31.6228 100.0000
Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
On peut créer des matrices à l’aide de commande : et des fonction linspace et logspace >> A=[1:3 ; -2:0 ; -2 5 6] A= 1 2 3 -2 -1 0 -2 5 6 >> B=[linspace(1,2,4); linspace(2,8,4) ; logspace(1,4,4)] B= 1 4/3 5/3 2 2 4 6 8 10 100 1000 10000
19
M.SAYYOURI
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions.
Accès et modifications
On peut accéder et modifier les éléments d’une matrice. Dans ce qui suit, A désigne un tableau de taille quelconque, k et l sont des nombres entiers. Commande A(k , l) A(k)
Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
A(k , :) A(: , l)
Description Renvoie l’élément se trouvant à la kème ligne et la lème colonne. Renvoie le kème élément d’une matrice. En Matlab, les éléments d’une matrice de taille n × m sont indexés de 1 à n*m de haut en bas et de gauche à droite. Renvoie la kème ligne de la matrice. Renvoie la lème colonne de la matrice.
>> A=[1 2 3 4; 5 6 7 8] A= 1 2 3 4 5 6 7 8 >> A(2,4) ans = 8 >> A(2,:) ans = 5 6 7 8
>> A(:,4) ans = 4 8 >> A(8) ans = 8 >> A(10) ??? Index exceeds matrix dimensions.
>> A(:,:) ans = 1 2 5 6
3 7
4 8
20
10
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Accès et modifications Pour modifier les éléments d’une matrice, on utilise les mêmes commandes que ci-dessus. On ajoute à la commande le signe [=] et la nouvelle valeur. A= 1 2 3 4 5 6 7 8 >> A(2,3)=0 A= 1 2 3 4 5 6 0 8 >> A(:,1)=zeros(2,1) A= 0 2 3 4 0 6 0 8 >> A(1,:)=-A(1,:) A= 0 -2 -3 -4 0 6 0 8
>> A(3,3)=5 A= 0 -2 -3 0 6 0 0 0 5 >> A(4,4)=10 A= 0 -2 -3 0 6 0 0 0 5 0 0 0 >> A A =A(2:3;2:5) 6 0 0 5
-4 8 0 -4 8 0 10
21
M.SAYYOURI
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Opérations avec les matrices Matlab permet de faire certaines opérations avec des matrices. Dans ce qui suit, A et B sont des tableaux et c est un scalaire. Commande Description A+B Addition terme à terme ; A et B doivent avoir le même format. A+c = c+A Addition de c aux éléments de A. A-B Soustraction terme à terme ; A et B doivent avoir le même format. A-c Soustraction de c aux éléments de A. c-A Tableau dont les éléments sont c . A*B Produit matriciel standard ; nb. col. A doit être le même que nb de ligne de B A*c = c*A Multiplication de c aux éléments de A. A.*B Multiplication terme à terme ; A et B doivent avoir le même format. Aˆn (n ) A * A * . . . * A (n fois) ; A doit être carrée. Aˆn (n ) * *...* (|n| fois) ; A doit être inversible. A.ˆB Tableau dont les éléments sont A’ Transposition et conjugaison. 22
M.SAYYOURI
11
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base
Opérations avec les matrices A.’ B/A A\B
Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
A./B A.\B A/c
Transposition ; A.’ = A’ dans le cas où A est réelle. Le résultat est un tableau X tel que XA = B. Si A est inversible, alors X = B ; nb. col. A doit être le même que nb. col. B. Le résultat est un tableau X tel que AX = B. Si A est inversible, alors X = B ; nb. Ligne de A doit être le même que nb. Ligne de B. Division terme à terme des éléments de A par ceux de B ; A et B doivent avoir le même format. Division terme à terme des éléments de B par ceux de A ; A et B doivent avoir le même format. Division des éléments de A par c.
Exemple >> B=[-1 4 -5; 2 1 0; 1 1 -1]; >> A=[1 2 3; 4 0 0; 1 0 1]; >> B=[-1 4 -5; 2 1 0; 1 1 -1]; >> A+B ans = 0 6 -2 6 1 0 2 1 0
M.SAYYOURI
>> A*B ans = 6 9 -4 16 0 5 >> A^2 ans = 12 2 4 8 2 2
-8 -20 -6 6 12 4
>> A/B ans = 1.5000 6.5000 -10.5000 -1.0000 -1.0000 5.0000 0 1.0000 -1.0000 >> A.*B ans = -1 8 -15 8 0 0 1 0 -1
23
>> 2*A+B-3 ans = -2 5 -2 7 -2 -3 0 -2 -2 >> A' ans = 1 4 1 2 0 0 3 0 1
Matrices et tableaux Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
Fonctions sur les matrices Etant donnée une matrice A, il y a un certain nombre de choses que l’on peut calculer en rapport avec A. Nous présentons ici quelques fonctions définies dans Matlab prenant comme paramètre des tableaux. Commande det(A) trace(A) rank(A) diag(A) norm(v) mean(A) sum(A) prod(A) max(A) min(A) length(A)
Description Renvoie le déterminant de A ; celle-ci doit être carrée. Renvoie la trace de A. Renvoie le rang de A Renvoie la première diagonale de A. Renvoie la norme euclidienne de v ; v est un vecteur. Il est aussi possible de calculer d’autres normes ; Renvoie une liste contenant la moyenne des éléments de chaque colonne. Renvoie une liste contenant la somme des éléments de chaque colonne. Renvoie une liste contenant le produit des éléments de chaque colonne. Renvoie une liste contenant la valeur maximale chaque colonne. Renvoie une liste contenant la valeur minimale de chaque colonne. Renvoie le maximum entre le nombre de lignes et de colonnes
Finalement, on précise que toutes les fonctions mathématiques classiques (cos, sin, log, exp, etc) s’appliquent également aux tableaux. Le résultat est un tableau où l’on a appliqué terme 24 à terme la fonction en question.
12
Matrices et tableaux Introduction
Exemple
Interface de Matlab
>> A=[1 2 3; 4 0 0; 1 0 1]; >> det(A) ans = -8 >> trace(A) ans = 2 >> rank(A) ans = 3 >> diag(A) ans = 1 0 1 >> norm(A) ans = 4.5611
Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
>> mean(A) ans = 2.0000 0.6667 1.3333 >> sum(A) ans = 6 2 4 >> prod(A) ans = 4 0 0 >> max(A) ans = 4 2 3 >> min(A) ans = 1 0 0 >> length(A) ans = 3
>> size(A) ans = 3 3 >> sum(sum(A)) ans = 12 >> mean(mean(A)) ans = 1.3333 >> max(max(A)) ans = 4 >> exp(A) ans = 2.7183 7.3891 20.0855 54.5982 1.0000 1.0000 2.7183 1.0000 2.7183 25
M.SAYYOURI
Graphique 2D Introduction
Les possibilités graphiques de Matlab sont innombrables. Pour créer le graphe de la fonction sinus par
Interface de Matlab
exemple, nous commençons par définir deux vecteurs: x = -2*pi : pi/4 : 2*Pi ; y = sin(x);
Calculs élémentaires
ensuite nous construisons le graphe au moyen de la commande: plot(t , y)
Commandes de base
On peut superposer un quadrillage (ou le faire disparaitre) par les commandes: grid (ou grid off)
Variables et fonctions.
On peut aussi mettre un titre, mettre des étiquettes aux axes: title ('graphe de sinus'), xlabel('x'),
Matrice et tableaux
ylabel('sinus(x)')
graphiques 2D Programmation sous Matlab Applications de Matlab
>> x = -2*pi : 0.01 : 2*pi ; >> y = sin(x); >> plot(x, y) >> grid % afficher la grille >> % afficher le titre et les étiquettes >> title ('Graphe de Sinus') >> xlabel('x') >> ylabel('y=sinus(x)') 26
M.SAYYOURI
13
Graphique 2D Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions.
Afin d'afficher deux ou plusieurs graphes en même temps, une série des coordonnées (x, y) est introduise a la fonction plot: plot(x1, y1, x2, y2, …) . La legende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la commande legend(legend1, legend2, …). La commande legend('show') permet de montrer la légende, par contre la commande legend('hide') permet de la cacher.
Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
>> x = -2*pi : 0.01 : 2*pi ; y = sin(x); z=cos(x); >> plot(x, y, x, z) >> legend('sin(x)','cos(x)') >> legend('hide') >> legend('show') >> title ('Graphe de Sinus et cosnus') >> xlabel('x') >> ylabel('y') 27
M.SAYYOURI
Graphique 2D Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
La commande plot(x, y, LineSpec) affiche un graphe avec la spécification donnée par LineSpec qui est formée au plus de trois valeurs: style de ligne, type de marquer, et la couleur. Par exemple plot(x, y, '-+b') affiche un graphe bleu de la forme -+-+-+… Noter bien que la spécification 'type de marqueur' est utilisée pour les points choisies (vecteurs x et y), par contre la spécification 'style de ligne' couvre toute la courbe. Symbole -: -. Symbole y m c r g b w k
Style de ligne Ligne solide (par défaut) La ligne non continue La ligne pointillée La ligne tiret-point Couleur Jaune Magenta Cyan Rouge Vert Bleu Blanc Noir
Symbole o + * . x s d ^ V > < p h
Type de Marqueur Cercle Signe plus Astérisque Point Croix Carré Diamant Triangle vers le haut Triangle vers le bas Triangle pointant à droite Triangle pointant à gauche Pentagramme Hexagramme 28
M.SAYYOURI
14
Graphique 2D Introduction Interface de Matlab Calculs élémentaires
Exemple >> x = -2*pi : 0.1 : 2*pi ; >> y = sin(x);
Commandes de base
>> z=cos(x);
Variables et fonctions.
>> legend('sin(x)','cos(x)')
Matrice et tableaux
>> plot(x, y, '-ob', x, z, '-.dr')
graphiques 2D
>> legend('sin(x)','cos(x)')
Programmation sous
>> title('Graphe de Sinus et cosnus')
Matlab
>> xlabel('x')
Applications de Matlab
>> ylabel('y')
29
M.SAYYOURI
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
Un script Matlab est composé d'une suite d'instructions ou de commandes, toutes séparées par une virgule (,), un point-virgule (;) ou un retour a la ligne ( ). Matlab facilite l’édition d’un nouveau script en utilisant le bouton (New Script) qui fait appel a l’éditeur de Matlab. L’éditeur de Matlab crée par défaut un nouveau script sous le nom ‘untitled.m’. Le programmeur peut spécifié ultérieurement un nom de son choix en utilisant le bouton (Save). Généralement, le script est sauvegardé dans un fichier avec l’extension ‘.m’ (ex : script1.m) sous le dossier courant. On peut aussi charger un fichier déjà édite en utilisant le bouton (Open). L’exécution du script se fait a travers l’invite de commande en spécifiant juste le nom du script. L’exécution peut être effectuée directement depuis l’éditeur en cliquant sur le bouton (Run). Néanmoins, les sorties des scripts (affichage des résultats) se fait toujours sur la fenêtre des commandes. % mon premier script a = 1; b = 2; c = a + b; disp('la valeur de c est :'); disp(c); fprintf('la somme de %d et %d égale à %d \n', a, b, c); str = sprintf('%d + %d = %d \n', a, b, c); disp(str);
30
15
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
31
M.SAYYOURI
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Affichage L’affichage des variables se fait simplement par la spécification de leurs noms sans point virgule a la fin de la ligne. La commande disp(X) affiche une variable X (chaine de caractères, entier, …) sur la fenêtre des commandes. La commande disp n’accepte qu’un seul type de donnée a la fois. La commande fprintf() accepte tous genre de variable en utilisant leurs formats de types : %d pour les entiers, %f pour les réels, %s pour les chaines de caractères, %c pour le caractères, … . On peut ajouter un retour a la ligne via ‘\n’ et une tabulation via ‘\t’. La commande sprintf() sauvegarde tous genre de variables de la même manière que fprintf, mais sans affichage sur la fenêtre des commandes. sprintf() retourne une chaine de caractères qui peut être affichée ultérieurement en utilisant la commande disp().
Introduction des données à partir du clavier : La commande input(msg) fait introduire une valeur à partir du clavier en affichant d’abord un message msg. 32
M.SAYYOURI
16
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
clear all clc; % lecture de deux valeurs a = input ('Entrer la valeur de a : '); b = input ('Entrer la valeur de b : '); % somme c = a + b; % affichage fprintf('%f + %f = %f \n', a, b, c); % introduction d'un vecteur vec = input('entrer un vecteur de 5 éléments : '); % introduction d'une matrice mat = input('entrer une matrice de 3x3 éléments : '); vec mat Entrer la valeur de a : -2.5 Entrer la valeur de b : 3.18 -2.500000 + 3.180000 = 0.680000 entrer un vecteur de 5 éléments : zeros(1,5) entrer une matrice de 3x3 éléments : randi(3,3) vec = 0 0 0 0 0 mat = 3 3 1 3 2 2 1 1 3
33
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous
Les instructions d’alternative (IF et SWITCH): Comme dans la majorité des langages de programmation, Matlab permet d’utiliser l’instruction if selon la syntaxe suivante : if condition Commandes elseif condition Commandes … else Commandes end ; Les segments de elseif est else sont optionnels, par contre la parution de if et end est obligatoire
Matlab Applications de Matlab
Exercice 1. Écrire un script Matlab eq2degre.m qui permet de résoudre une équation de second degré à une seule variable , 2. Écrire un script Matlab qui permet de tester la parité d’un nombre entier naturel donné par l’utilisateur
34
M.SAYYOURI
17
Programmation sous Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
%équation de second degré a=input('entrer a: '); b=input(' entrer b: '); c=input('entrer c : '); delta=b^2-4*a*c; if delta > 0 disp('l'‘équation admet deux solutions différentes'); x1=(-b+sqrt(delta))/2 x2=(-b-sqrt(delta))/2 elseif delta==0 disp('l'‘équation admet une seule solution'); x2=-b/2 else disp('l'‘équation n''admet pas de solutions'); end
entrer a: 1 entrer b: -3 entrer c : 2 l‘équation admet deux solutions différentes x1 = 2 x2 = 1
35
Programmation sous Matlab On a aussi la possibilité d'utiliser l’instruction switch-case comme pour le langage C : Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous
switch expression % variable (comme a) ou expression de variables (a+b, f(a), …) case cas1 % valeur 1 de l’expression commandes case cas2 % valeur 2 de l’expression commandes … otherwise % autre valeurs de l’expression commandes end ;
Matlab Applications de Matlab
M.SAYYOURI
Exemple Écrire un script Matlab qui demande un nombre compris entre 1 et 5 à l’utilisateur et le convertit en lettre .
% lecture d'un entier a = input('Entrer un entier entre 1 et 5:'); switch a case 1 disp('UN'); case 2 disp('DEUX'); case 3 disp('TROIS'); case 4 disp('QUATRE'); case 5 disp('CINQ'); otherwise disp('cet entier n''est pas entre 1 et 5'); end; Entrer un entier entre 1 et 5 : 3 TROIS Entrer un entier entre 1 et 5 : 8 cet entier n'est pas entre 1 et 5
36
18
Programmation sous Matlab Les boucles: Introduction
En Matlab, on utilise deux formes de boucle: Interface de Matlab
L’instruction for pour les boucles à nombre d’itération connu : Calculs élémentaires
for variable = valeur initiale : pas : valeur finale Commandes de base
commandes Variables et fonctions.
end ; Matrice et tableaux
et l’instruction while pour les boucles a condition de continuation. graphiques 2D
while condition de continuation Programmation sous
commandes Matlab
end ; Applications de Matlab
% affichage des nombres naturels %impairs et inférieurs à 10 % avec la boucle for for i = 1:2:10 disp(i); end;
% avec la boucle while i = 1; while i > fact(5) s = 120
graphiques 2D Programmation sous Matlab Applications de Matlab
function [s p]=somprod(n); s=0; p=1; for i=1:n s=s+i; p=p*i; End >>[s p]=somprod(5) s = 15 p = 120
function seconeq(a,b,c); %équation de second degré delta=b^2-4*a*c; if delta > 0 disp('l''équation admet deux solutions différentes'); x1=(-b+sqrt(delta))/2 x2=(-b-sqrt(delta))/2 elseif delta==0 disp('l''équation admet une seule solution'); x1=-b/2 Else >> seconeq(1,-3,2) l'équation admet deux solutions différentes x1 = 2 x2 = 1 function [s p]=somprod(n); s=0; p=1; i=1; while i> a=(1> b=(5==12/3) b= 0 >> c=(a | b) c= 1 >> d= (a & b) | c d= 1 >> f=(~a)&(~b) f= 0 x=(a~=b) x= 1
>> A=[1 2 3 4] A= 1 2 3 >> B=[4 2 5 4] B= 4 2 5 >> A==b ans = 0 1 0 >> A> A~=B ans = 1 0 1 >> ~(A> ~A0 = sin 2 > p=[2 -1 3 -5], q=[3 -5 3] p= 2 -1 3 q= 3 -5 3 >> a=polyval(p,-2) a= -31 >> b=polyval(q,1.5) b= 9/4 >> s=p+[0 q] s= 2 2 -2 >> r=2*p-3*[0 q] r=
M.SAYYOURI
4
-11
21
-5
>> t=conv(p,q) t= 6 -13 20 >> [u,v]=deconv(p,q) u= v=
-2
-19
2/3 0
2
34
-15
7/9 0
>> conv(q,u)+v ans = 2 -1 >> p p=
-33
-1
44/9
-22/3
3
-5
3
-5 44
22
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Racines et Interpolations • La commande roots(P) fait extraire les racines d’un polynôme P. • La commande poly(V) retourne un polynôme depuis ses racines stockées dans le vecteur V. • La commande Polyfit(X, Y, n) permet d’approximer un polynôme de dégrée n qui passent approximativement par les points (X, Y). Cette approximation P(X(i))=Y(i) est au sens des moindres carrées : p1=[1 -5 6] p1 = 1 -5 >> a=roots(p1) a= 3 2 >> poly(a) ans = 1 -5 >> poly([1 1 1]) ans = 1 -3 3 -1
6
6
>> x=[0 1 4]; y=[0 2 3]; >> p11=polyfit(x,y,2) p11 = -0.4167 2.4167 -0.0000 >> p12=polyfit(x,y,1) p12 = 0.6538 0.5769 >> polyval(p11,4) ans = 3 >> polyval(p12,4) ans = 3.1923 45
M.SAYYOURI
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
Dérivation et Intégration d’un polynôme • La commande polyder(P) retourne la dérivée d’un polynôme P. • La commande polyint(P) retourne l’intégral d’un polynôme P. Si on veut calculer l’intégral entre deux point x1 et x2, on utilise la commande polyval pour évaluer l’intégral sur ces deux points puis on applique la soustraction. >> p=[1 1 1 1]; >> der_p=polyder(p) der_p = 3 2 1 >> der_p=polyder(polyder(p)) der_p = 6 2 >> int_p=polyint(p) int_p = 1/4 1/3 1/2 1 0 >> int_p12=polyval(int_p,2)-polyval(int_p,1) int_p12 = 103/12
% p(x)=x^3+x^2+x+1 %p’(x)=3x^2+2x+1 %p’’(x)=6x+1 %intégral de p(x)=1/4x^4+1/3x^3+1/2x^2+x+0
46
23
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires
Résolution des Systèmes Linéaires • Un système linéaire est un ensemble de n équations a p variables de la forme :
a x 11
a x
1
12
2
...
a x
...
a x
1p
b
p
1
Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous
a x 21
a x
1
22
2
2p
p
b
2
... a
p 11
a x p1
x 1
1
a
p 12
a x p2
2
x
...
2
...
a
p 1p
a x pp
p
x
b
p
b
p
p
Matlab Applications de Matlab
M.SAYYOURI
Les aij sont appelés les coefficients du système ; les bk ont le second membre du système (ou la partie gauche). En calcul matriciel, un système linéaire s’écrit comme en deux formes : AX = B, ou • A matrice des coefficients. • X vecteur colonne des inconnues. • B vecteur colonne comme second membre.
47
?
Application de Matlab Résolution d’un système linéaire Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
Matlab fournie plusieurs techniques afin de résoudre un système linéaire. Néanmoins, il reste a l’utilisateur de vérifier la compatibilité du système linéaire (s’il existe solution). Par exemple, si le déterminant de A est non-nul alors le système accepte une solution. Par contre, si le déterminant est nul le système peut accepter un nombre infini de solution ou un ensemble vide des solutions. La commande X = A\B fait résoudre le système linéaire AX = B (noter l’antislash). La commande X = B/A fait résoudre le système linéaire XA = B (noter le slash). On peut calculer directement l’inverse de A en le multipliant par B. Il faut noter que la multiplication matricielle n’est pas commutative ! La commande X = inv(A)*B fait résoudre le système linéaire AX = B. La commande X = B*inv(A) fait résoudre le système linéaire XA = B. Exemple Résoudre le système suivants:
M.SAYYOURI
x 2y z 1 x y z 0 2x 3 y z 1
1 1 2
2 1 1 1 3 1
x y z
1 0 1
48
24
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
>> A=[1 2 1;1 -1 1;2 3 1],B=[1 ;0; 1] A= 1 2 1 1 -1 1 2 3 1 B= 1 0 1 >> X=A\B X= -1/3 1/3 2/3 >> X=inv(A)*B X= -1/3 1/3 2/3
Pour les commande A\B et B/A, si la matrice A n’est pas singulière, le résultat est (0/0) pour un nombre infini de solutions, et (k/0, k 0) pour l’ensemble vide ().Pour les commande inv(A)*B et B*inv(A), si la matrice A n’est pas singulière, le résultat est toujours (k/0, k 0). >> A1=[1 2;2 4],B1=[2 ;3] A1 = 1 2 2 4 B1 = 2 3 >> X1=A1\B1 X1 = 1/0 -1/0 >> X1=inv(A1)*B1 X1 = 1/0 1/0
>> A1=[1 2;2 4],B1=[2 ;4] A1 = 1 2 2 4 B1 = 2 4 >> X1=inv(A1)*B1 X1 = 1/0 1/0 >> X1=A1\B1 X1 = 0/0 0/0
M.SAYYOURI
49
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
M.SAYYOURI
Résolutions des équations et des inéquations, linéaires et non-linéaires Matlab utilise la commande solve afin de résoudre les équations et les inéquations, les systèmes linéaires et non linéaires. Tout d’abord, il est nécessaire de déclarer des variables symboliques des équations (ou inéquations, …) en utilisant la commande syms. Il faut noter que solve retourne des solutions sous forme symbolique ou formelle au lieu de numérique (racine de 2 a la forme numérique de 1.4142 et la forme formelle 2^(1/2)). >> syms a b x inéquation de 2 degré >> sqrt(sym(2)) >> syms x %équation de >> solve(a*x+b,x) ans = 2 degré ans = 2^(1/2) >> solve(x^2-3*x+2) >> a=sym(1)/sym(3) ans = -b/a a= 1 >> syms a b c x 1/3 2 >> solve(a*x^2+b*x+c,x) >> b=sym(2)/sym(5) >> syms x, ans = b= solve(x^2+x+1) 2/5 ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) >> c=a+b - 1/2 - (3^(1/2)*i)/2 -(b - (b^2 - 4*a*c)^(1/2))/(2*a) c= - 1/2 + (3^(1/2)*i)/2 11/15
50
25
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
La commande solve permet aussi de résoudre une inéquation ou un système linéaire ou non linéaire des inéquations. >> syms x y % système à trois inconnues >> S = solve(x+y-5, x-y-1) S= x: [1x1 sym] y: [1x1 sym] >> [S.x S.y] ans = [ 3, 2] >> syms x y z % système à trois inconnues >>S=solve(x+y+z-5, x-y-z-1,2*x+y-2*z+1) S= x: [1x1 sym] y: [1x1 sym] z: [1x1 sym] >> [S.x S.y S.y] ans = [ 3, -1, -1]
>> syms x % inéquation de 2 degré >>solve('x^2-9 =0') ans = Dom::Interval([3], Inf) Dom::Interval(-Inf, [-3])
51
M.SAYYOURI
?
Application de Matlab La boîte à outils de Calcul symbolique permet de calculer la dérivé , l’intégral et les limites d’une fonction. Introduction
Calcul de la dérivée d’une fonction Interface de Matlab Calculs élémentaires
diff(f) calcule la dérivée de f par rapport à x : Pour calculer la dérivée seconde : diff(f,2) ou bien diff(f,x,2)
Commandes de base
La fonction diff peut également agir sur une matrice. Dans ce cas la dérivation est effectuée sur chaque
Variables et fonctions.
élément de la matrice,
Matrice et tableaux
>> syms a b x graphiques 2D
>> f=a*cos(x)+b
Programmation sous
f=
Matlab
b + a*cos(x)
Applications de Matlab
>> diff(f) ans = -a*sin(x) >> diff(x^3+2*x^2+3*x+1,x) ans = 3*x^2 + 4*x + 3
M.SAYYOURI
>> A=[cos(3*x) sin(2*x); tan(x) 1] A= [ cos(3*x), sin(2*x)] [ tan(x), 1] >> diff(A) ans = [ -3*sin(3*x), 2*cos(2*x)] [ tan(x)^2 + 1, 0] >> diff(A,2) ans = [ -9*cos(3*x), -4*sin(2*x)] [ 2*tan(x)*(tan(x)^2 + 1), 0]
52
26
?
Application de Matlab Calcul de l’intégral d’une fonction Introduction
Si f est une expression symbolique, alors int(f)tente de trouver une autre expression symbolique F telle que Interface de Matlab
diff(F)=f , c’est-à-dire que int(f) donne l’intégrale indéfinie de f si elle existe.
Calculs élémentaires Commandes de base Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab Applications de Matlab
>> syms x >> int(x^3+x+1) ans = (x*(x^3 + 2*x + 4))/4 >> int(x^3+x+1,0,1) ans = 7/4 >> int(log(x)) ans = x*(log(x) – 1
>> syms a b w t >> f=a*cos(w*t+b) f= a*cos(b + t*w) >> int(f,t) ans = (a*sin(b + t*w))/w >> int(f,t,0,pi) ans = (a*(sin(b + pi*w) - sin(b)))/w
Exercice La vitesse d’une particule est exprimée par la fonction v(t)=tsin(t/2) 1. Trouver la position de la particule ( ) sachant que la position initiale est (0) = 0 M.SAYYOURI
2. Trouver l’accélération de la particule ( )
53
?
Application de Matlab Introduction Interface de Matlab Calculs élémentaires Commandes de base
Calcul des limites d’une fonction Les commandes syms a x, imit( f(x),x,a) permettent le calcul de la limite de f en a >> syms x >> limit(sin(x)/x,x,0) ans 1
>> syms n x >> limit((1+x/n)^n,n,inf) ans = exp(x)
>> syms x >> limit(log(x)/x,x,inf) ans = 0
>> syms x >> limit(x*log(x),x,0) ans = 0
Variables et fonctions. Matrice et tableaux graphiques 2D Programmation sous Matlab
Calcul des sommes On peut calculer des sommes symboliques quand elles existent en utilisant la commande symsum Exemple Ecrire la commande qui permet de calculer
Applications de Matlab
Ecrire la commande qui permet de calculer >> syms k n >> symsum(1/k^2,1,inf) ans = pi^2/6 M.SAYYOURI
k 0
1 k
2
2
6 x k 0
k
1 1 x
pour |x| < 1
>> syms k x >> symsum(x^k,k,0,inf) ans = piecewise([1
supérieur à
|
ou
= supérieur ou égal à
xor ou exclusif
== égal à ~= différent de Caractère spéciaux = assignation [ ] définition de matrices ou vecteurs; ensère les arguments de sortie des fonctions ( ) gère la priorité des opérations arithmétique ensère les arguments d'entrée des fonctions .
point décimal
.. directory parent ... indique une ligne suite ,
séparateur d'arguments ou d'instructions
;
fin de lignes (matrices) ou suppression de l'affichage
% commentaires :
manipulation de sous matrices ou génèration de vecteurs
! appel au système Variables prédéfinies ans
réponse à une expression sans assignation
eps
précision de la virgule flottante
realmax
plus grand nombre flottant
realmin
plus petit nombre flottant positif
pi
π
i, j
[√(-1)]
inf
∞
NaN
Not a Number
flops
nombre d'opérations flottantes par seconde
nargin
nombre d'arguments d'entrée d'une fonction
nargout
nombre d'arguments de sortie d'une fonction
computer
type du calculateur
Durées et Date date
date courante
clock
horloge
etime
durée d'exécution
tic, toc affiche le début et la fin d'exécution cputime temps CPU écoulé Matrices prédéfinies zeros
matice de 0
ones
matrice de 1
eye
matrice identité
diag
matrice diagonale
toeplitz
matrice de Toeplitz
magic
carré magique
compan
matrice compagnon
linspace
vecteurs linéairement espacés
logspace vecteurs logarithmiquement espacés meshgrid grille pour les graphiques 3D rand
nombres aléatoires à répartition uniforme
randn
nombres aléatoires à répartition normale
hilb
Hilbert
invhilb
inverse de Hilbert (exact)
vander
Vandermonde
pascal
Pascal
hadamard Hadamard hankel
Hankel
rosser
matrice test pour le calcul des valeurs propres
wilkinson matrice test pour le calcul des valeurs propres gallery
deux matrices test spéciales
Manipulation de Matrices diag
création ou extraction de la diagonale
rot90
rotation de 90°
fliplr
retournement gauche-droit
flipud
retournement haut-bas
reshape redimensionnement tril
partie triangulaire inférieure
triu
partie triangulaire supérieure
.'
transposition
:
conversion matrice → vecteur
Fonctions logiques exist
teste l'existence d'une variable ou d'une fonction
any
vrai si un élément est vrai
all
vrai si tous les éléments sont vrais
find
cherche l'indice des éléments non nuls
isnan
vrai si l'élément n'est pas un nombre
isinf
vrai pour tout élément infini
finite
vrai pour tout élément fini
isieee
vrai si la représentation est au format IEEE
isempty vrai pour une matrice vide issparse vrai pour une matrice creuse isstr
vrai pour une chaîne de caractères
strcmp comparaison de deux chaînes Instruction de contrôle if
test conditionnel
else
complète if
elseif complète if end
terminaison de if, for et while
for
instruction de répétition avec compteur
while instruction de répétition avec test break interrompt une boucle for ou while return retour error affiche un message et interrompt l'exécution Instructions spécifiques input
indicateur d'attente d'entrée
keyboard considère le clavier comme un fichier script menu
génère un menu de choix pour l'utilisateur
pause
attente
function définition de fonction eval
exécute un chaîne de caractère
feval
exécute une fonction définie dans une chaîne
global
définit les variables comme globales
nargchk valide le nombre d'arguments d'entrée Textes et chaînes string
à propos des chaînes dans MATLAB
abs
convertit une chaîne en valeur numérique
blanks
une chaîne d'espaces
eval
évalue une chaîne contenant du code MATLAB
num2str convertit un nombre en chaîne int2str
convertit un nombre entier en chaîne
str2num convertit une chaîne en nombre isstr
vrai si l'élément est une chaîne
strcmp
comparaison de chaînes
upper
conversion en majuscule
lower
conversion en minuscule
hex2num convertit une chaîne héxadécimale en flottant hex2dec convertit une chaîne héxadécimale en entier dec2hex convertit un entier en une chaîne héxadécimale Mise au point (debug) dbstop met un point d'arrêt dbclear supprime un point d'arrêt dbcont reprend l'exécution dbdown change le contexte local dbstack affiche qui appelle qui dbstatus liste des points d'arrêt dbstep
exécute une ou plusieurs lignes
dbtype affiche un M_files avec lignes numérotées dbup
inverse de dbdown
dbquit
sortie du mode debug
Traitement du son saxis
modification de l'échelle d'amplitude
sound convertit un vecteur en son auread lit un fichier audio au format SUN auwrite écritit un fichier audio au format SUN lin2mu conversion loi linéaire vers loi µ mu2lin conversion loi µ vers loi linéaire Fonctions mathématiques élémentaires abs
valeur absolu ou module
angle argument d'un complexe sqrt
racine carrée
real
partie réelle
imag partie imaginaire conj
complexe conjugué
gcd
PGCD
lcm
PPCM
round arrondi à l'entier le plus proche fix
troncature
floor arrondi vers -∞ ceil
arrondi vers +∞
sign
signe de
rem
reste de la division
exp
exponentiel
log
log népérien
log10 log décimal Fonctions trigonométriques sin, asin, sinh, asinh cos, acos, cosh, acosh tan, atan, tanh, atanh cot, acot, coth, acoth sec, asec, sech, asech 1./cos(z), acos(1./z), 1./cosh(z), acosh(1./z) csc, acsc, csch, acsch 1./sin(z), asin(1./z), 1./sinh(z), asinh(1./z) Fonctions prédéfinies bessel fonction de Bessel
beta
fonction beta
gamma fonction gamma rat
approximation par un rationnel
rats
format de sortie pour rat
erf
fonction erreur erf
erfinv inverse de erf ellipke intégrale elliptique complète ellipj
fonction elliptique de Jacobi
expint fonction intégrale exponentielle pour n=1 log2
logarithme base 2 ou décomposition mantisse, exposant
pow2
calcule 2 puissance y
Décompositions et factorisations de Matrices inv
inversion
lu
décomposition LU
rref
réduction de lignes
chol
factorisation de Cholesky
qr
décomposition QR
nnls
moindres carrés non-négatif
lscov
moindres carrés avec covariance connue
null
noyau
orth
orthogonalisation
eig
valeurs et vecteurs propres
hess
forme de Hessenberg
schur
décomposition de Schur
cdf2rdf forme complexe diagonale vers forme réelle diagonale par blocs rsf2csf forme réelle diagonale par blocs vers forme complexe diagonale balance mise à l'échelle pour le calcul des valeurs propres qz
valeurs propres généralisées
polyeig polynôme aux valeurs propres svd
décomposition en valeurs singulières
pinv
pseudo-inverse
Conditionnement cond
suivant norme L2 ( [(λmax)/( λmin)])
rcond
≅ 1 bon , ≅ 0. mauvais
condest suivant norme L1 norm
normes L1,L2,Lp et L∞
normest estimateur de la norme L2
rank
rang
Fonctions de Matrices expm exponentiation (fonction interne) expm1 M_file correspondant à expm expm2 exponentiation par série de taylor expm3 exponentiation via les valeurs et vecteurs propres logm
logarithme
sqrtm racine carrée funm évaluation (ex: funm(A,'sin') donne sin(A)) poly
polynôme caractéristique
det
déterminant
trace
trace
Polynômes poly
construit un polynôme à partir des racines
roots
calcul des racines
roots1
calcul des racines
polyval
évaluation en un point
polyvalm évaluation en une matrice de points conv
multiplication
deconv
division
residue
décomposition en éléments simples et residus
polyfit
polynôme d'approximation
polyder
différentiation
Analyse de données par colonne max
valeur max
min
valeur min
mean
valeur moyenne
median valeur médiane std
écart type
sort
tri en ordre croissant
sum
somme des éléments
prod
produit des éléments
cumsum vecteur des sommes partielles cumulées cumprod vecteur des produits partiels cumulés hist
histogramme
Traitement de signal corrcoef coefficients decorrélation
cov
matrice de covariance
filter
fitrage monodimensionnel
filter2
filtrage bidimensionnel
cplxpair
tri en paires complexes
unwrap
suppression des sauts de phase
nextpow2 puissance de 2 immédiatement supérieure fft
FFT monodimensionnel (fréquences de 0 à 1)
fft2
FFT bidimensionnel
ifft
FFT inverse
ifft2
FFT inverse
fftshift
FFT (fréquences de -1/2 à 1/2)
Différences finies et Interpolation diff
approximation de la dérivée
gradient approximation du gradient del2
Laplacien sur 5-points
subspace angle entre deux sous-espaces spline
interpolation spline cubique
interp1
interpolation monodimensionnel
interp2
interpolation bidimensionnel
interpft
interpolation 1D par FFT
griddata maillage de données Intégration numérique quad intégrale de Simpson quad8 intégrale de Newton-Cotes trapz méthode des trapèzes Equations non linéaires et Optimisation fmin minimisation d'une fonction d'une variable fmins minimisation d'une fonction de plusieurs variables fsolve résolution d'un système d'équations non-linéaires fzero zéro d'une fonction d'une variable Graphiques 2D plot
graphe linéaire
loglog
graphe en échelle log-log
semilogx graphe en échelle semi-log (abscisse) semilogy graphe en échelle semi-log (ordonnée) fill
graphe de polynômes 2D remplis
polar
graphe en coordonnées polaires
bar
histogramme bâtons
stairs
fonction en marches d'escalier
errorbar graphe avec barres d'erreur hist
histogramme
rose
histogramme en pseudo camembert
compass représentation (module,argument) polaire feather
représentation (module,argument) linéaire
fplot
graphe d'une fonction
Annotation de graphiques title
titre du graphique
xlabel légende abscisse ylabel légende ordonnée zlabel légende cote grid
dessin d'une grille
text
texte
gtext placement de texte avec la souris ginput entrée graphique par la souris Contrôle des fenêtres graphiques figure
ouvre une fenêtre graphique
gcf
retourne le numéro de la figure courante
clf
efface la figure courante
close
ferme la figure courante
hold
gère la surimpression
ishold
état de la surimpression
subplot sous fenêtres graphique axes
axes en position arbitraire
gca
retourne le numéro des axes courants
axis
contrôle l'apparence et l'échelle des axes
caxis
contrôle l'échelle des axes et de la pseudocouleur
whitebg dessine sur fond blanc cinvert video inverse Sauvegarde et copie graphique print
imprime ou sauve dans un fichier
printopt configuration de l'imprimante orient
orientation paysage ou portait
Apparence des graphiques view
spécifie l'angle de vue
viewmtx matrice de transformation hidden
gère les lignes cachées
shading
mode de remplissage
specular reflectance d'une surface diffuse
reflectance d'une surface
surfnorm calcule la surface normale colormap table de correspondances couleurs brighten surbrillance ou sous brillance pour colormap spinmap change colormap de manière cyclique rgbplot
dessine la colormap
hsv2rgb conversion hsv vers rgb rgb2hsv conversion rgb vers hsv Graphiques tridimensionnels mesh
surface maillée
meshc
combinaison mesh + dessin des équi-niveaux
meshz
surface maillée avec plan de référence
surf
surface 3D à facettes
surfc
combinaison surf + dessin des équi-niveaux
surfl
surface 3D à facettes avec éclairage
plot3
dessin de lignes et points en 3D
fill3
graphe de polynômes 3D remplis
contour dessin 2D des équi-niveaux contour3 dessin 3D des équi-niveaux contourc utilisé par contour clabel
étiquettes des équi-niveaux
pcolor
dessine en pseudocouleur
quiver
affichage du gradient sous forme de flèches
image
affiche une image
waterfall représentation chute d'eau slice
visualisation en volume
Objets 3D sphere
génération de sphères
cylinder génération de cylindres peaks
démonstration
Animations moviein initialise l'espace mémoire pour l'animation getframe enregistre une image pour l'animation
movie
joue l'animation
Opérations sur les objets graphiques uicontrol création d'un interface de contrôle utilisateur uimenu
création d'un interface menu utilisateur
set
définit les propriétés d'un objet
get
lit les propriétés d'un objet
reset
réinitialise les propriétés d'un objet
delete
supprime un objet
drawnow force les évènements graphiques en attente
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida
TP N : 1 MATLAB APCI S2 Exercice1 : Calculs 1. Donner le résultat des calculs suivants : 1
52 3 2− 7
;
2𝜋
𝑒 −2ln(3𝜋) ; |1 − √3| ; 3√2 + cos ( 3 ) ;
|1+2𝑖| 3
;
10 0
;
0 0
2. Afficher les résultats sous différents formats Exercice 2 : nombres complexes On note u et v les nombres complexes : u 11 7i et v 1 3i Calculer les modules de u et de v , les produits uv et uv , les angles de u et de v et les parties réelle et imaginaire de u 3 v 2 .
Exercice 3: Vecteurs et Matrices Soient les vecteurs colonnes et la matrice suivants 1 5 1 2 3 4 u1 2 , u2 2 , u3 3 , A 5 1 2 3 1 7 1 7 6 A. Structures Matlab 1. Entrer ces données sous Matlab. u 2. Calculer u1 3u2 3 3 3. Calculer le produit scalaire entre les vecteurs u1 et u2 4. Calculer la norme de u1 et u2 5. Déterminer l'angle formé par les vecteurs u1 et u2 . 6. Calculer le produit Au1 . B. Commandes Matlab Trouver les commandes Matlab permettant de : 1. Calculer u1 ; u2 et u3 1
2
2. Déterminer les dimensions de la matrice A, en extraire le nombre de colonnes ; 3. Calculer le déterminant et l’inverse de A. C. Résolution de systèmes linéaires 1. Proposer deux méthodes permettant de résoudre le problème Ax u1 , et déterminer les commandes Matlab associées.
Exercice 4 : Matrices On note A, B et C les matrices suivantes 3 2 1 5 3 1 , B 1 2 5 , C 10 5 A 6 1 3 1 10 0 3 1 0 2 1 1. Calculer les matrices CB , BT C et ABT . © Pr : M. SAYYOURI
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida 2. Calculer la matrice D I 2 BBT . 3. 4. 5. 6.
Calculer les déterminants des matrices C, D et E AAT . Calculer les inverses des matrices C, D et E AAT . Calculer les valeurs propres de la matrice E. Quel est le rayon spectral de E ? Déterminer les vecteurs propres de la matrice A.
Exercice 5: Vecteurs et courbes 1. Définir la variable x
4
et calculer : y1 sin( x) et y2 cos( x) , puis y3 tan( x) à partir
de y1 et y2 . 2. Définir le vecteur x et calculer y1 sin( x) et y2 cos( x) . Calculer alors 6 4 3 y3 tan( x) en utilisant seulement les vecteurs y1 et y2 précédents.
3. Définir le vecteur x 2 : 0.1: 2 . Combien y a-t-il de valeurs dans ce vecteur ?
Afficher en bleu la courbe du sinus sur x 2 2 . 4. Afficher sur ce même graphe la courbe du cosinus en rouge. Adapter l’épaisseur des courbes, visualiser les points. Insérer un titre et donner une légende aux axes. 5. Enregistrer l’image. Exercice 6 : Vecteurs 1. Créer un vecteur de 11 coordonnées contenant les nombres 5, 4,..., 4,5 2. Créer un vecteur de 1001 coordonnées contenant les nombres 500, 499, 498,..., 499,500. 3. Créer un vecteur u contenant 10 valeurs entre 0 et séparées par un incrément constant. 4. Créer un vecteur v tel que v2i cos u2i et v2i 1 sin u2i 1 5. Créer deux vecteurs de dimensions quelconques. Créer un vecteur en insérant le second vecteur entre les 2-ème et 3-ème éléments du premier vecteur et Afficher la longueur de chaque vecteur.
Exercice 7 : Manipulation de matrices 1. Définir la matrice : 1 4 6 A 1 3 0 0 1 8 2. Calculer la matrice B A1 . Vérifier en effectuant le produit AB. 3. Extraire dans le vecteur X la première ligne de A et dans Y la deuxième colonne de B. 4. Calculer le rang de la matrice C YX . 5. Définir une matrice R aléatoire à 3 lignes et 7 colonnes. Combien de nombres sont plus grands que 0.5 ? Que 0.8 ? Où sont-ils situés ? 6. Construire alors une matrice P obtenue à partir de la matrice R en remplaçant tous les nombres inférieurs à 0.4 par 0, et tous les nombres supérieurs ou égaux à 0.4 par 1. 7. Calculer alors le nombre d’éléments de la matrice P supérieurs ou égaux à 0.4.
Exercice 8 1. Soit A une matrice carrée. En une ligne, construire une matrice diagonale B ayant la même diagonale que A. 2. Construire une matrice B comportant quatre lignes et trois colonnes remplies par colonnes successives avec les éléments du vecteur 1:12 © Pr : M. SAYYOURI
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida
TP N : 2 MATLAB APCI S2 Exercice1 :
Soit un vecteur y contenant des valeurs comprises entre 6 et 6 avec un pas de 0.001. Soit deux fonctions h et i définie par : h( x) sin( ) et i( x) cos( ) 4x 4x Ecrire un script Matlab représentant h et i en fonction de y sur le même graphe.
Exercice 2: 1. A l’aide d’une boucle for-end, calculer 7! . 2. A l’aide d’une boucle for-end, calculer la somme des carrés des 20 premiers entiers. 3. On considère la suite un définie par :
u0 0 n , un 1 2un 3 A l’aide d’une boucle for-end, calculer u8 4. On considère la suite un définie par :
u0 0 u1 1 n , u u u n2 n 1 n A l’aide d’une boucle for-end, calculer u72 .
Exercice 3: 1. Ecrire un script MATLAB qui permet de calculer les éléments de la matrice C, la somme de deux matrices A et B de dimensions 1*3 chacune. 2. Ecrire un script qui permet de lire une matrice saisie par l’utilisateur et l’informe si elle est carrée. 3. Ecrire un programme MATLAB qui permet de retourner la transposée AT d’une matrice A (2*3) saisie par l’utilisateur. En calculant ses éléments.
Exercice 4 1. Ecrire un M-file pour la fonction f ( x)
x5 3
x2 1 2. Tester la fonction sur quelques valeurs, par exemple f (1) et f (0) . 3. Créer un tableau x d'abscisses de -5 à 5 par pas de 0.1 4. Représenter la fonction f aux points xi , avec la commande plot(x,y)
Exercice 5 : Soient la matrice et les vecteurs colonnes suivants : 5 / 8 1/ 4 1/ 8 1 5 A 1/ 4 0 1/ 4 , b 1 u1 2 1 4 1/ 8 1/ 4 5 / 8 On définit, pour n 1 , la suite de vecteurs un1 Aun b © Pr : M. SAYYOURI
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida 1. Construire une fonction suite.m calculant les premiers termes de la suite un . Cette fonction aura comme arguments d’entrée les données suivantes : la matrice A, le second membre b, le terme initial u1 , et le nombre de termes voulus nbit . 2. Représenter graphiquement l’évolution de chacune des composantes. Qu’observe-t-on ? 3. Soient 5 6 3 2 Ab 1 5 1 , u1b 1 1 2 0 0 Observe-t-on le même comportement si on remplace u1 par u1b ? Que se passe-t-il si on remplace A par Ab (quel que soit le terme initial) ?
Exercice 6 Ecrire un M-file pour la fonction g définie sur [2, 5] par 0 x 1 15( x 13/4) 1 x 1/ 2 1 e g ( x) 1 1/ 2 x 3 3 x 4 2 e 15( x 7/2) x4 0 2. Tester la fonction sur quelques valeurs, par exemple f (1) et f (3) . 3. Créer un tableau x d'abscisses de -2 à 5 par pas de 0.01 4. Représenter la fonction f aux points xi , avec la commande plot(x, f(x))
Exercice 7 : On rappelle deux approximations de la dérivée d'une fonction par différences finies f ( x h) f ( x ) f ( x h) f ( x h) , f ' ( x) f ' ( x) h 2h 1. Définir dans un M-file la variable h = 0.1 et un tableau d'abscisses x pour discrétiser finement l'intervalle [0, ]. 2. Calculer dans un tableau d la dérivée exacte de la fonction sin aux points x et dans un tableau d1 les valeurs approchées par la première formule ci-dessus. Calculer l'erreur maximale commise en faisant cette approximation sur l'intervalle [0, ]. . Diminuer h, que remarque-t-on ? 3. Mêmes questions avec la deuxième approximation. Les valeurs approchées seront calculées dans un vecteur d 2 4. Représenter sur le même graphique la dérivée et ses deux approximations plot(x,d,x,d1,x,d2) Que remarque-t-on, quelle est la meilleure approximation ?
Exercice 8 : Tracer le graphe des fonctions suivantes : f ( x) x 2 sin(nx) sur x f ( x) e sin(nx) sur sin(nx) f ( x) sin c( x) sur x © Pr : M. SAYYOURI
[-4 4 ] pour n=1,2,3,4,5 [-4 4 ] pour n=1,2,3,4,5 [-4 4 ] pour n=1,2,3,4,5
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida
TP N : 3 MATLAB APCI S2 Exercice1: Calcul polynomial 1) Déterminer les racines de : a. x2 4 x 4 0 b. x2 3x 8 0 c. x5 2 x4 2 x3 4 x2 3x 5 0 d. (1 i) x 2 (2 5i) x 3.5 0 2) Déterminer les coefficients de polynôme Q si les racines de Q sont : [2 2 3 -5 ] 3) Déterminer : x 2 2 x 3 x3 4 x 2 x x 5 ? 4) Soit f ( x) 2 x2 7 x 10 , calculer f 6
Exercice 2: Calcul polynomial
1. Écrire le polynôme : P x x3 8x 2 32 x 13 2. Calculer de P 2 et P . 3. Calculer les racines du polynôme P . 4. On pose : Q x 4 x 2 3 5.
Calculer P x Q x et P x Q x .
6.
Calculer P x / Q x .
7. Calculer la dérivée de P x et Q x 8. Calculer la primitive de P x et Q x 9. Calculer
5
0
P( x)dx et
2
2
Q( x)dx
10. Obtenir le graphe de P x sur l’intervalle [-5, 12] avec un pas de 0,01. x = -5 : 0.01 : 12 plot(x, polyval(p,x)
Exercice 3: Arithmétique 1) Calculer : a. Le reste de la division de 20 sur 33 en utilisant la commande rem b. La décomposition en facteurs premiers de 60 en utilisant la commande factor c. Le pgcd et le ppcm de (325, 243) et (5, 60) en utilisant les commandes lcm et gcd 2) Afficher les nombres premiers inférieur à 100 en utilisant la commande isprime 3) Est-ce que 751 est premier ? utiliser la commande primes Exercice 4 Résolution des systèmes linéaires Résoudre matriciellement les systèmes suivants. Si Matlab affiche un message d’erreur, dire pourquoi. 6 x y 5 z 10 6 x y 5 z 10 a. 2 x 2 y 3z 11 b. 2 x 2 y 3z 2 4 x 9 y 7 z 12 4 x 9 y 7 z 12
© Pr : M. SAYYOURI
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida
Exercice 5 : Résolution d’un circuit électrique Soit le circuit de la figure 1. On souhaite calculer les valeurs efficaces et phases des courants lorsque : Ug = 220 [V] ; fg = 50 [Hz] ; R1 = 10[ ] ; R2 = 3 [ ] ; C = 10 [μF] ; L = 100 [mH] :
Figure1 : Circuit électrique A. Description du circuit : Pour résoudre ce circuit, il faut bien entendu commencer par écrire les équations qui le décrivent. Considérant les courants I1, I2, I3 circulant dans les 3 branches du circuit, celui-ci est complètement décrit par les équations suivantes : 1 u g R1 I1 jwC I 2 1 I 2 ( R2 jwL1 ) 0 jwC 0 I1 I 2 I 3 Equations que l’on peut écrire sous forme matricielle : 1 0 R1 jwC I1 u g 1 0 jwC R2 jwL I 2 0 I 3 0 1 1 1 La solution s'obtient en multipliant à gauche les deux membres de l'équation par l'inverse de la matrice décrivant le circuit : ,
R1 I1 I2 0 I 3 1
1 jwC 1 jwC 1
0 R2 jwL 1
B. Calcul avec Matlab Ecrire un script Matlab (circuit.m) pour calculer les courants. © Pr : M. SAYYOURI
1
ug 0 0
Université Chouaib Doukkali Ecole Nationale Des Sciences Appliquées D’el Jadida
Exercice 6: Calcul symbolique 1. En utilisant la boîte à outils de Calcul symbolique, simplifier les expressions suivantes :
12 3 , cos( x) cos( y) sin( x)sin( y) , cos2 ( x ) sin 2 ( x ) cos 2 ( y ) s in2 ( y ) 4 4 4 4 12 3 2. Factoriser les expressions suivantes a
x3 1 ,
x( x 1)( x 2)( x 3) 1 , x 4 1
N.B : simplify, factor, collect, expand effectuent également les transformations et simplifications de ces expressions, simple appelant une à une toutes ces fonctions et retenant finalement le résultat le plus simple. 3. Calculer les limites suivantes 1 𝑛
lim (1 + )
𝑛→∞
;
𝑛
lim ln(
𝑥+1
𝑥→0
𝑥
)
lim
;
1
𝑛→0+ x
Exercice 7: Calcul de la dérivée et de l’intégral 1. Calculer les dérivées suivantes :
d 3x 2 4 x , dx 2
d arctan(5 x 4 8 x) et dx
d d ln( x3 3x 2 y 8 y 2 dy dx
2. Calculer les intégrales suivantes :
cos( x)
sin( x) 3x
2
2 dx ,
16
4
x 2 cos( x) dx ,
b
a
2
xye x y dx ,
d
b
c
a
2
xye x y dxdy
3. Résoudre l’équation suivante par rapport à Xa1 0.21 1 0.75 X k2 a1 dX a1 avec 3.23 0 k2 k 1 1 (1 ) X a1 k1
Exercice 8: On donne les points A (3, 6) ; B (5, 6) ; C (7 , 2) ; D (1 , 2)Dessiner dans un repère orthonormé le quadrilatère ABCD et ses diagonales [AC]et [BD].
Exercice 9: En utilisant la commande solve, résoudre les équations et les systèmes des équations suivants : 1. 2 x3 13x2 10 x 21 0 2. 2(ln x)3 13(ln x)2 10ln x 21 0 x y 2e e 15 3. x y e 2e 40
4. mx m 1 avec m © Pr : M. SAYYOURI