Vous êtes sur la page 1sur 64

Université Mohammed Seddik BENYAHIA - Jijel

Faculté des Sciences et de la Technologie


Département : Génie Civil et hydraulique
Spécialité : M1. Structure

LA PROGRAMMATION AVEC MATLAB

Préparé et Présenté par : Dr HAMAIDIA Achref


 Chapitre 1:Introduction à MATLAB
 Chapitre 2:Programmation avec MATLAB
Chapitre 1: Introduction à MATLAB
Sommaire

1 Introdution

2 L’interface graphique de Matlab

3 Les commandes de base

4 Les vecteurs et les matrices


 Le nom MATLAB

MATLAB

MATrix LABoratory

 MATLAB Un laboratoire pour manipuler des matrices


 Qu’est ce que MATLAB ?

 Logiciel conçu pour le calcul scientifique et la manipulation de vecteurs et de


matrices

 Matlab est un langage interprété (sans compilation)

 langage de programmation et un environnement de développement

 Matlab est développé par la société Mathworks, il est largement utilisé dans les
domaines de l’ingénierie et des mathématiques appliquées.
 La licence MATLAB

 https://fr.mathworks.com/products/matlab.html?s_tid=hp_ff_p_matlab
 Si vous n’avez pas accès à une licence Matlab sur votre machine !!

 Alternative 1: Scilab

 Scilab est un logiciel open-source sous licence GPL. Développé depuis


