Outils pour utilisateurs

Outils du site


tp:methnum:matlab1

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Warning: Undefined array key "lang" in /home/signac/doku/lib/plugins/wrap/helper.php on line 94

Warning: Undefined array key "id" in /home/signac/doku/lib/plugins/wrap/helper.php on line 117

Warning: Undefined array key "width" in /home/signac/doku/lib/plugins/wrap/helper.php on line 119

Warning: Undefined array key "dir" in /home/signac/doku/lib/plugins/wrap/helper.php on line 128

Découverte et utilisation de Matlab

Exécuter Matlab

Le logiciel Matlab est installé dans toutes les salles de travaux pratiques. Une icône est généralement placée sur le bureau.

Environnement de travail

La fenêtre de l'IDE (Integrated Development Environment) ressemble à la copie d'écran ci-dessous.

On distingue sur cette image :

  • la fenêtre de commande (au centre) dans laquelle on entre des commandes à l'adresse de Matlab
  • le workspace (en haut à droite) qui détaille les objets présents dans l'environnement
  • l'historique (en bas à droite) qui contient la liste des commandes déjà entrées
  • le contenu du répertoire courant (en haut à gauche), avec les fichiers et les répertoires
  • la ligne “Répertoire courant” (ou Current Directory) en haut qui indique le répertoire dans lequel nous sommes situés
  • la barre d'icônes et de menus

La disposition de ces fenêtres peut être changée à votre convenance.

Entrez dans la fenêtre de commandes :

>> 1+1

Validez et constatez que Matlab a effectué le calcul :

>> 1+1 
ans = 2

La dernière réponse donnée par Matlab est stockée dans la variable ans. Essayez :

>> ans * 5

Créer un vecteur

Sous Matlab, les vecteurs sont par défaut des vecteurs ligne. On peut créer un tel vecteur en spécifiant chaque valeur, ou bien en donnant des bornes et un pas de variation.

Question 1) Testez et commentez les commandes suivantes (entrez ces commandes, voyez à quoi elles servent et expliquez en une phrase).

a=[1 3 4 6] 
a=[-3:7] 
a=[-3:2:7]

La création d'un vecteur colonne peut se faire par exemple en utilisant l'opérateur transpose. Testez à la suite de ce qui précède :

b=a' 
b=[1 3 4]'

Pour décrire un vecteur en donnant ses composantes, on peut séparer celles-ci par des espaces ou par des virgules. Ainsi, c=[1 3 5] ou c=[1,3,5] donnent des résultats identiques. Il existe un autre séparateur (;) qui permet de changer de ligne. Ainsi : d=[1;4;6] est identique à ''d=[1 4 6]' On peut aussi décrire un vecteur comme concaténation d'autres vecteurs. Par exemple : <code matlab> a=[ 1 2 3 ] b=[ 5 6 7 ] c=[a b] </code> Le vecteur c contiendra alors 1 2 3 5 6 7.

Question 2) Que contiendra le «vecteur» c après les commandes suivantes et pourquoi ?

a=[1 2] 
b=[3 a 3] 
c=[b ; a a ; b]

=====Accéder aux composantes d'un vecteur===== Les parenthèses permettent d'accéder aux composantes d'un vecteur. Entre les parenthèses, on peut mettre le numéro d'une composante ou bien une liste de composantes, cette liste étant elle même exprimée comme un vecteur.

Question 3) Testez et expliquez les commandes suivantes :

v=[1:3:19] 
v(4) 
v([2 4 6]) 
v([2:2:6]) 
v([2:6])

Les composantes extraites d'un vecteur forment un nouveau vecteur qui peut à son tour être utilisé pour accéder aux composantes d'un autre vecteur.

Question 4) Quel est le contenu du vecteur v après ces commandes et pourquoi ?

u=[1:3:25] 
v=[10 u(2:3:8) 16]

===== Matrices ===== Une matrice est une ligne de vecteurs colonnes, ou une colonne de vecteurs lignes.

Question 5) Que contiendront les matrices m1 et m2 et pourquoi ?

v=[1 2 3] 
w=[4 5 6] 
m1=[v ; w ; v ; v] 
m2=[w' v' [7;8;9]]

Pour accéder aux composantes d'une matrice, on utilise toujours l'opérateur (.) mais cette fois-ci avec deux paramètres, séparés par une virgule, et correspondant respectivement aux lignes et aux colonnes. De même que pour accéder aux composantes d'un vecteur on pouvait fournir en paramètre un vecteur contenant les numéros des composantes, on fournira pour accéder aux composantes d'une matrice deux vecteurs correspondant respectivement aux numéros des lignes et des colonnes. Les composantes retenues seront celles qui sont à la fois dans les lignes et les colonnes sélectionnées.

