Académique Documents
Professionnel Documents
Culture Documents
2021
Une courte révision des commandes de bases de Matlab nécessaires pour l’essentiel de la
programmation dans les TPs MEF est présentée dans cette partie.
MATLAB est un interpréteur: les instructions sont interprétées et exécutées ligne par ligne.
Il existe deux modes de fonctionnement:
1. Mode Interactif: MATLAB exécute les instructions au fur et à mesure qu'elles sont
données par l'usager.
2. Mode Exécutif: MATLAB exécute ligne par ligne un "fichier M" (programme en langage
MATLAB).
Espace de Travail (Workspace)
MATLAB s'opère depuis une session de commandes en ligne (voir ci-dessus) pour Introduire des
SCALAIRES et des OPERATIONS simples à la suite du MATLAB Prompt >> (double flèche).
» 3*4+5
ans =
17
» cos (30*pi/180)
ans =
0.8660
» x=4
x =
4
» 2/sqrt(3+x)
ans =
0.7559
Les variables sont définies au fur et à mesure que l'on donne leurs noms et leurs valeurs numérique
sous leurs expressions mathématiques.
Les variables ainsi définies sont stockées dans l'espace de travail et peuvent être utilisées dans
les calculs subséquents.
! Si le nom de la variable et le signe = sont omis une variable de nom « ans » est automatiquement
créée.
On peut faire s’afficher la valeur d’une variable sans affichage de son nom ni de ans :
>> disp(x)
Commandes et Variables
Les commandes MATLAB sont de la forme
variable = expression
ou simplement
expression
Les expressions sont composées d'opérateurs et autres caractères spéciaux de fonctions et de noms
de variables. L'évaluation de l'expression produit une matrice, qui est alors écrite sur l'écran et
stockée pour une utilisation future.
Ainsi les instructions suivantes, déclarent les variables lors de leurs affectation :
Pour supprimer le résultat utiliser le point-virgule ‘ ; ’ à la fin de la ligne commande, exemples :
>> y=32;
>> z=5;
>> x=2*y-z;
>> w=3*y+4*z
w =
116
Une aide interactive est disponible pour tout es les commandes MATLAB.
Exécuter la commande help. Pour obtenir l'aide relative à une commande, exécuter :
>> help ‘Nom de commande’
Exemples :
>> help abs % fournit la description de la fonction ABS (valeur absolue)
>> help \ % fournit l'utilisation du caractère '\'
>> helpwin % ouvre une fenêtre d'aide générale
Le symbole ‘%’ dans une ligne a pour effet que le reste de la ligne ne sera pas exécuté (ceci permet
d'insérer des commentaires dans un fichier d'exécution).
Les commandes effectuées jusqu'à maintenant ont créé des variables qui sont stockées dans
l'espace de travail de MATLAB.
La commande
>> who
donne la liste des variables contenues dans cet espace de travail. Pour en savoir plus, il faut exécuter
la commande :
>> whos
Si l'on souhaite en savoir plus sur une variable A contenue dans l'espace de travail, la commande
>>size (A)
fournit les dimensions (nombre de lignes nombre de colonnes) de cette variable.
La commande
>>clear
détruit toutes les variables de l'espace de travail.
Plusieurs commandes peuvent être écrites sur une ligne. Elles seront alors séparées par ';'ou par ','
>> who, whos, e = sqrt(-1), f=4*atan(1)
?
Introduction de matrices
MATLAB ne travaille qu'avec une seule sorte d'objet : une matrice numérique rectangulaire dont les
éléments peuvent être complexes. Dans certains cas, une signification particulière peut être attribuée
à des matrices 1 x 1, qui sont des scalaires et à des matrices ne comportant qu'une seule ligne ou une
seule colonne, qui sont des vecteurs.
Les matrices peuvent être introduites dans MATLAB des quatre façons suivantes :
-liste explicite des éléments
- utilisation des commandes du programme
- lecture d'un fichier extérieur
- lecture d'un fichier de données (commandes SAVE, LOAD)
Le langage MATLAB ne contient aucune commande de dimension ou de déclaration.
Le stockage est alloué automatiquement tant qu'il reste de la mémoire disponible.
La liste explicite est la façon la plus simple d'introduire de s matrices de petite taille. Cette liste est
précédée du symbole '[' et suivie du symbole ']'. Elle est constituée ligne par ligne, la fin d'une ligne
étant indiquée par le symbole ';'. Les éléments d'une ligne doivent être séparés par un espace ou une
virgule.
La matrice A est alors stockée pour une utilisation future. Les éléments des matrices peuvent être
toute expression reconnue par MATLAB, par exemple :
>>B = [ -2.5; log(1); 4*atan(1) ]
B =
-2.5000
0
3.1416
>> C = [ sqrt(2) 10/2*5 (1+2+3)/2 exp(1) ]
C =
1.4142 25.0000 3.0000 2.7183
Les matrices peuvent également être définies sur plusieurs lignes d'entrée, le <Entrer>
remplaçant le symbole ';'. Ainsi A aurait pu également être introduite par :
>> A = [ 1 2 3 <Entrer>
4 5 6 < Entrer >
7 8 9 ] < Entrer >
A =
123
456
789
Quelques exemples de ces commandes sous forme de matrices construites par bloques :
>> [eye(3),diag(eye(3)),rand(3)]
ans =
1.0000 0 0 1.0000 0.9293 0.2511 0.3517
0 1.0000 0 1.0000 0.3500 0.6160 0.8308
0 0 1.0000 1.0000 0.1966 0.4733 0.5853
>> E=rand(3)
E =
0.5497 0.7572 0.5678
0.9172 0.7537 0.0759
0.2858 0.3804 0.0540
>> F = [E, zeros(3,2); zeros(2,3), ones(2)]
F =
0.5497 0.7572 0.5678 0 0
0.9172 0.7537 0.0759 0 0
0.2858 0.3804 0.0540 0 0
0 0 0 1.0000 1.0000
0 0 0 1.0000 1.0000
Éléments de matrices
Un élément individuel d’une matrice est déterminé par ses indices entre parenthèses. Ainsi la
Commande :
>> A(2,3)
fournit
ans =
6
Mais l'on peut également obtenir un bloc d'éléments d'une matrice. Par exemple,
>> A(1, :) % fournit la 1ere ligne de A
>> A(:, 2) %f ournit la 2eme colonne de A
>> A([1 2], :) ou A(1:2, :) fournit la matrice composée des 2 premières lignes de A
>> A(:, [2 3]) ou A(:, 2:3) fournit la matrice composée des colonnes 2 et 3 de A
>> A(:) spécial ! Fournit quoi ?
Le symbole ':' se révèle donc particulièrement intéressant. Il est aussi utilisé dans les expressions j:k
et j:i:k qui permettent de créer des vecteurs :
j:k est identique à [j, j+1, j+2, ..., k]; et est vide si j>k
j:i:k est identique à [j, j+i, j+2i, ..., k]; et est vide si i>0 et j>k ou si i<0 et j<k
Les valeurs de i,j,k ne doivent pas être nécessairement entières.
En d'autres mots, le système en « sait assez » pour reconnaître que la matrice D a été changée d'une
matrice 2 x 3 à une matrice 2 x 2. Un autre aspect de ce dimensionnement automatique apparaît si
l'on exécute la commande :
>> D(2,4) = 5
qui produit
D=
1000
0105
Cette fois, MATLAB rend D suffisamment grande pour que la commande ait un sens. Les « trous »
sont remplis par des éléments nuls.
Des matrices peuvent aussi être formées à partir de plus petites matrices considérées comme
éléments. Ainsi la suite de commandes :
>> B = [10;11;12]; C = [13 14 15 16]; D = [ A B; C]
produit
D=
1 2 3 10
4 5 6 11
7 8 9 12
13 14 15 16
Il faut évidemment que les dimensions des blocs consécutifs soient compatibles ! Par exemple, la
commande :
>> d = [ A C; B]
! donne lieu à un message d'erreur :
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the same
number of rows.
– linspace(a,b,n) crée une matrice ligne de n points régulièrement espacés sur l’intervalle [a, b]
(bornes comprises).
>> m = [-3:3]
>>x = [1:-0.25:-1]
Si l’on veut un vecteur colonne, on peut taper
>> m = m’
ou
>> x = x(:)
Opérations usuelles
Matlab permet d’effectuer les opérations usuelles en étendant leur définition aux matrices
L’addition et la soustraction ne méritent aucun commentaire particulier, sinon que les tailles des
matrices doivent être égales, exemple :
>> m + x
??? Error using ==> plus
Matrix dimensions must agree.
Matlab autorise que les dimensions ne soient pas égales lorsqu’une des variables est un scalaire,
exemple :
>> A + 1 %fournit la même valeur que A + ones(3).
>> A+1
ans =
2 3 4
5 6 7
8 9 10
Des expressions peuvent être construites en utilisant les opérateurs arithmétiques suivants :
+ addition / division à droite
- soustraction \ division à gauche
* multiplication ^ puissance
ainsi que les règles de priorité des opérations qui sont conformes à celles qui sont utilisées dans la
plupart des langages de programmation. Elles sont données par le tableau suivant :
Niveau de priorité Opération
( ) parenthèses
1 puissance
2 multiplication et division
3 addition et soustraction
A niveau de priorité égal, les opérations sont effectuées de la gauche vers la droite.
! Les parenthèses ( ) vous permettent d’organiser les priorités dans vos calculs. Leur utilisation est
recommandée pour éviter les ambiguïtés et risques d’erreurs.
Opérations matricielles
Les opérations matricielles exécutées par MATLAB sont illustrées dans le tableau suivant:
B = A' La matrice B est égale à la matrice A transposée
E = inv(A) La matrice E est égale à la matrice A inversée
C=A+B Addition
D=A-B Soustraction
Z = X*Y Multiplication
X = A\B Équivalent à inv(A)*B
X = B/A Équivalent à B*inv(A)
>> edit
Une fois que vous aurez écrit les instructions que vous voulez voir exécutées, vous allez sauvegarder
le fichier sous un nom de votre choix, avec le suffixe .m
- Fichiers ”functions”
L’utilisation de fichier script peut s’avérer ne pas être satisfaisant et il est préférable dans certains cas
de disposer d’un moyen d’évaluer une matrice de rigidité en utilisant la même procédure pour
différents cas en variant seulement les paramètres (variables) d’entrée.
Les fonctions ‘’ functions’’ dèfinies par des fichiers m commencent par une ligne d’instruction :
function [variables(s)- d’attribution ] = nom-de-la-fonction(arguments)
function est necessaire pour identifier le fichier comme une fonction, variables(s)- d’attribution est
une variable muette représentant le(s) paramètre(s) de sortie , nom-de-la-fonction est le nom donnè
à cette fonction, et arguments paramètre(s) d’entrée, ce sont des valeurs à faire passer à la fonction
à partir de l’interface principale de Matlab (>>…..) ou à partir d’une autre fonction.
==========Exemple
function [x] = f1(r)
% Premier exemple de fonction :
% r et x sont des variables quelconques.
x = r.*sin(r);
Taper cette fonction, vous devez utiliser l’editeur de MatLab (Edit) dans la barre ou File>New>M file
dans le menu File)
Prés avoir terminé l’èdition, utiliser l’option File>Save pour sauvegarder ce fichier- Par default, l’editeur va
essayer de le sauvegarder dans le repertoir de travail en utilisant le ‘’nom-de-fonction’’ comme le nom de
fichier
=======Exemple (suite)
Sauvegarder le fichier sous : f01.m
Et la commande : >>help f01.m
% va copier les lignes de commentaires immédiatement après la premiere ligne dans l’interface
MatLab soit :
>> help f01.m
Premier exemple de fonction :
r et x sont des variables quelconques.
=======Autre exemple :
function [s,p]=addmul(x,y)
% addmul calcul somme et produit de 2 matrices
s=x+y;
p=x*y;
>> clear
>> [a,b]=addmul(3,2)
>> addmul(3,2)
>> v=addmul(3,2)
200 -200
-200 200
>> K=zeros(3,3)
K =
0 0 0
0 0 0
0 0 0
>> K= AssembleRessorts (K,k1,1,2)
K =
100 -100 0
-100 100 0
0 0 0
>> K= AssembleRessorts (K,k2,2,3)
K =
100 -100 0
-100 300 -200
0 -200 200
>> k=K(2:3,2:3)
k =
300 -200
-200 200
>> f=[0 ; 15]
f =
0
15
>> u=k\f
u =
0.1500
0.2250
Etape finale de Post-Traitement
Dans cette étape, on déduit la réaction au nœud 1 et la force dans chaque ressort en utilisant Matlab
comme suit :
On établit le vecteur de déplacement global U puis on détermine le vecteur force global aux nœuds F
>> U=[0 ; u]
U =
0
0.1500
0.2250
>> F=K*U
F =
-15.0000
-0.0000
15.0000
La réaction au nœud 1 est une force de 15 kN (à gauche )