1990 par des chercheurs de l’INRA (institut national de recherche en
informatique de coopération scientifique Digiteo.
 Il est disponible sur les plateformes Windows, Mac OS X,Linux et BDS .
 Pour plus d’informations et pour télécharger le logiciel :
https://www.scilab.org/
 Alternative 2:Octave

 Octave est également un logiciel open-source sous licence GPL.


 Son développement a commencé au début des années 90 par John W. Eaton dans le
cadre du projet GNU
 Sa syntaxe est proche de celle de Matlab.
 Il est disponible sur les plateformes Windows, Mac OS X, Linux et BSD.
 Pour plus d’informations et télécharger le logiciel :
https://www.gnu.org/software/octave/index
 Echauffement et premier contact

 Pour démarrer MATLAB en mode graphique, cliquer sur l’icone au logo de MATLAB.
Menu

Zone de
Explorateur commandes Historique
de fichier

Variables
 Le menu: regroupe les commandes de base de Matlab :Enregistrer, afficher,
préférences ….ect
 Current folder : c’est l’explorateur de fichier permet de visualiser les fichiers
scripts et de les ouvrir pour édition
 Workspace: c’est la zone de variables permet de visualiser toutes les variables en
mémoire à l’instant présent (les noms et les contenus).
 Command history: c’est la zone qui permet de visualiser l’historique des
commandes précédemment exécutées.
 Command window: c’est la zone de commandes permet d’écrire les commandes
et de visualiser le résultat d’exécution.
 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’utilisateur.
2. Mode exécutif : MATLAB exécute ligne par ligne
16
 Les opérations mathématique

 Matlab comme calculette :

ans ici (pour answer) est une variable qui contient toujours le résultat de la dernière opération réalisée.
 Les opérations arithmétiques
Symbole’ Description Exemple

Les opérations de base en mathématiques (addition, 4+6


+, -, *, /, \
soustraction, multiplication et division (à droit et à gauche) 9*3

^ La puissance 2^4
sqrt La racine carrée sqrt(16)
Pi La constante pi=3,1416 2*pi
i ou j Nombre complexe
realmax Plus grand nombre flottant codable : 1.7977E+308

realmin Plus petit nombre flottant codable 2.2251E-308

cos, sin ,tan Les fonctions trigonométrique usuelles cos(3*pi/4)

Log(x), exp(x) Le logarithme népérien et l’exponentielle exp(3)

abs(x) La valeur absolue de x Abs (-1)

On peut combiner ces symboles en une seule commande. les règles usuelles entre les opérateurs sont alors
appliquées.
 Les nombres réels

 Comme dans tous les langages de programmation, les nombres réels s’écrivent
avec un point pour séparer la partie entière de la partie décimale.

 Les nombres réels peuvent être écrits sous différents formats :


3 3.848 0.8337E-4 14.82e8 0.00002344 -140.78
 Les nombres complexes

 Les nombres complexes peuvent être écrit sous forme cartésienne ou


polaire:
 Forme cartésienne :
0.7+i*0.398 -3.2+j*0.569 1.5+8.7i

 Forme polaire :
2.43*exp(j*0.398)
 Les formats d’affichage

 Pour choisir le format d’affichage pour les nombres, on utilise l’instruction format :

 format rat 621/24


 format short 24.8400
 format long 24.840000000000000
 Format bank 24.84
 format short e 2.4840e+01
 format long e 2.484000000000000e+01
 vpa(2/3,40) forcer le calcul et donner plus de décimaux
 Les principales constantes

 Parmi les constantes fréquemment utilisées, on peut noter les suivantes :

 pi 𝝅 = 𝟑, 𝟏𝟒𝟏𝟓 … . .

 exp(1) e=2,7183
i −1

j −1

 Inf ∞
 NaN Not a number
 eps  ≈ 2*10-16
 Les variables

 Toutes les variables sont des matrices. La logique de l’indexation est (ligne x colonne).

 Séparateurs :
de ligne : virgule ou espace blanc
de colonne : point-virgule ou return

x=3 variable scalaire (1x1)


y = 2.3345 variable scalaire (1x1)
vl = [7, 8, 35, 6] vecteur ligne (1x4)
vc = [2; 6; 35; 3; 89] vecteur colonne (5x1)
z =’une chaine de caractères ‘ vecteur ligne (1x24)
 Exemple:
x=3 variable scalaire (1x1)
y = 2.3345 variable scalaire (1x1)
vl = [7, 8, 35, 6] vecteur ligne (1x4)
vc = [2; 6; 35; 3; 89] vecteur colonne (5x1)
z =’une chaine de caractères ‘ vecteur ligne (1x24)

Il est toujours possible de connaitre les variables utilisées et


leur type à l’aide de la fonction whos

Lors qu'on ajoute un «;» à la fin d'une instruction, elle est exécutée mais le résultat n'est pas affiché
 Les types de variables

 Dans MATLAB, la déclaration de types est facultative.

 Les types sont déterminés lorsque les variables sont initialisées.

 Ainsi, par défaut, toute variable numérique est à virgule flottante de double précision
et les textes sont des chaines de caractères.

 Pour de grandes variables, il est donc conseillé de changer le type.

 MATLAB est sensible à la casse (a≠A)

 Pour insérer des commentaires, il suffit d’utiliser %


 Espace de travail (Workspace)

 Les variables sont stockées dans l’espace de travail (ou workspace) et peuvent être utilisées
dans les calculs subséquents.

Commandes de workspace
Who Affiche les noms des variables actives

Affiche les noms des variables actives avec plus


Whos d’informations
Permet de nettoyer l’espace de travail :toutes les
Clear variables sont détruites

Clear x y z Détruit les variables x,y et z

clc Efface l’écran

Exit, quit Fermer l’environnement MATLAB


27
 Les vecteurs
 Définir un vecteur ligne

 On définit un vecteur ligne en donnant la liste de ses éléments entre crochets ([]).

 Les éléments sont séparés au choix par des espaces ou par des virgules.

 On peut obtenir la longueur d’un vecteur donné grâce à la fonction length ()


 Définir un vecteur colonne

 On définit un vecteur colonne en donnant la liste de ses éléments séparés au choix par des
points virgule ( ;) ou par des retours chariots (touche Entrée).

 On peut transformer un vecteur colonne y en un vecteur ligne en tapant (y‘) ou la commande


transpose (y)
 Définir un vecteur par blocs

 Un vecteur peut être défini par blocs


 Définir un vecteur par incrément

 On peut créer un vecteur ligne de 0 à 9 par incrément de 2, en utilisant la commande


suivante :

 Par défaut, l’incrément est de 1, Ainsi, pour créer un vecteur ligne des valeurs de 0 à 9 par
incrément de 1, il suffit d’utiliser :
 Manipuler les éléments d’un vecteur

 Les éléments d’un vecteur peuvent être manipulés grâce à leur indice dans le tableau.

 Le kième élément du vecteur x est désignée par x(k)

 Le premier élément d’un vecteur a obligatoirement pour indice 1


 Manipuler les éléments d’un vecteur

 il est possible de manipuler plusieurs éléments d’un vecteur simultanément


Ainsi les éléments de k à l du vecteur x sont désignés par x (k : l)

 On peut également manipuler facilement les éléments d’un vecteur dont les indices sont en
progression arithmétique. Ainsi si l’on souhaite extraire les éléments k,k+p,k+2p,…..k+Np
=l on écrira x (k:p:l)
 Manipuler les éléments d’un vecteur

 Il est possible d’accéder à un élément d’un vecteur et même modifier celui-ci :


 La fonction linspace

 La création d’un vecteur dont les composants sont ordonnés par intervalle régulier et avec
un nombre d’éléments bien déterminer peut se réaliser avec la fonction :

Linspace (début, fin, nombre d’éléments)

 Le pas d’incrémentation est calculé automatiquement par MATLAB selon la formule :

𝐟𝐢𝐧 − 𝐝é𝐛𝐮𝐭
𝐋𝐞 𝐩𝐚𝐬 =
𝐧𝐨𝐦𝐛𝐫𝐞 𝐝’é𝐥é𝐦𝐞𝐧𝐭𝐬 − 1
 Les Opérations sur les vecteurs

 Les opérations usuelles d’addition, de soustraction et de multiplication par scalaire sur les
vecteurs sont définies dans MATLAB :
 Opérations et fonctions portant sur les vecteurs

 cross (x,y) : calcule le produit vectoriel des deux vecteurs x et y.

 sum (x.*y) : calcule le produit scalaire des deux vecteurs x et y.

 sum (x) : somme des éléments du vecteur x.

 prod (x) : produit des éléments du vecteur x

 max (x) : plus grand élément du vecteur x

 min (x) : plus petit élément du vecteur x

 mean (x) : moyenne des éléments du vecteur x

 sort (x,’ascend’) : ordonne les éléments du vecteur x par ordre croissant

 sort (x, ’descend’) : ordonne les éléments du vecteur x par ordre décroissant

 Fliplr (x) : renverse l’ordre des éléments de vecteur x


38
 Les vecteur spéciaux

Les commandes ones, zeros et rand permettent de définir des vecteurs dont les éléments ont
respectivement pour valeurs 0, 1 et des nombres générés de manière aléatoire.

 ones (1,n) :vecteur ligne de longueur n dont tous les éléments valent 1

 ones (m,1) :vecteur colonne de longueur m dont tous les éléments valent 1

 zeros (1,n) :vecteur ligne de longueur n dont tous les éléments valent 0

 zeros (m,1) :vecteur colonne de longueur m dont tous les éléments valent 0

 rand (1,n) :vecteur ligne de longueur n dont tous les éléments sont générés de manière
aléatoire entre 0 et 1

 rand (m,1) :vecteur colonne de longueur m dont tous les éléments sont générés de manière
aléatoire entre 0 et 1
 Les matrices
 Définir une matrice

 D’une façon générale, on définit une matrice en donnant la liste de ses éléments entre
crochets.

 Les éléments d’une ligne de la matrice peuvent être séparés au choix par un blanc ou bien
par une virgule (,).

 Les lignes quant à elles peuvent être séparées au choix par le point virgule(;) ou par un
retour chariot.
 Définir une matrice

 On peut créer des matrices, de la manière suivante:


 Les Opérations sur les matrices

 Les opérations usuelles d’addition, de soustraction et de multiplication par scalaire sur les
matrices sont définies dans MATLAB :
>> A=[1,2,3;4,5,6;7,8,9];
>> B=[9,8,7;6,5,4;3,2,1];
>> C=A+B %Addition
C= >> % déterminant d’une matrice carrée
10 10 10 d = det(A)
10 10 10 % extrait la diagonale de A
10 10 10 d = diag(A)
% inverse d’une matrice carrée
>> F=A*B %Multiplication
B = inv(A)
F=
%transpose
30 24 18
B = A' % ou bien : >> B = transpose(A)
84 69 54
138 114 90
>> D=A-B %Soustraction
D=
-8 -6 -4
-2 0 2
4 6 8
 Manipuler les éléments d’une matrice

 Un éléments d’une matrice est référencé par ses numéros de ligne et de colonne. A (i,j)
désigné le jème éléments de la ligne i de la matrice A.

 L’accès à un élément de la ligne i et la colonne j se fait par : A(i,j)

 L’accès à toute la ligne i se fait par : A(i,:)

 L’accès à toute la colonne j se fait par : A(:,j)


 Exemple
%La Création de la matrice %tous les éléments de la 3ème colonne
>> A=[1 2 3 4;5 6 7 8;9 10 11 12] >> A(:,3)
A= ans = 3
1 2 3 4 7
5 6 7 8 11
9 10 11 12 %tous les éléments de la 2ème et la 3ème ligne
%Accès à l'élément de la 2ème ligne >> A(2:3,:)
et de 4ème colonne ans =
>> A(2,4) 5 6 7 8
ans = 9 10 11 12
8 %La sous matrice supérieure droite de taille 2X2
%tous les éléments de la 2ème ligne >> A(1:2,3:4)
>> A(2,:) ans =
ans = 3 4
5 6 7 8 7 8
 ….Suite
%La sous matrice :ligne (1,3) et colonnes (2,4) %Ajouter une nouvelle colonne
>> A([1,3],[2,4]) >> A=[A,[0;0]]
ans = A=
2 4 1 2 4 0
10 12 9 10 12 0
%Supprimer la troisième colonne %tous les éléments de la 2ème et la 3ème ligne
>> A(:,3)=[] >> A=[A;[1,1,1,1]]
A= A=
1 2 4 1 2 4 0
5 6 8 9 10 12 0
9 10 12 1 1 1 1
%Supprimer la deuxième ligne
>> A(2:,)=[]
A=
1 2 4
9 10 12
 Les matrices spéciales

Certaines matrices se construisent très simplement grâce à des commandes dédiées. Citons
les plus utilisées:

 eye (n) : la matrice identité dans Rn,n

 ones (m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 1

 zeros (m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 0

 rand (m,n) : une matrice à m lignes et n colonnes dont tous les éléments sont générés de
manière aléatoire etre 0 et 1

 magic (n) : qui permet d’obtenir une matrice magique de dimension n


Sommaire
1 Introduction

2 Opérateurs relationnels et logiques

3 Communication avec l'usager

4 Les structures de contrôle


 Introduction

 Nous avons vue jusqu’à présent comment utiliser MATLAB pour effectuer des
commandes ou pour évaluer des expressions en les écrivant dans la ligne de
commande, par conséquent les commandes utilisées s’écrivent généralement sous
forme d’une seule instruction.

 Cependant, il existe des problèmes dont la description de leurs solutions nécessite


plusieurs instructions, ce qui réclame l’utilisation de plusieurs lignes.

 Une collection d’instructions bien structurées visant à résoudre un problème donné


s’appelle un programme. Dans cette partie, on va présenter les mécanismes
d’écriture et d’exécution des programme MATLAB.
 Comment ouvrir un fichier script ?

Un nouveau fichier
Ouvrir un avec une extension
fichier .m
script

Zone de
commandes
 Matlab possède des opérateurs qui permettent d’établir des expressions
renvoyant en résultat une valeur logique, c’est-à-dire 0 ou 1.
 Ces expressions logiques sont généralement utilisées dans les structures
de contrôle (if, while, switch ,for).

Opérateurs relationnels MATLAB


Opérateurs logiques MATLAB
Egale à ==
Et &
Différent à ~= Ou |
Strictement inférieur à < Non ~
inférieur ou égale à <= Et Condition &&
Strictement supérieur à > Ou Condition ||
Supérieur ou égale à >=
 Le résultat vaut 1 si le test est vrai et 0 s’il est faux.
 Exemple

>> x=[0 1 0 1];


 5>3
>> y=[0 0 1 1];
ans =
>> x&y
1
ans =
--------------------------------------------
1×4 logical array
 1==6
0 0 0 1
ans =
---------------------------------------------
0
>> x|y
--------------------------------------------
ans =
1×4 logical array
0 1 1 1
 Communication avec l'usager (les entrées/sorties)

 On peut entrer une valeur avec l’instruction input:


o x = input (‘Introduire la valeur de x = ')
Afficher sur l'écran " Introduire la valeur de x = " et attendre qu'un nombre soit tapé sur le clavier

 On peut afficher un message, une valeur à l'écran avec l’instruction disp:


disp ('Ceci est un test') Afficher "Ceci est un test" sur l'écran

o disp (‘ La valeur de y est : ')


Afficher "Ceci est un test" sur l'écran
 L’instructions (if…..else…..end)
 L’instruction if est la plus simple et la plus utilisées des structures de contrôle de flux.

 Cette structure permet d’exécuter un bloc d’instructions en fonction de la valeur logique


d’une expression

 if (Condition)
 if (Condition)
Instructions 1
Ou bien instructions 1
Instructions 2
else
:
Instructions 2
Instructions n
 end

 end

 L’ensemble des instructions ‘instructions’ est exécuté seulement si expression est vraie
 Plusieurs tests exclusifs peuvent être combinés.
 D’une façon générale (if……… elseif…… else….end)

 S’il est nécessaire de vérifier plusieurs conditions au lieu d’une seule, on peut utiliser
des clauses elseif pour chaque nouvelle condition, et à la fin on peut mettre un else dans
ou aucune condition n’a été évaluée à vrai .

 if (expression 1)
ensemble d’instructions 1
 elseif (expression 2)
ensemble d’instructions 2
………………….
 elseif (expression n)
ensemble d’instructions n
 else
ensemble d’instructions si aucune des conditions précédentes n’été exécuté
end
 Exemple
 y=x si x < 0
 Faire un programme sous MATLAB qui résout le problème suivant:
 y= x² si x > 0
 Solution  y = 10 si x = 0

%%%%%%Exemple 1%%%%%%%%%%%%%%%
x=input('introduire une valeur de x = ');
if x<0
y=x;
end
if x>0
y=x^2;
end
if x==0
y=10;
end
disp('La valeur de y est:'),y
 Exemple
 y=x si x < 0
 Faire un programme sous MATLAB qui résout le problème suivant:
 y= x² si x ≥ 0

 Solution
%%%%%%Exemple 2%%%%%%%%%%%%%%%
x=input('introduire une valeur de x = ');
if x<0
y=x;
else
y=x^2;
end
disp('La valeur de y est:'),y
 Faire un programme sous MATLAB qui résout le problème suivant: ax²+bx+x=0
 Solution
%%%%%%%%Programme pour résoudre une équation de 2éme degré
a=input('introduire la valeur de a =');
b=input('introduire la valeur de b=');
c=input('introduire la valeur de c =');
delta=b^2-4*a*c;
if delta<0
disp('pas de solutions')
elseif delta==0
disp('solution double')
x=-b^2/(2*a)
else
disp('deux solutions')
x1=(-b+sqrt(delta))/(2*a)
x2=(-b-sqrt(delta))/(2*a)
end
 Remarques

• Si une instruction est terminée par un point-virgule, alors la valeur de la variable


concernée ne sera pas affichée, par contre si elle se termine par une virgule ou un saut
à la ligne, alors les résultats seront affichés.

• Il possible de résoudre l’équation donnée précédemment dans l’exemple à l’aide de la


fonction solve prédéfinie en MATLAB , il suffit d’écrire : solve (‘ax²+bx+c=0’,’x’)
 L’instructions (switch…..case…..case ……otherwise….end)
 Dans cette structure, une expression numérique est comparée successivement à
différentes valeurs. Dès qu’il y a identité, le bloc d’instruction correspondant est
exécuté.
 switch expression
 case valeur 1
 L’expression testée ‘expression ‘doit Groupe d’instructions 1
être un scalaire ou une chaine de  case valeur 2
caractères.
Groupe d’instructions 2
 Une fois qu’un bloc instructions(i) est
:
exécuté, le flux d’exécution sort de la
 case valeur n
structure et reprend après le end.
Groupe d’instructions n
 Si aucune case ne vérifie l’égalité, le
bloc qui suit otherwise est exécuté.  otherwise
Groupe d’instructions si tous les cases ont échoué
 end
 Exemple
nne = input(' nombre de nœuds par élément = ');
switch nne
case 3
disp('Elément triangulaire à 3 nœuds')
case 4
disp('Elément quadrilatéral à 4 nœuds')
otherwise
disp('Element non disponible')
end
x = input(' entrez un nombre = ');
switch x
case 0
disp('x=0')
case 10
disp('x=10')
case 100
disp('x=100')
otherwise
disp('x n"est pas 0 ou 10 ou 100')
end
 Boucle itérative (for)
 Cette boucle exécute le bloc interne autant de fois que spécifié par une variable jouant
un rôle de compteur. Elle a la forme générale suivante :

 for variable = début : incrément :fin


Instructions
 end

 Le compteur variable est initialisé à la valeur debut et évalue jusqu’à la valeur


fin par pas de increment
 A chaque itération, le bloc instructions est exécuté.
 Généralement, variable est un scalaire et souvent un entier.
 Exemple

for i=1:2:8
j = i*2;
disp(j)
end

 Deux boucles FOR


for i=1:3
for j=1:4
x=0.5*i
y=30+j
end
end
 La boucle while
 La boucle while s’exécute tant qu’une expression logique est vraie. Elle est plus utile
lorsque la valeur finale de la boucle for n’est pas connue à priori. Sa structure est :

initialisations
 while expression logique
instructions
.......
 end

 La boucle while nécessite souvent des initialisations avant d’être lancée et peut se
dérouler indéfiniment si l’expression logique de contrôle reste toujours vraie.
 Exemple

n=1;
while n<4
n=n+1
x=n*0.05
end

 Autre exemple
compteur =0;
while compteur <4
disp('toujours dans la boucle');
compteur=compteur+1
end

Vous aimerez peut-être aussi