Question 6) Que contiendront les matrices m1 et m2 et pourquoi ?

a=[1:3:25] 
b=[2:3:26] 
c=[3:3:27] 
m=[a;b;c;c;b;a] 
m1=m([1 2 5 6],[2:2:6]) 
m2=m(3,m1([1 2],1)')

Il est parfois utile de pouvoir désigner une colonne entière ou une ligne entière d'une matrice. On utilise pour cela le symbole : qui, mis à la place d'une coordonnée, signifie : toutes les coordonnées possibles. Par exemple : * m(2,:) signifie ligne 2, toutes les colonnes. On obtient donc la ligne 2 de m en entier * m(:,2:4) signifie toutes les lignes, colonnes 2,3 et 4

Question 6b) Que contiendront les matrices m1, m2, m3 et pourquoi ?

m1=[1 2 3 4 5] 
m1=[m1 ; 1+m1 ; 2+m1 ; 3+m1] 
m2=m1(:,[1:2:5]) 
m3=m2(2,:)

===== Opérations ===== Les opérations d'addition et de soustraction sont les opérations classiques sur les vecteurs et les matrices. L'opérateur * désigne la multiplication matricielle (les tailles des matrices doivent être compatibles). L'opérateur ^ est l'opérateur puissance sur des matrices (la matrice doit alors être carrée). Commencez par initialiser quelques variables (la commande rand(n,m) renvoie une matrice aléatoire de n lignes et m colonnes). <code matlab> u=[1:6] w=[2:7]' m1=rand(7,6); m2=rand(5,7); </code>

Question 7) Des opérations suivantes, lesquelles ne sont pas valides et pourquoi ?

  1. u+w
  2. u+w'
  3. m1*u
  4. m1*u'
  5. m2*m1
  6. m1*m2

En plus ce ces opérations, il existe des opérations membre à membre qui se différencient des autres par le préfixe “.”. Ainsi : m.*n consiste à multiplier composante par composante les deux matrices qui doivent donc avoir les mêmes dimensions. Il existe de même l'opérateur .^ dont la deuxième opérande doit être un réel.

Question 8) Expliquez les résultats des opérations suivantes

m1=[1 2 3 ; 4 5 6] 
m2=[1 2 1 ; 2 3 3] 
m1.*m2 
m1.^2 
m2.^2*m1' 
m1./m2

===== Graphiques ===== On se propose ici d'utiliser Matlab pour résoudre graphiquement des équations. Considérons un cercle de rayon r. Si nous traçons un angle t à partir du centre du cercle, les deux rayons formant cet angle coupent le cercle en A et B. Nous appelons a l'aire délimitée par la corde et l'arc AB (en bleu sur le dessin). Cette aire est donnée par (l'angle doit être donné en radians) : $a=\frac{r^2}{2}(t-sin(t))$ (Pour trouver ce résultat, on soustrait de l'aire de la portion de cercle $\frac{t\,r^2}{2}$ l'aire du triangle délimité par la corde $A=r\sin(t/2)\times r\cos(t/2)=\frac{r^2sin(t)}{2})$ Le problème est le suivant : pour un cercle donné (c'est à dire un rayon donné), nous choisissons une aire (partie en bleu) a. Quelle valeur l'angle t permet d'obtenir l'aire choisie ? Autrement dit, connaissant a et r, nous voulons déterminer t. L'équation peut s'écrire : $$\frac{2a}{r^2}=(t-sin(t))$$

Question 1) Résolvez graphiquement l'équation en traçant les courbes correspondant aux membres gauche et droit de l'équation (pour a=4 et r=2) (il suffit d'entrer correctement les commandes qui suivent). Quelle valeur de ''t'' est solution de l'équation ?

t=0:pi/180:2*pi; 
y=t-sin(t); 
a=4; 
r=2; 
y2=2*a/(r^2)*ones(size(y)); 
plot(t,y,t,y2), grid

Question 2) Comment faire pour obtenir une valeur plus précise du résultat ? Cette question est moins évidente qu'il n'y paraît. Vous êtes invités à réfléchir à la façon dont Matlab trace des courbes, à la manière dont vous les parcourez, et en quoi ceci vous permet d'approcher une solution.

tp/methnum/matlab1.txt · Dernière modification: 2014/05/16 14:32 (modification externe)