Vous êtes sur la page 1sur 96

Rpublique Algrienne Dmocratique et Populaire

Ministre de lEnseignement Suprieur et de la Recherche Scientifique

Universit des Sciences et de la Technologie dOran


Mohamed Boudiaf

Facult dArchitecture et de Gnie Civil


Dpartement de Gnie Civil

Polycopi
Le calcul scientifique appliqu au Gnie Civil
sous MATLAB

Prpar et prsent par


BABA HAMED Fatima Zohra

Prface

Prface

Durant les trois dernires dcennies, des progrs remarquables ont eu lieu dans la vitesse de
traitement des ordinateurs, leur capacit de stockage, de manipulation et de prsentation de
grandes quantits de donnes et d'informations, ainsi que dans la capacit des ordinateurs
communiquer avec d'autres ordinateurs sur les rseaux.
La preuve de ces progrs peut tre trouve dans les bureaux actuels dingnierie o les
puissances des ordinateurs utiliss sont de plus en plus importantes.
Le nombre de codes de calcul utiliss par les ingnieurs est en constante augmentation. Cette
tendance est due en partie la srie croissante des tches pour lesquelles les ingnieurs
utilisent maintenant des ordinateurs.
tant donn que les langages informatiques sont gnralement conus pour rsoudre un
certain nombre de problmes de gnie, le choix du bon langage pour accomplir la tche est
d'une importance capitale.

Lutilisation de MATLAB est avantageuse pour

rsoudre un problme qui peut tre

idalement reprsent par des matrices, en se servant des oprations de l'algbre matricielle
linaire et de la reprsentation relativement simple des graphiques en deux et trois
dimensions.
Le calcul de la solution d'quations linaires, la prsentation, la manipulation et l'affichage
des donnes d'ingnierie sont peut-tre les meilleurs exemples de problmes pour lesquels
MATLAB est idalement adapt.

Ce polycopi sadresse aux tudiants de premire anne Master en Gnie Civil, option voie et
ouvrage dart. Il est rdig de manire attirer lattention du lecteur sur les applications
pratiques du sujet trait.
Non seulement le langage de programmation MATLAB est exceptionnellement simple
utiliser (tous les objets de donnes sont supposs tre des tableaux), le code de programme
MATLAB sera beaucoup plus court et plus simple dans la mise en uvre d'un programme
quivalent en langage C, Fortran ou Java. MATLAB est donc un langage idal pour la
cration de prototypes de solutions logicielles des problmes dingnierie.

Prface

Le polycopi est divis en cinq chapitres. Le chapitre 1 : Introduction lenvironnement


MATLAB prsente le mode de programmation sous MATLAB. Il inclut tous les concepts de
base que ltudiant doit savoir. Les sujets traits comprennent les variables, les variables
arithmtiques, les matrices, les matrices de calcul, les structures de contrle, les fonctions
intgres de la matrice, M-Files, et bien dautres notions.

Le chapitre 2 : Introduction la programmation avec MATLAB traite laspect de la


programmation avec MATLAB. Il prsente les diffrents mcanismes dcriture et
dexcution des programmes.

Le chapitre 3 : Applications des mthodes numriques avec MATLAB,

sintresse

lapplication des mthodes numriques sous MATLAB. Ce chapitre illustre la puissance de


travail du MATLAB tape par tape travers la formulation et la solution d'un grand nombre
d'applications d'ingnierie impliquant la solution des quations linaires et non linaires ainsi
que le calcul intgral.

Le chapitre 4 : Calcul des structures (barres et poutres) selon la mthode des Elments Finis
par MATLAB est une introduction au calcul des structures selon la mthode des Elments
Finis (MEF) par MATLAB. Les calculs des lments barres, des systmes treillis et des
lments poutres sont effectus.

Le 5me et dernier chapitre : Calcul des structures sous effets dynamique et sismique par
MATLAB explique le calcul des structures sous effets dynamiques et sismiques par
MATLAB. Le lecteur pourra ainsi raliser le calcul des systmes 1 degr de libert (libre et
amortis) ainsi que le calcul des systmes plusieurs degrs de libert.

Tables des matires

Tables des matires


Chapitre I : Introduction lenvironnement MATLAB.

1. Introduction Historique.

2. Lenvironnement MATLAB. 8
3. Les fichiers SCRIPT et FUNCTION

11

4. Les principales constantes, fonctions et commandes

13

5. Les vecteurs et les matrices 15


5.1 Les nombres en MATLAB

15

5.2 Les oprations mathmatiques..

16

5.3 Gnration automatique des matrices ..

22

6. Application 23
Chapitre II : Introduction la programmation avec MATLAB..

24

1. Introduction..

24

2. Oprateurs de comparaison et oprateurs logiques...

24

2.1 Les oprateurs de comparaison

24

2.2 Les oprateurs logiques.. 24


3. Les entres/sorties.

25

3.1 Entre au clavier 25


3.2 Sortie lcran.

25

4. Instructions de contrle 25
4.1 Linstruction while 25
4.2 Linstruction if.

26

4.3 Linstruction switch

30

4.4 Linstruction for

31

5. Les graphiques et la visualisation des donnes en MATLAB . 32


5. 1 La fonction plot .

32

5. 2 Modification de lapparence dune courbe . 34


5. 3 Annotation dune figure.

34

5. 4 Utiliser plot avec plusieurs arguments.

36

5. 5 Reprsentation graphique 3D..

36

5. 6 Dautres types de graphiques.

37

6 .Application 38

Tables des matires

Chapitre III : Applications des mthodes numriques avec MATLAB

39

1. Introduction.. 39
2. Rsolution de systmes linaires par le logiciel MATLAB .. 39
2. 1. Mthode du pivot de Gauss (mthode directe) 39
2. 2. Mthodes itratives

44

2.3. Mthode Jacobi..

44

2.4. Mthode Gauss-Seidel. 45


3. Les polynmes dans MATLAB

47

3 .1. Oprations sur les polynmes dans MATLAB .. 47


3.1.1. Multiplication des polynmes .

47

3. 1.2. Division des polynmes .. 48


3. 2.Manipulation de fonctions polynomiales dans MATLAB .. 48
4. Rsolution dquations non linaires (Mthode de Newton-Raphson)

50

4.1. La mthode de Newton-Raphson

50

4.2. La mthode de la scante (mthode multi-point)..

52

5. Intgration numrique des fonctions ..

53

5. 1 Mthode des trapzes..

53

5. 2 Mthode de Simpson..

55

6. Applications..

56

Chapitre IV : Calcul des structures (barres et poutres) selon la Mthode des Elments

57

Finis (MEF) par MATLAB

57

1. Introduction..

57

2. Elment Barre

57

3. Structures planes treillis 65


4. Elment Poutre.

69

5. Application .

79

Tables des matires

Chapitre V : Calcul des structures sous effets dynamique et sismique par MATLAB

80

1. Introduction 80
2. Systmes 1 degr de libert libres non amortis .

80

2.1 quations du mouvement

80

2.2 Calcul de la rponse libre 1 ddl . 81


3. Systmes 1 degr de libert libres amortis..

83

3.1 quations du mouvement..

83

3.2 Calcul de la rponse libre amortie 1 ddl .. 85


4. Calcul dune structure sous effets dynamiques (Systmes plusieurs degrs
de libert) .

86

5. Application

94

Rfrences bibliographiques

95

Chapitre I : Introduction lenvironnement MATLAB

Chapitre I : Introduction lenvironnement MATLAB


1. Introduction - Historique
MATLAB est une abrviation de Matrix LABoratory, crit lorigine, en Fortran, par C.
Moler.
MATLAB tait destin faciliter laccs au logiciel matriciel dvelopp dans les projets
LINPACK et EISPACK. La version actuelle, crite en C par the MathWorks Inc., existe en
version professionnelle et en version tudiant. Sa disponibilit est assure sur plusieurs
plateformes : Sun, Bull, HP, IBM, compatibles PC (DOS, Unix ou Windows), Macintoch,
iMac et plusieurs machines parallles.
MATLAB est un environnement puissant, complet et facile utiliser destin au calcul
scientifique. Il apporte aux ingnieurs, chercheurs et tout scientifique un systme interactif
intgrant calcul numrique et visualisation. C'est un environnement performant, ouvert et
programmable qui permet de remarquables gains de productivit et de crativit.
MATLAB est un environnement complet, ouvert et extensible pour le calcul et la
visualisation. Il dispose de plusieurs centaines (voire milliers, selon les versions et les
modules optionnels autour du noyau Matlab) de fonctions mathmatiques, scientifiques et
techniques. L'approche matricielle de MATLAB permet de traiter les donnes sans aucune
limitation de taille et de raliser des calculs numrique et symbolique de faon fiable et
rapide. Grce aux fonctions graphiques de MATLAB, il devient trs facile de modifier
interactivement les diffrents paramtres des graphiques pour les adapter selon nos souhaits.
L'approche ouverte de MATLAB permet de construire un outil sur mesure. On peut inspecter
le code source et les algorithmes des bibliothques de fonctions (Toolboxes), modifier des
fonctions existantes et ajouter dautres.
MATLAB possde son propre langage, intuitif et naturel qui permet des gains de temps de
CPU spectaculaires par rapport des langages comme le C, le TurboPascal et le Fortran. Avec
MATLAB, on peut faire des liaisons de faon dynamique, des programmes C ou Fortran,
changer des donnes avec d'autres applications (via la DDE Dynamic Data Exchange :
MATLAB serveur ou client) ou utiliser MATLAB comme moteur d'analyse et de
visualisation.
MATLAB comprend aussi un ensemble d'outils spcifiques des domaines, appels
Toolboxes (ou Botes Outils). Indispensables la plupart des utilisateurs, les Botes Outils
sont des collections de fonctions qui tendent l'environnement MATLAB pour rsoudre des
catgories spcifiques de problmes.
7

Chapitre I : Introduction lenvironnement MATLAB

MATLAB permet le travail interactif soit en mode commande, soit en mode programmation ;
tout en ayant toujours la possibilit de faire des visualisations graphiques. Considr comme
lun des meilleurs langages de programmation, MATLAB possde les particularits suivantes
par rapport ces langages :
la programmation facile,
la continuit parmi les valeurs entires, relles et complexes,
la gamme tendue des nombres et leur prcision,
la bibliothque mathmatique trs comprhensive,
loutil graphique qui inclut les fonctions dinterface graphique et les utilitaires,
la possibilit de liaison avec les autres langages classiques de programmation (C ou
Fortran).
La bibliothque des fonctions mathmatiques dans MATLAB donne des analyses
mathmatiques trs simples. En effet, lutilisateur peut excuter dans le mode commande
nimporte quelle fonction mathmatique se trouvant dans la bibliothque sans avoir recourir
la programmation.
Pour linterface graphique, des reprsentations scientifiques et mme artistiques des objets
peuvent tre cres sur lcran en utilisant les expressions mathmatiques. Les graphiques sur
MATLAB sont simples et attirent lattention des utilisateurs, vu les possibilits importantes
offertes par ce logiciel.
MATLAB nest pas le seul environnement de calcul scientifique, il existe dautres
concurrents dont les plus importants sont Maple et Mathematica. Il existe mme des logiciels
libres qui sont des clones de MATLAB comme Scilab et Octave.

2. Lenvironnement MATLAB
MATLAB affiche au dmarrage plusieurs fentres. Selon la version on peut trouver les
fentres suivantes :

Current Folder: indique le rpertoire courant ainsi que les fichiers existants.

Workspace: indique toutes les variables existantes avec leurs types et valeurs.

Command History: garde la trace de toutes les commandes entres par lutilisateur.

Command Window: utilise pour formuler nos expressions et interagir avec


MATLAB. Cest la fentre que nous utilisons tout au long de ce chapitre.

Chapitre I : Introduction lenvironnement MATLAB

Figure I.1 : Lenvironnement MATLAB

MATLAB est beaucoup plus qu'un langage de programmation. Il s'agit d'une console
d'excution (shell ) permettant d'excuter des fonctions, d'attribuer des valeurs des variables,
etc. La console MATLAB permet d'effectuer des oprations mathmatiques, de manipuler des
matrices et de tracer facilement des graphiques.
Le langage MATLAB n'est pas un langage compil, chaque appel d'un SCRIPT (ou d'une
FUNCTION), le logiciel lit et excute les programmes ligne par ligne.
Lutilisateur peut grce l'invite MATLAB affecter des valeurs des variables et effectuer
des oprations sur ces variables. Par exemple :
>> x = 4
x=
4
>> y = 2
y=
2
>> x + y
ans =
6
>> x * y
ans =
8

Chapitre I : Introduction lenvironnement MATLAB

Ici, il faut noter que lorsque l'utilisateur ne fixe pas de variable de sortie, MATLAB place le
rsultat d'une opration dans ans. Il est toujours possible de connatre les variables utilises et
leur type l'aide de la fonction whos. Par exemple, pour les manipulations prcdentes :
>>whos
Name Size Bytes Class
ans 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 3 elements using
24 bytes

La solution de x+y est donc perdue. Il est donc prfrable de toujours donner des noms aux
variables de sortie :
>> x = 4;
>> y = 2;
>> a = x + y
a=
6
>> b = x * y
b=
8

La fonction clear permet d'effacer des variables. Par exemple :


>> clear x % on efface x de la
mmoire
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
y 1x1 8 double array
Grand total is 3 elements using 24
bytes

Le signe de pourcentage % permet de mettre ce qui suit sur une ligne en commentaire
(MATLAB n'en tiendra pas compte l'excution).

10

Chapitre I : Introduction lenvironnement MATLAB

Pour les variables de type caractre : char, la dclaration se fait entre apostrophes. Il est
possible de concatner (lier) des mots l'aide des crochets.
>> mot1 = 'Gnie'
>> mot2 = 'Civil';
>> mot1_2 = [mot1 ' ' mot2] % l'emploi de ' '
permet d'introduire un espace
mot1_2 =
Gnie Civil

3. Les fichiers SCRIPT et FUNCTION.


Pour des tches rptitives, il est pratique et judicieux d'crire de courts programmes, quon
sauvegarde, pour effectuer les calculs dsirs. Il existe deux types de fichiers qui peuvent tre
programms avec MATLAB : les fichiers SCRIPT et FUNCTION. Dans les deux cas, il faut
lancer l'diteur de fichier et sauvegarder le fichier avec l'extension .m.
Le fichier SCRIPT permet de lancer les mmes oprations que celles crites directement
l'invite MATLAB. Toutes les variables utilises dans un SCRIPT sont disponibles l'invite
MATLAB.
Cette approche est dfinie en Matlab par les M-Files, qui sont des fichiers pouvant contenir
les donnes, les programmes (scripts) ou les fonctions que nous dveloppons.
Pour crer un M-Files il suffit de taper la commande edit, ou tout simplement aller dans le
menu : File  New  M-Files (ou cliquer sur licne

).

Une fentre ddition comme celle- ci va apparatre :

Figure I.2 : La fentre ddition MATLAB

11

Chapitre I : Introduction lenvironnement MATLAB

Par exemple, le fichier test.m qui reprend l'exemple prcdent:


% test.m
clear all
x = 4;
y = 2;
a=x+y
b=x*y
whos

MATLAB contient un grand nombre de fonctions prdfinies comme sin, cos, sqrt, sum, etc..
Il est possible de crer nos propres fonctions en crivant leurs codes source dans des
fichiers M-Files (portant le mme nom de fonction) en respectant la syntaxe suivante :

function [r1, r2, , rn] = nom_fonction (arg1, arg2, , argn)


% le corps
. . .
r1 = . . .
r2 = . . .
. . .
rn = . . .
end

de la fonction
% la valeur retourne pour r1
% la valeur retourne pour r2
% la valeur retourne pour rn
% le end est facultatif

O : r1...rn sont les valeurs retournes, et arg1...argn sont les arguments.


Le rle dune fonction est d'effectuer des oprations sur une ou plusieurs entres pour obtenir
un rsultat qui sera appel sortie.

Par exemple :
function [a,b] = ma_function(x,y)
a = x + y;
b = x * y;

12

Chapitre I : Introduction lenvironnement MATLAB

On obtient
>> [a,b] = ma_fonction(4,2)
a=
6
b=
8
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Grand total is 2 elements using 16 bytes

4. Les principales constantes, fonctions et commandes


MATLAB dfinit les constantes suivantes :
La constante

Sa valeur

pi

=3.1415...

exp(1)

e=2.7183...
= 1

Inf

= 1

NaN

Not a Number (Pas un nombre)

eps

2 1016.

Parmi les fonctions frquemment utilises, on peut noter les suivantes :

La fonction

Sa signification

sin(x)

le sinus de x (en radian)

cos(x)

le cosinus de x (en radian)

tan(x)

le tangent de x (en radian)

asin(x)

larc sinus de x (en radian)

acos(x)

larc cosinus de x (en radian)

atan(x)

larc tangent de x (en radian)

sqrt(x)

la racine carre de x  x

13

Chapitre I : Introduction lenvironnement MATLAB

abs(x)

la valeur absolue de x  |x|

exp(x)

= ex

log(x)

logarithme naturel de x  ln(x)=loge(x)

log10(x)

logarithme base 10 de x  log10(x)

imag(x)

la partie imaginaire du nombre complexe x

real(x)

la partie relle du nombre complexe x

round(x)

arrondi un nombre vers lentier le plus proche

floor(x)

arrondi un nombre vers lentier le plus petit  max{n|nx, n entier}

ceil(x)

arrondi un nombre vers lentier le plus grand  min{n|nx, n entier}

MATLAB offre beaucoup de commandes pour linteraction avec lutilisateur. Nous nous
contentons pour linstant dun petit ensemble, et nous exposons les autres au fur et mesure
de lavancement du cours.

La commande

Sa signification

who

Affiche le nom des variables utilises

whos

Affiche des informations sur les variables utilises

clear x y

Supprime les variables x et y

clear, clear all

Supprime toutes les variables

clc

Efface lcran

exit, quit

Fermer lenvironnement MATLAB

format

Dfinit le format de sortie pour les valeurs numriques


{format long : affiche les nombres avec 14 chiffres aprs la virgule
format short: affiche les nombres avec 04 chiffres aprs la virgule
format bank : affiche les nombres avec 02 chiffres aprs la virgule
format rat : affiche les nombres sous forme dun ratio (a/b)}

14

Chapitre I : Introduction lenvironnement MATLAB

5. Les vecteurs et les matrices


5.1

Les nombres en MATLAB

MATLAB utilise une notation dcimale conventionnelle, avec un point dcimal facultatif .
et le signe + ou pour les nombres signs. La notation scientifique utilise la lettre e pour
spcifier le facteur dchelle en puissance de 10. Les nombres complexes utilisent les
caractres i et j (indiffremment) pour designer la partie imaginaire. Le tableau suivant
donne un rsum :
Le type
Entier
Rel en notation dcimale
Rel en notation scientifique
Complexe

Exemples
5
-83
0.0205
3.1415926
1.60210e-20 6.02252e23 (1.60210x10-20 et
6.02252x1023)
5+3i
-3.14159j

MATLAB utilise toujours les nombres rels (double prcision) pour faire les calculs, ce qui
permet dobtenir une prcision de calcul allant jusqu 16 chiffres significatifs.

Mais il faut noter les points suivants :


Le rsultat dune opration de calcul est par dfaut affich avec quatre chiffres aprs la
virgule.
Pour afficher davantage de chiffres utiliser la commande format long (14 chiffres aprs la
virgule).
Pour retourner laffichage par dfaut, utiliser la commande format short.
Pour afficher uniquement 02 chiffres aprs la virgule, utiliser la commande format bank.
Pour afficher les nombres sous forme dun ratio, utiliser la commande format rat.
La commande

Signification

format short

affiche les nombres avec 04 chiffres aprs la virgule

format long

affiche les nombres avec 14 chiffres aprs la virgule

format bank

affiche les nombres avec 02 chiffres aprs la virgule

format rat

affiche les nombres sous forme dun ratio (a/b)

15

Chapitre I : Introduction lenvironnement MATLAB

Par exemple :
5/3
ans =
1.6667
format long
5/3
ans =
1.66666666666667
format bank
5/3
ans =
1.67
format short
5/3
ans =
1.6667
5.2*4.3
ans =
22.3600
format rat
5.2*4.3
ans =
559/25
1.6667
ans =
16667/10000

La fonction vpa peut tre utilise afin de forcer le calcul et prsenter plus de dcimaux
significatifs en spcifiant le nombre de dcimaux dsirs.
Par exemple :
>> sqrt(2)
ans =
1.4142
>> vpa(sqrt(2),50)
ans =
1.4142135623730950488016887242096980785696718753769

5.2 Les oprations mathmatiques.


L'lment de base de MATLAB est la matrice. C'est--dire qu'un scalaire est une matrice de
dimension 1x1, un vecteur colonne de dimension n est une matrice n x 1, un vecteur ligne de
dimension n, une matrice 1 x n. Contrairement aux langages de programmation usuels, il n'est

16

Chapitre I : Introduction lenvironnement MATLAB

pas obligatoire de dclarer les variables avant de les utiliser et, de ce fait, il faut prendre toutes
les prcautions dans la manipulation de ces objets.

Les scalaires se dclarent directement, par exemple :


>> x = 0;
>> a = x;

Les vecteurs lignes se dclarent en sparant les lments par des espaces ou des virgules de:
>> V_ligne = [0 1 2]
V_ligne =
012

Les vecteurs colonnes se dclarent en sparant les lments par des points-virgules :
>> V_colonne = [0;1;2]
V_colonne =
0
1
2

Il est possible de transposer un vecteur l'aide de la fonction transpose:


>> V_colonne = transpose(V_ligne)
V_colonne =
0
1
2

Le double point ( :) est l'oprateur d'incrmentation dans MATLAB. Ainsi, pour crer un
vecteur ligne des valeurs de 0 1 par incrment de 0.2, il suffit d'utiliser :

>> V = [0:0.2:1]
V=
Columns 1 through 6
0 0.2000 0.4000 0.6000 0.8000
1.0000

17

Chapitre I : Introduction lenvironnement MATLAB

Par dfaut, l'incrment est de 1. Ainsi, pour crer un vecteur ligne des valeurs de 0 5 par
incrment de 1, il suffit d'utiliser :
>> V = [0:5]
V=
012345

On peut accder un lment d'un vecteur et mme modifier celui-ci directement :


>> a = V(2);
>> V(3) = 3*a
V=
013345

La fonction linspace :
La cration dun vecteur dont les composants sont ordonns par intervalle rgulier et avec un
nombre dlments bien dtermin peut se raliser avec la fonction :
linspace (dbut, fin, nombre dlments).
Le pas dincrmentation est calcul automatiquement par Matlab selon la formule :
le pas

Par exemple :

in  debut
nombre d lments  1

>> X = linspace(1,10,4)
% un vecteur de quatre lments de 1 10
X=
1 4 7 10
>> Y = linspace(13,40,4)
% un vecteur de quatre lments de 13 40
Y=
13 22 31 40

La taille dun vecteur (le nombre de ses composants) peut tre obtenue avec la fonction
length comme suit :
>> length(X)
ans =

% la taille du vecteur X
4

18

Chapitre I : Introduction lenvironnement MATLAB

Les oprations usuelles d'addition, de soustraction et de multiplication par scalaire sur les
vecteurs sont dfinies dans MATLAB :
>> V1 = [1 2];
>> V2 = [3 4];
>> V = V1 + V2 % addition de vecteurs
V=
46
>> V = V2 - V1 % soustraction de vecteurs
V=
22
>> V = 2*V1 % multiplication par un scalaire
V=
24

On peut aussi crer des matrices, par exemple :


>> V1 = [1 2];
>> V2 = [3 4];
>> V = [V1;V2]
V=
12
34

Les matrices peuvent aussi tre construites directement :


>> M = [1 2; 3 4]
M=
12
34

On peut videmment avoir accs aux lments de la matrice par :


>> m21 = M(2,1) % 2e ligne, 1ere colonne
m21 =
3

19

Chapitre I : Introduction lenvironnement MATLAB

Il est possible d'inverser inv() et de transposer transpose()les matrices :


>> invM = inv(M)
invM =
-2.0000 1.0000
1.5000 -0.5000
>> transpM = transpose(M)
transpM =
13
24

Un des intrts de MATLAB est la possibilit d'utiliser directement les oprations


mathmatiques prdfinies pour les matrices. L'addition et la soustraction sont directes
(attention aux dimensions) ainsi que la multiplication par un scalaire :
>> A = [1 2;3 4];
>> B = [4 3;2 1];
>> C = A+B % addition
C=
5 5
5 5
>> D = A-B % soustraction
D=
-3 -1
1 3
>> C = 3*A % multiplication par un scalaire
C=
3 6
9 12
>> C = A*B % multiplication de matrices
C=
8 5
20 13
>> D = A/B % division de matrices
D=
1.5000 -2.5000
2.5000 -3.5000

Il est utile de noter les possibilits suivantes :


Laccs un lment de la ligne i et la colonne j se fait par : A(i,j)
Laccs toute la ligne numro i se fait par : A(i,:)
Laccs toute la colonne numro j se fait par : A(:,j)

20

Chapitre I : Introduction lenvironnement MATLAB

Par exemple :
>> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12]
A=
1 2 3 4
5 6 7 8
9 10 11 12

% cration de la matrice A

>> A(2,3)
ans =

% llment sur la 2me ligne la 3me colonne


7
% tous les lments de la 1re ligne

>> A(1,:)
ans =
1

% tous les lments de la 2me colonne

>> A(:,2)
ans =
2
6
10

% tous les lments de la 2me et la 3me ligne

>> A(2:3,:)
ans =
5 6 7 8
9 10 11 12
>> A(1:2,3:4)
ans =

% La sous matrice suprieure droite de taille 2x2


3
7

4
8

>> A([1,3],[2,4])
ans =

% la sous matrice : lignes(1,3) et colonnes (2,4)


2 4
10 12

>> A(:,3) = []
A=

% Supprimer la troisime colonne


1 2 4
5 6 8
9 10 12

>> A(2,:) = []
A=

% Supprimer la deuxime ligne


1 2 4
9 10 12

>> A = [A , [0;0]]
A=
1 2 4
0
9 10 12 0

% Ajouter une nouvelle colonne {ou A(:,4)=[0;0]}

21

Chapitre I : Introduction lenvironnement MATLAB

>> A = [A ; [1,1,1,1]]
% Ajouter une nouvelle ligne {ou A(3,:)=[1,1,1,1]}
A=
1 2 4 0
9 10 12 0
1 1 1 1

Les dimensions dune matrice peuvent tre acquises en utilisant la fonction size. Cependant,
avec une matrice A de dimension m n le rsultat de cette fonction est un vecteur de deux
composants, une pour m et lautre pour n.
>> d = size(A)
d =
3

Ici, la variable d contient les dimensions de la matrice A sous forme dun vecteur. Pour
obtenir les dimensions sparment on peut utiliser la syntaxe :
>> d1 = size (A, 1)
d1 =
3

% d1 contient le nombre de lignes (m)

>> d2 = size (A, 2)


d2 =
4

% d2 contient le nombre de colonnes (n)

5.3

Gnration automatique des matrices

Dans MATLAB, il existe des fonctions qui permettent de gnrer automatiquement des
matrices particulires. Dans le tableau suivant nous prsentons les plus utilises :
La fonction

Signification

zeros(n)

Gnre une matrice n n avec tous les lments = 0

zeros(m,n)

Gnre une matrice m n avec tous les lments = 0

ones(n)

Gnre une matrice n n avec tous les lments = 1

ones(m,n)

Gnre une matrice m n avec tous les lments = 1

eye(n)

Gnre une matrice identit de dimension n n

magic(n)

Gnre une matrice magique de dimension n n

rand(m,n)

Gnre une matrice de dimension m n de valeurs alatoires

22

Chapitre I : Introduction lenvironnement MATLAB

6. Application
1. On veut vrifier que la multiplication de matrices n'est pas commutative. Soient deux
matrices :
3 4
A 6 5
10 8

4
3
2

4
B 3
2

5
11
1

8
12
7

Ralisez un code MATLAB qui permet, pour les matrices A et B donnes, de vrifier que :
A*B-B*A0
2. En utilisant les matrices dfinies au premier exercice, vrifiez l'identit suivante :
(A + B)T = AT + BT

Utilisez la fonction transpose de MATLAB pour transposer les matrices.

3. On dsire rsoudre un systme d'quations algbriques linaires, c'est--dire, un systme


reprsent par :
A*x=b
Avec A, une matrice de dimension n x n, x et b, des vecteurs colonnes de dimension n. La
solution de ce systme est donne par :
x = A-1 * b
En utilisant la fonction inv de MATLAB pour inverser la matrice, rsoudre le systme dcrit
par la matrice A, dfinie au premier exercice et le vecteur b, la premire colonne de la matrice
B, de ce mme exercice.

23

Chapitre II: Introduction la programmation avec MATLAB

Chapitre II : Introduction la programmation avec MATLAB


1. Introduction
Nous avons vu jusqu prsent comment utiliser MATLAB pour effectuer des
commandes ou pour valuer des expressions en les crivant dans la ligne de commande, par
consquent les commandes utilises scrivent gnralement sous forme dune seule
instruction (ventuellement sur une seule ligne).
Cependant, il existe des problmes dont la description de leurs solutions ncessite plusieurs
instructions, ce qui rclame lutilisation de plusieurs lignes. Comme par exemple la recherche
des racines dune quation de second degr (avec prise en compte de tous les cas possibles).
Une collection dinstructions bien structures visant rsoudre un problme donn sappelle
un programme. Dans cette partie, on va prsenter les mcanismes dcriture et dexcution
des programmes en MATLAB.

2. Oprateurs de comparaison et oprateurs logiques


2.1 Les oprateurs de comparaison sont:
= = : gale (X= = Y)
> : Strictement suprieur (X > Y)
< : Strictement infrieur (X< Y)
>= : suprieur ou gale (X>= Y)
<= : infrieur ou gale (X<= Y)
~= : diffrent de (X~=Y)
2.2 Les oprateurs logiques sont:
& : et (and) (X &Y)
: ou (or) (X Y)
- : Non (not) X (-X)

24

Chapitre II: Introduction la programmation avec MATLAB

3. Les entres/sorties
3.1 Entre au clavier
Lutilisateur peut saisir des informations au clavier grce la commande x = input(...).
x=input ('Saisir une valeur de x : ');
Saisir une valeur de x : 5
x
x =
5

3.2 Sortie lcran


Pour afficher quelque chose lcran, lutilisateur peut utiliser la commande disp, qui affiche
le contenu dune variable (chane de caractres, vecteur, matrice...).
A=[1 2 3];
disp(A);
1

4. Instructions de contrle
Les instructions de contrle sous Matlab sont tr`es proches de celles existant dans dautres
langages de programmation.
4.1 Linstruction while :
Linstruction while rpte lexcution dun groupe dinstructions un nombre indtermin de
fois selon la valeur dune condition logique. Elle a la forme gnrale suivante :
while (condition)
Ensemble dinstructions
end

Tant que lexpression de while est value vrai (true), lensemble dinstructions sexcutera
en boucle.

25

Chapitre II: Introduction la programmation avec MATLAB

Exemple :
Faire un programme sous Matlab qui calcule la somme suivante:
S=1+2/2! +3/3!+ on arrte le calcul quand S>2.5
s=1;i=1;f=1;
while s<=2.5
i=i+1
f=f*i;
s=s+i/f
end
i=
2
s=
2
i=
3
s=
2.5000
i=
4
s=
2.6667

4.2 Linstruction if :
Linstruction if est la plus simple et la plus utilise des structures de contrle de flux.
Elle permet dorienter lexcution du programme en fonction de la valeur logique dune
condition. Sa syntaxe gnrale est la suivante :
if (condition)
instruction_1
instruction_2
. . .
Instruction_N
end

if (condition)
ensemble dinstructions 1
else
ensemble dinstructions 2
end

ou bien

26

Chapitre II: Introduction la programmation avec MATLAB

Si la condition est value vrai (true), les instructions entre le if et le end seront excutes,
sinon elles ne seront pas (ou si un else existe les instructions entre le else et le end seront
excutes). Sil est ncessaire de vrifier plusieurs conditions au lieu dune seule, on peut
utiliser des clauses elseif pour chaque nouvelle condition, et la fin on peut mettre un else
dans le cas ou aucune condition na t value vrai.
Voici donc la syntaxe gnrale :
if (expression_1)
Ensemble dinstructions 1
elseif (expression_2)
Ensemble dinstructions 2
....
elseif (expression_n)
Ensemble dinstructions n
else
Ensemble dinstructions si toutes les expressions taient fausses
end

Exemple :
Faire un programme sous MATLAB qui rsout le problme suivant:
1. y = x si x<0
2. y=x si x>0
3. y=10 si x=0
x=input('introduire la valeur de x ');
Introduire la valeur de x 6
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

27

Chapitre II: Introduction la programmation avec MATLAB

La valeur de y est:
y=
36
Exemple :
Faire un programme sous MATLAB qui rsout le problme suivant:
1. y = x si x<0
2. y=x si x0

x=input('introduire la valeur de x ');


introduire la valeur de x 6
if x<0
y=x;
else
y=x^2;
end

La valeur de y est:
y=
36
Exemple :
Crons un programme qui trouve les racines dune quation de second degr dsign par :
ax2+bx+c=0. Voici le M-File qui contient le programme (il est enregistr avec le nom
Equation2deg.m )
% Programme de rsolution de l'quation a*x^2+b*x+c=0
a = input ('Entrez la valeur de a : ');
% lire a
b = input ('Entrez la valeur de b : ');
% lire b
c = input ('Entrez la valeur de c : ');
% lire c
delta = b^2-4*a*c ;
% Calculer delta
if delta<0
disp('Pas de solution')
% Pas de solution
elseif delta==0
disp('Solution double : ')
% Solution double
x=-b/(2*a)
else
disp('Deux solutions distinctes: ')
%
Deux solutions
x1=(-b+sqrt(delta))/(2*a)
x2=(-b-sqrt(delta))/(2*a)
end

28

Chapitre II: Introduction la programmation avec MATLAB

Si nous voulons excuter le programme, il suffit de taper le nom du programme :


>> Equation2deg
Entrez la valeur de a : -2

Entrez la valeur de b : 1

Entrez la valeur de c : 3

Deux solutions :
x1 =
-1
x2 =
1.5000

Ainsi, le programme va tre excut en suivant les instructions crites dans son M-File. Si une
instruction est termine par un point virgule, alors la valeur de la variable concerne ne sera
pas affiche, par contre si elle se termine par une virgule ou un saut la ligne, alors les
rsultats seront affichs.

Remarque :
Il existe la fonction solve prdfinie en MATLAB pour trouver les racines dune quation (et
beaucoup plus). Si nous voulons lappliquer sur notre exemple, il suffit dcrire :
>> solve('-2*x^2+x+3=0','x')
ans =
-1
3/2

29

Chapitre II: Introduction la programmation avec MATLAB

4.3 Linstruction switch :


Linstruction switch excute des groupes dinstructions selon la valeur dune variable ou
dune expression. Chaque groupe est associ une clause case qui dfinit si ce groupe doit
tre excut ou pas selon lgalit de la valeur de ce case avec le rsultat dvaluation de
lexpression de switch. Si tous les cases nont pas t accepts, il est possible dajouter une
clause otherwise qui sera excute seulement si aucun case nest excut.
Donc, la forme gnrale de cette instruction est :
switch (expression)
case valeur_1
Groupe dinstructions 1
case valeur_2
Groupe dinstructions 2
. . .
case valeur_n
Groupe dinstructions n
otherwise
Groupe dinstructions si tous les cases ont chou
end

Exemple :
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

30

Chapitre II: Introduction la programmation avec MATLAB

Lexcution va donner :
Entrez un nombre : 50
x n'est pas 0 ou 10 ou 100

4.4 Linstruction for :


Linstruction for rpte lexcution dun groupe dinstructions un nombre dtermin de fois.
Elle a la forme gnrale suivante :
for variable = expression_vecteur
Groupe dinstructions
end

Lexpression_vecteur correspond la dfinition dun vecteur : dbut : pas : fin ou dbut : fin
La variable va parcourir tous les lments du vecteur dfini par lexpression, et pour chacune
il va excuter le groupe dinstructions.
Exemple :
Dans le tableau suivant, nous avons trois formes de linstruction for avec le rsultat
MATLAB :

for i = 1 : 4

Linstruction for
end

for i = 1 : 2 : 4

for i = [1,4,7]

j=i*2 ;

j=i*2 ;

j=i*2 ;

disp(j)

disp(j)

disp(j)

end

end

Le rsultat de

lexcution

14

31

Chapitre II: Introduction la programmation avec MATLAB

5. Les graphiques et la visualisation des donnes en MATLAB


Partant du principe quune image vaut mieux quun long discours, MATLAB offre un
puissant systme de visualisation qui permet la prsentation et laffichage graphique des
donnes dune manire la fois efficace et facile.
Dans cette partie, nous allons prsenter les principes de base indispensables pour dessiner des
courbes en MATLAB.
5. 1 La fonction plot :
La fonction plot est utilisable avec des vecteurs ou des matrices. Elle trace des lignes en
reliant des points de coordonnes dfinis dans ses arguments, et elle a plusieurs formes :
Si elle contient deux vecteurs de la mme taille comme arguments : elle considre les
valeurs du premier vecteur comme les lments de laxe X (les abscisses), et les valeurs du
deuxime vecteur comme les lments de laxe Y (les ordonnes).
Exemple:
>> A = [2, 5, 3,-2,0]
A=
2

3 -2

>> B = [-4, 0, 3,1,4]


B=
-4

>> plot(A,B)

Si elle contient un seul vecteur comme argument : elle considre les valeurs du vecteur
comme les lments de laxe Y (les ordonnes), et leurs positions relatives dfiniront laxe X
(les abscisses).
Exemple :
>> V = [2, 1, 6, 8,-3, 0,5]
V=
2 1 6 8 -3 0 5
>> plot(V)

32

Chapitre II: Introduction la programmation avec MATLAB

Si elle contient une seule matrice comme argument : elle considre les valeurs de chaque
colonne comme les lments de laxe Y, et leurs positions relatives (le numro de ligne)
comme les valeurs de laxe X. Donc, elle donnera plusieurs courbes (une pour chaque
colonne).
Exemple :
>> M = [0 -2 1;2 0 3;-3 3 -2;1 1 4]
M=
0 -2

-3

3 -2

>> plot(M)

Si elle contient deux matrices comme arguments : elle considre les valeurs de chaque
colonne de la premire matrice comme les lments de laxe X, et les valeurs de chaque
colonne de la deuxime matrice comme les valeurs de laxe Y.
Exemple :
>> K = [1 1 1;2 2 2; 3 3 3;4 4 4]
K=
1

>> M = [0 -2 1; 2 0 3;-3 3 -2; 1 1 4]


M=
0 -2

-3

3 -2

>> plot(K,M)

33

Chapitre II: Introduction la programmation avec MATLAB

5. 2 Modification de lapparence dune courbe :


Il est possible de manipuler lapparence dune courbe en modifiant la couleur de la courbe, la
forme des points de coordonnes et le type de ligne reliant les points.
Pour cela, on ajoute un nouvel argument (quon peut appeler un marqueur) de type chane de
caractres la fonction plot comme ceci :
plot (x, y, marqueur)
Le contenu du marqueur est une combinaison dun ensemble de caractres spciaux
rassembls dans le tableau suivant :

Couleur de la courbe

le caractre

Reprsentation des points

son effet

le caractre

son effet

b ou blue

courbe en bleu

un point .

g ou green

courbe en vert

un cercle 

r ou red

courbe en rouge

le symbole x

c ou cyan

entre le vert et le bleu

le symbole +

m ou magenta

en rouge violac vif

une toile *

y ou yellow

courbe en jaune

un carr 

k ou black

courbe en noir

un losange 

triangle inferieur 

son effet

triangle suprieur 

en ligne plein

<

triangle gauche 

en pointill

>

triangle droit 

-.

en point tiret

pentagramme 

--

en tiret

hexagramme 

Style de la courbe

le caractre

5. 3 Annotation dune figure :


Dans une figure, il est prfrable de mettre une description textuelle aidant lutilisateur
comprendre la signification des axes et de connatre le but ou lintrt de la visualisation
concerne.
Il est trs intressant galement de pouvoir signaler des emplacements ou des points
significatifs dans une figure par un commentaire signalant leurs importances.

34

Chapitre II: Introduction la programmation avec MATLAB

 Pour donner un titre une figure contenant une courbe nous utilisons la fonction title
comme ceci :
>> title('titre de la figure')
 Pour donner un titre pour laxe vertical des ordonnes y, nous utilisons la fonction
ylabel comme ceci :
>> ylabel('Ceci est l''axe des ordonnes Y')
 Pour donner un titre pour laxe horizontal des abscisses x, nous utilisons la fonction
xlabel comme ceci :
>> xlabel('Ceci est l'axe des abscisses X')
 Pour crire un texte (un message) sur la fentre graphique une position indique par
les coordonnes x et y, nous utilisons la fonction text comme ceci :
>> text(x, y, 'Ce point est important')
 Pour mettre un texte sur une position choisie manuellement par la souris, nous
utilisons la fonction gtext, qui a la syntaxe suivante :
>> gtext('Ce point est choisi manuellement')
 Pour mettre un quadrillage (une grille), nous utilisons la commande grid (ou grid on).
Pour lenlever nous rutilisons la mme commande grid (ou grid off).
Exemple :
Dessinons la fonction : y = -2x3+x2-2x+4 pour x variant de -4 jusqu 4, avec un pas = 0.5.
>> x = -4:0.5:4;
>> y = -2*x^3+x^2-2*x+4;
>> plot(x,y)
>> grid
>> title('Dessiner une courbe')
>> xlabel('l'axe des abscisses')
>> ylabel('l'axe des ordonnes')

35

Chapitre II: Introduction la programmation avec MATLAB

5. 4 Utiliser plot avec plusieurs arguments


On peut utiliser plot avec plusieurs couples (x,y) ou triplets (x ,y, marqueur) comme
arguments.
Exemple :
Lexemple qui suit:
>> x = [0:0.01:2*pi];
>> plot(x,cos(x),x ,sin(x))

produit la sortie graphique suivante :

4. 5 Reprsentation graphique 3D

5. 5 Reprsentation graphique 3D
Supposons, par exemple que l'on veuille reprsenter la surface dfinie par la fonction
z=sin(xy) sur le carr suivant [-p/2,p/2]x[-p/2,p/2] l'aide d'une grille de points 31x31. On
utilise la squence de commandes :
[xi,yi]=meshgrid(-pi/2:pi/30:pi/2); %gnration d'une grille rgulire
zi=sin(xi.*yi);
surf(xi,yi,zi,zi); % affichage de la surface

36

Chapitre II: Introduction la programmation avec MATLAB

On peut modifier l'angle de vue via la commande view en spcifiant soit un point
d'observation ou deux angles d'lvation. Noter que la commande view(2) dclenche
directement une vue de dessus. On peut galement choisir l'angle de vue la souris en
activant l'option rotate3d on et on annule ce mode par la commande rotate3d off. De mme
la commande zoom in permet d'effectuer des zooms la souris, seulement en vue plane!
Il existe par ailleurs de nombreuses commandes permettant de contrler les palettes de
couleurs utilises pour la reprsentation graphique, en particulier la commande colormap.
Signalons une option intressante permettant de lisser les couleurs : shading interp. Pour une
description exhaustive de toutes ces possibilits faire help graph3d.
5. 6 Dautres types de graphiques:
Le langage MATLAB ne permet pas uniquement laffichage des points pour tracer des
courbes, mais il offre aussi la possibilit de tracer des graphes btons et des histogrammes.
Pour tracer un graphe btons nous utilisons la fonction bar qui a le mme principe de
fonctionnement que la fonction plot.
Exemple :
>> X=[2,3,5,4,6];
>> Y=[1,4,5,2,1];
>> bar(X,Y)

37

Chapitre II: Introduction la programmation avec MATLAB

Il est possible de modifier lapparence des btons, et il existe la fonction barh qui dessine les
btons horizontalement, et la fonction bar3 qui ajoute un effet 3D.
Parmi les fonctions de dessin trs intressantes non prsentes ici, on peut trouver : hist,
stairs, stem, pie, pie3, ...etc..
Nous signalons aussi que Matlab permet lutilisation dun systme de coordonnes autre que
le systme cartsien comme le systme de coordonnes polaires (pour plus de dtail chercher
les fonctions compass, polar et rose).

6 .Applications
1. Ecrire le code en MATLAB qui calcule la somme de la suite gomtrique suivante :
%

# 2$

$&'

2. Ecrire le code en MATLAB qui calcule les sommes


*

# j)
+&'

Pour N = 6 et p gal un, deux et trois.

38

Chapitre III: Applications des mthodes numriques avec MATLAB

Chapitre III : Applications des mthodes numriques avec


MATLAB
1. Introduction
Lanalyse numrique est utilise pour trouver des approximations des problmes difficiles
tels que la rsolution des quations non linaires, l'intgration impliquant des expressions
complexes. Elle est applique une grande varit de disciplines telles que tous les domaines
de l'ingnierie, de l'informatique, l'ducation, la gologie, la mtorologie, et bien d'autres.
Il y a des annes, les ordinateurs haute vitesse nexistaient pas, par consquent, le calcul
manuel exigeait beaucoup de temps et de travail laborieux. Mais maintenant que les
ordinateurs sont devenus indispensables pour les travaux de recherche dans la science,
l'ingnierie et d'autres domaines, l'analyse numrique est devenue une tche beaucoup plus
facile et plus agrable.

2. Rsolution de systmes linaires par le logiciel MATLAB.


2. 1. Mthode du pivot de Gauss (mthode directe)
La mthode du pivot de Gauss est une mthode directe de rsolution de systme linaire qui
permet de transformer un systme en un autre systme quivalent chelonn. On rsout le
systme ainsi obtenu laide dun algorithme de remonte.
Principe
On cherche rsoudre le systme suivant de n quations n inconnues x1,x2,,xn :
a11 x1 + a12 x2+ + a1n xn = b1
a21 x1 + a22 x2+ + a2n xn = b2
.
.
.
an1 x1 + an2 x1+ + ann xn = bn

39

Chapitre III: Applications des mthodes numriques avec MATLAB

Du point de vue matriciel, on a

a 11 a 12
a
21 a 22
... ...

a n 1 a n 2

Ax=b Avec

... a 1n x1 b1
... a 2 n x 2 b 2
=
... ... ... ...

... a nn x n b n

Les donnes du systme linaire sont :


- les coefficients rels ou complexes aij pour i=1,,n et j=1,,p (n et p sont deux entiers
connus),
- le second membre du systme constitu par les nombres rels ou complexes bi (i=1,,n),
et Li (i=1,,n) dsigne la iime ligne du systme (S).
Les inconnues dterminer sont les xj (j=1,,p).
Le systme est dit carr lorsque n=p. Cest le cas o il y a autant dquations que
dinconnues.
On dira que le systme est homogne lorsque le second membre est nul (bi=0, i=1,,n).
On peut remarquer quun systme linaire homogne admet au moins la solution nulle
xi=0, i=1,,n (qui nest pas ncessairement la seule).
Lorsque tous les coefficients sous la diagonale dun systme linaire sont nuls, i.e. :
i > j aij = 0

On dit que le systme est chelonn.

40

Chapitre III: Applications des mthodes numriques avec MATLAB

a- la mthode du pivot de Gauss : Triangularisation

Soit U la matrice chelonne du systme, on a alors

b- Remonte et rsolution
prsent la matrice A du systme linaire est chelonne, on doit alors rsoudre le systme
triangulaire :
Ux = b(n)
Puisque b(n) rappelons le, est le second membre chelonn, il a subi les mmes oprations
que la matrice chelonne U.
On utilise alors un algorithme de remonte
r
pour le systme Ux = b(n) :

41

Chapitre III: Applications des mthodes numriques avec MATLAB

c- Exemple de rsolution

Considrons le systme suivant :

x' - 2x. - 2x/ 2 L'


,x' - 3x.  2x/ 1 L. 1
3x' - 5x. - 8x/ 8 L/

x'
1 2 2
x
A 1 3 2 ,x  .
x/
3 5 8
Avec

2
,b 1
8

Premire tape du pivot de Gauss pour liminer les variables x1 dans les lignes L2et L3 :

x 1

2x 2
x2
x 2

2x 3
4x 3
2x 3

=
=
=

2
L1
3 L 2 L 2 L1
2
L 3 L 3 3L1

Seconde tape du pivot de Gauss pour liminer les variables x2 dans la ligne L3 :
x 1

2x 2
x2

2x 3
4x 3
2x 3

=
=
=

2
L1
3
L2
1 L3 L 3 + L 2

En remontant le systme, on obtient aisment la solution x du systme :


3
x  1
1/2

42

Chapitre III: Applications des mthodes numriques avec MATLAB

clear all
close all
taille=input('Taille de la matrice : ');
for t = 1:taille
for p = 1:taille
str=sprintf('Entrer l''lment (%d,%d) de la matrice A : ',t,p);
a(t,p) = input(str);
end
end

for t = 1:taille
for p = 1:taille
str=sprintf('Entrer l''lment (%d,%d) de la matrice B : ',t,p);
b(t,p) = input(str);
end
end
disp(a)
disp(b)
A=[a,b]
n=size(A,1)
for k=1:n-1
for i=k+1:n
w=A(i,k)/A(k,k)
for j=k:n+1
A(i,j)=A(i,j)-w*A(k,j)
end
end
end
A
for i=n:-1:1
s=0;
for j=i+1:n
s=s+A(i,j)*x(j);
end
x(i)=(A(i,n+1)-s)/A(i,i)
end
x

Code MATLAB implmentant la mthode de Gauss

43

Chapitre III: Applications des mthodes numriques avec MATLAB

2. 2. Mthodes itratives
Principe
On cherche obtenir une suite de vecteur ( X n )n convergeante vers X telle que AX = b .
En posant A = M N o M est une matrice inversible, on propose la formule de rcurrence

MX n+1 = NX n + b ou encore X n+1 = M 1 NX n + M 1b . Si X est solution du problme, il vient

que (X X n ) = (M 1 N ) (X X 0 ) . B = M 1 N est appele la matrice d'itration.


n

Ainsi pour que X n X , il est ncessaire que (M 1 N ) 0 .


n

Remarque : Le cadre normal de convergence des mthodes itratives classiques est : A


matrice symtrique dfinie positive .
Vitesse de convergence :

( )

Thorme : B n

0 ssi (B ) < 1 . O (B) est le rayon spectral de la matrice B.

Vitesse de convergence : Considrons la matrice d'itration B symtrique, alors B


et l'on obtient le rsultat suivant : x k x

(B ) . x 0 x
k

= (B )

En conclusion, le rayon spectral de la matrice d'itration mesure la vitesse de convergence. La


convergence est d'autant plus rapide que le rayon spectral est plus petit. On admettra que ce
rsultat se gnralise aux matrices quelconques.
2.3. Mthode Jacobi

Notation : A =
E

On pose A = M N avec M = D et N = E + F selon le schma ci-dessus. Ce qui donne la


formule de rcurrence suivante : X n+1 = D 1 (E + F ) X n + D 1b .
Soit x k = (x ki )i =1,n le vecteur itr, on donne lalgorithme donnant xk +1 en fonction de xk .
Pour i de 1 n faire
x ki +1 =

1 i 1
j
ai , j x k +
a i ,i j =1

j =i +1

i, j

x kj bi

44

Chapitre III: Applications des mthodes numriques avec MATLAB

Thorme : Soit A une matrice symtrique, diagonale strictement dominante, c'est dire

1
a i ,i > a i , j alors la mthode est convergente car D (E + F ) < 1.
i j

A priori, cette mthode converge pour une matrice A SDP (matrice symtrique dfinie
positive).
2.4. Mthode Gauss-Seidel
Boucle directe
On reprend le schma de matrice prcdent et on pose M = D E et N = F . La formule de
rcurrence s'crit : (D E ) X n+1 = FX n + b .
i 1

On calcule xki +1 , la ime composante du vecteur X k +1 : ai ,i x ki +1 = ai , j xkj+1


j =1

j =i +1

i, j

x kj + bi .

On propose lalgorithme suivant :

Pour i de 1 n faire
x ki +1 =

1
a i ,i

i 1
j
ai , j x k +1
j =1

j =i +1

i, j

x kj + bi

On procde par crasement du vecteur X k : x kj+1 , 1 j i 1


1442443
dj calculs

.
Boucle rtrograde
Cette fois, on pose M = D F et N = E .
On propose lalgorithme suivant :

Pour i de n 1 faire
x ki +1 =

1 i 1
j
ai , j x k
a i ,i j =1

j = i +1

i, j

x kj+1 + bi

45

x ki +1
{
calcul en cours

x kj , i + 1 j n

Chapitre III: Applications des mthodes numriques avec MATLAB

clear all
close all
a11=input('A11
a12=input('A12
a13=input('A13
a21=input('A21
a22=input('A22
a23=input('A23
a31=input('A31
a32=input('A32
a33=input('A33

:
:
:
:
:
:
:
:
:

');
');
');
');
');
');
');
');
');

b1=input('B1 : ');
b2=input('B2 : ');
b3=input('B3 : ');
x1=input('X1 : ');
x2=input('X2 : ');
x3=input('X3 : ');
A=[a11 a12 a13;a21 a22 a23;a31 a32 a33]
B=[b1;b2;b3]
X=[x1;x2;x3]
for k=1:3
for i=1:3
x=0;
for j=1:3
if j~=i
x=x+((A(i,j)./A(i,i)).*X(j,1));
end
end
Xn(i,1)=-x+(B(i,1)./A(i,i));
end
A=[a11 a12 a13;a21 a22 a23;a31 a32 a33]
B=[b1;b2;b3]
X=[x1;x2;x3]
for k=1:3
for i=1:3
x=0;
for j=1:3
if j~=i
x=x+((A(i,j)./A(i,i)).*X(j,1));
end
end
Xn(i,1)=-x+(B(i,1)./A(i,i));
end
X=Xn;
disp(X)
end

Code MATLAB implmentant la mthode Jacobi


46

Chapitre III: Applications des mthodes numriques avec MATLAB

3. Les Polynmes dans MATLAB


3 .1. Oprations sur les polynmes dans MATLAB
Dans MATLAB, les polynmes sont reprsents sous forme de vecteurs lignes dont les
composantes sont donnes par ordre des puissances dcroissantes. Un polynme de degr n
est reprsent par un vecteur de taille (n+1).
Exemple :
Le polynme :f(x)= 8x5+2x3+3x2+4x-2 est reprsent par :
>>f=[8 0 2 3 4 -2]
f =8 0 2 3 4 -2
3.1.1. Multiplication des polynmes
La fonction conv donne le produit de convolution de deux polynmes. Lexemple suivant
montre lutilisation de cette fonction.
Soient :
f(x)= 3x3+2x2-x+4
g(x)= 2x4-3x2+5x-1
Le produit de convolution : h(x)= f(x) . g(x) est donn par :
>>f=[3 2 -1 4];
>>g=[2 0 -3 5 -1];
>>h=conv(f,g)
h=
6 4 -11 17 10 -19 21 -4

47

Chapitre III: Applications des mthodes numriques avec MATLAB

Ainsi, le polynme h(x) obtenu est :


h(x)= 6x7+4x6-11x5+17x4+10x3-19x2+21x-4
3. 1.2. Division des polynmes
La fonction deconv donne le rapport de convolution de deux polynmes (dconvolution des
coefficients du polynme). Lexemple suivant montre lutilisation de cette fonction.
Soient les mmes fonctions prcdentes f(x) et g(x) :
f(x)= 3x3+2x2-x+4
g(x)= 2x4-3x2+5x-1
La division de g(x) par f(x) :

h4x5

6475
8475

est donne par la fonction deconv :

>>f=[3 2 -1 4];
>>g=[2 0 -3 5 -1];
>>h=deconv(g,f)
h=
0.6667 -0.4444

et le polynme h(x) obtenu est :


h(x)= 0.6667 x-0.4444

3. 2.Manipulation de fonctions polynomiales dans MATLAB


Soit le polynme suivant :

P(x)= an xn + an-1 xn-1 +.+ a2 x2 + a1 x + a0


O n est le degr du polynme et ai (i=0 ,1 ,2, .,n) sont les coefficients du polynme.
Ce polynme peut tre crit sous la forme :

P(x)= ((((an x + an-1 xn-1) x + an-2 ) x . + a1 )x + a0)


48

Chapitre III: Applications des mthodes numriques avec MATLAB

Aprs factorisation, on a:

P(x)= an(x- r1) (x- r2) (x- r3) (x- rn)


o r0, r1, r2 ,, rn sont les racines du polynme P(x).
Exemple :
P(x)= x4+2x3-7x2+8x+12
Ce polynme est quivalent :

P(x)= ((( (x+2)x-7)x-8)x+12)


Un polynme dordre n possde n racines qui peuvent tre relles ou complexes.
Dans MATLAB, un polynme est reprsent par un vecteur contenant les coefficients
dans un ordre dcroissant.

Exemple :
Le polynme : 2x3+x2+4x+5 qui est reprsent dans MATLAB par :
>>P=[2 1 4 5];

a pour racines ri .
Pour trouver ces racines, on doit excuter la fonction roots.
Do :
>>r=roots(P);
>> r
r=
0.2500 + 1.5612i
0.2500 - 1.5612i
-1.0000

Les trois racines de ce polynme (dont 2 sont complexes) sont donnes sous forme dun
vecteur colonne.

49

Chapitre III: Applications des mthodes numriques avec MATLAB

4. Rsolution dquations non linaires (Mthode de Newton-Raphson)


4.1. La mthode de Newton-Raphson
La mthode de Newton-Raphson consiste trouver la valeur x qui annulera la fonction f(x).

La mthode de Newton-Raphson permet dapprocher par itrations la valeur x au moyen de la


relation suivante :

x$9' x$ 

f4x$ 5
f;4x$ 5

Si | Xn - Xn-1| < alors Xn est le rsultat de lestimation de la racine.


O

reprsentent des erreurs d'approximations caractrisant la qualit de la solution

numrique.
Ce critre d'arrt a l'avantage d'viter une possible division par 0.
.

Dans toutes les mthodes itratives, il est ncessaire pour viter une divergence de la solution,
de bien choisir la valeur initiale x0. Celle-ci peut tre obtenue graphiquement.

Exemple :
On se propose dappliquer cette mthode pour la recherche des racines de la fonction non
linaire suivante :
f(x)=ex -2cos(x)
Dans un premier temps, on se propose de tracer la courbe reprsentative de cette fonction en
utilisant le programme ci-dessous NewtonRaphson.m:

% Etude de la fonction :
% f(x)=exp(x)-2.cos(x)
x=-1:0.1:1;
f=exp(x)-2*cos(x);
plot(x,f); grid on;
title('Fonction : f(x)=exp(x)-2.cos(x)');

Aprs excution du programme, on obtient la courbe sur la figure ci-aprs. Daprs cette
courbe, il est judicieux de choisir un x0= 0 ,5 ; car f (0 ,5) est proche de zro pour avoir une
convergence rapide. La fonction drive f(x) a pour expression : f(x) =ex+2 sin (x).
50

Chapitre III: Applications des mthodes numriques avec MATLAB

Figure III.1 : Localisation de la valeur x0 o f(x0) 0

Pour chercher la solution de f(x), on peut rajouter au programme prcdent


NewtonRaphson.m quelques lignes :
% Etude de la fonction :
% f(x)=exp(x)-2.cos(x)
clf;
x=-1:0.1:1;
f=exp(x)-2*cos(x);
figure(1);
plot(x,f); grid on;
title('Fonction : f(x)=exp(x)-2.cos(x)');
clear all;
clc;
x(1)=input('Donner la valeur initiale x(1): \n');
e=1e-10;
n=5000;
for i=2:n
f=exp(x(i-1))-2*cos(x(i-1));
diff=exp(x(i-1))+2*sin(x(i-1));
x(i)=x(i-1)-f/diff;
if abs(x(i)-x(i-1))<=e
xp=x(i);
fprintf('xp=%f\n',x(i));
break;
end
end
j=1:i;
figure(2);
plot(j,x(j),'*r',j,x(j));
xlabel('Nombre d''itrations');
title('Convergence de la solution : Mth. de Newt.-Raph.');
disp('Les valeurs successives de x(i) sont :');
x'

Code MATLAB implmentant la mthode NewtonRaphson


51

Chapitre III: Applications des mthodes numriques avec MATLAB

4.2. La mthode de la scante (mthode multi-point)


Cette mthode est du type
xn+1 = F(xn, xn1, , xnN)
La mthode de Newton est rapide, mais ncessite le calcul de la drive de f en tout point xn,
ce quon na pas toujours. La plus simple et plus ancienne est la mthode de la scante. Elle
consiste se donner deux points x0 et x1, tracer la droite qui passe par les points (x0, f(x0) et
(x1, f(x1)), elle coupe laxe des x en x2, et on recommence avec les points x1 et x2.

Figure III.2 : Mthode de la scante

La mthode de la scante permet dapprocher par itrations la valeur x au moyen de la


relation suivante :

x$9' x$ 

x$  x$<'
f4x$ 5  f4x$<' 5

La solution dpend du critre d'arrt

52

Chapitre III: Applications des mthodes numriques avec MATLAB

5. Intgration numrique des fonctions


Nous dveloppons ci-aprs quelques mthodes qui permettent de calculer, sur un intervalle
fini [a,b], lintgrale dfinie

b
a

f ( x)dx dune fonction f continue donne.

Ces mthodes sont particulirement utiles dans le cas o les primitives de f ne sont pas des
fonctions lmentaires ou sont trop difficiles calculer.
Nous distinguerons deux optiques :
* la fonction intgrer est remplace par une fonction interpolante ou par une fonction
dapproximation ;
* lintgrale est approche par une somme pondre de valeurs prises par la fonction en des
points situs dans un voisinage de [a,b].

5. 1 Mthode des trapzes


On subdivise lintervalle [a,b] en sous- intervalles {[xi-1,xi] , i = 1,2,, n; x0 = a; xn = b} sur
lesquels la fonction f est remplace par le segment de droite qui joint les points (xi-1 ,
f(xi-1)) et (xi , f(xi)).
Cette procdure revient remplacer, sur [a,b], f par une fonction dinterpolation linaire par
morceaux. Dun point de vue gomtrique, on assimile laire comprise entre le graphe de f et
laxe des x la somme des aires de n trapzes.
Considrons que la division en sous-intervalles est uniforme et posons :
xi = a + ih

h=

ba
et f(xi) = fi ; i = 0, 1, 2, , n.
n

Sur lintervalle [xi , xi+1] laire

x i +1
xi

f ( x) dx est remplace par h( fi + fi+1 )/2 , aire du trapze

correspondant.
En additionnant les aires des n trapzes, on obtient la formule des trapzes :

f ( x)dx

h
( f 0 + 2 f1 + 2 f 2 + L + 2 f n 1 + f n )
2

On peut montrer que lerreur commise est proportionnelle h2 (si la fonction f est deux fois
continment drivable).
On dit que la mthode des trapzes est dordre 2. La formule est exacte pour les fonctions
f de degr 1. La formule des trapzes peut tre amliore en procdant comme suit, on
dveloppe f(x) en srie de Taylor au voisinage de x0 :

53

Chapitre III: Applications des mthodes numriques avec MATLAB

f ( x) = f ( x0 ) + ( x x0 ) f ( x0 ) +

1
( x x0 )2 f ( x0 ) + ...
2!

En intgrant de x0 x1, on obtient :

h2
h3

f ( x)dx = hf ( x0 ) +
f ( x0 ) + f ( x0 ) + ...
2!
3!

x1
x0

Comme : f1 = f ( x1 ) = f 0 + hf ( x0 ) +

h2
f ( x0 ) + ...
2!

h2
h
h3

f ( x0 ) = ( f1 f 0 ) f ( x0 ) + ...
en multipliant par h/2 , on a :
2!
2
4
et lintgrale devient :

x1
x0

h
h3
h3
h
h3

f ( x)dx = hf ( x0 ) + [ ( f1 f 0 )
f ( x0 )] + [ f ( x0 )] + ... = ( f 0 + f1 )
f ( x0 ) + ...
2
4
3!
2
12

Lintgrale totale vaut :

xn
x0

h
h2 n 1
f ( x)dx [ f 0 + 2 f1 + 2 f 2 + ... + 2 f n 1 + f n ]
hf ( xk )
2
12 k = 0

Comme le dernier terme est une approximation de

xn =b
x0 = a

f ( x)dx

en le remplaant par

f (b) f (a) , on obtient la formule des trapzes amliore :

h
h2
f ( x)dx [ f 0 + 2 f1 + 2 f 2 + ... + 2 f n 1 + f n ] [ f (b) f (a)]
2
12

Lerreur commise est proportionnelle h4 , et cette mthode est donc dordre 4.


Cette formule montre galement que la formule des trapzes est bien dordre 2 et que son
erreur est donne par :

h2
E (h) = (b a) f ( ) , [a,b].
12
On peut galement faire un programme pour calculer lintgrale I.
Celui-ci appel 'trapez.m' par exemple, est list ci-dessous :
function I=trapez_v(f,h)
I=(sum(f)-(f(1)+f(length(f)))/2)*h;

54

Chapitre III: Applications des mthodes numriques avec MATLAB

Exemple :

Considrons par exemple la fonction intgrer : f4x5 x - 2x  1 sur un intervalle [-10,8]

o le pas est "h" gal 1. En mode interactif dans MATLAB (mode commande), avant de
lancer le programme 'trapez.m', on donne la fonction f ainsi que ses bornes :
>>x=-10:1:8;
>>f=x.^2+2*x-1;
>>h=1;

On excute ensuite le programme 'trapez.m', et on obtient :


>>I=trapez_v(f,h)
I=
453

5. 2 Mthode de Simpson
Cest une mthode qui quivaut remplacer la fonction intgrer par des paraboles dfinies
sur des sous-intervalles comprenant trois abscisses dintgration successives.
On suppose que lintervalle [a,b] est partag en n sous-intervalles gaux :
[xi-1, xi] ,tels que xi = a + ih , avec h = (b-a)/n .
On groupe les points par trois, n doit donc tre pair
a = x0, x1, x2 | x2, x3, x4 | |xn-2, xn-1, xn | = b.
Et on remplace, sur chaque intervalle [xi-1, xi+1], la fonction f par une parabole.
Pour lintervalle [x0, x2], la courbe reprsente par f(x) est approche par la parabole
dquation :

p( x) = f 0
= f0

( x x1 )( x x2 )
( x x0 )( x x2 )
( x x0 )( x x1 )
+ f1
+ f2
( x0 x1 )( x0 x2 )
( x1 x0 )( x1 x2 )
( x2 x0 )( x2 x1 )

( x x1 )( x x2 )
( x x0 )( x x2 )
( x x0 )( x x1 )
+ f1
+ f2
2
2
2h
h
2h 2

et lintgrale est alors approche par :

x2
x0

x2
h
f ( x)dx x p( x)dx = [ f 0 + 4 f1 + f 2 ]
0
3

55

Chapitre III: Applications des mthodes numriques avec MATLAB

En rptant ce procd pour les n (pair !) sous-intervalles, on a finalement la


Formule de Simpson :

h
f ( x)dx [ f 0 + 4 f1 + 2 f 2 + 4 f 3 + ... + 2 f n 2 + 4 f n 1 + f n ]
3

Cette formule est exacte pour les polynmes f(x) de degr 3.


Tout comme pour la mthode des trapzes, on peut obtenir une formule de Simpson
amliore :

h
h4
f ( x)dx [ f0 + 4 f1 + 2 f 2 + 4 f3 + ... + 2 f n 2 + 4 f n 1 + f n ]
[ f (b) f (a)]
3
180

Lerreur de cette formule est de lordre de h6.


La mthode de Simpson est donc dordre 4 et son erreur est donne par :

E ( h) =

h4
(b a) f ( 4 ) ( ) ,
180

[a,b].

6. Applications
1. Ecrire le code MATLAB qui permet de rsoudre le systme dquations linaire par la
mthode de Gauss-Seidel.
2. Ecrire le code MATLAB qui permet de rsoudre lquation xex = 1par la mthode de la
scante.
3. Ecrire le code MATLAB qui permet dvaluer l'intgrale f4x5 1 - e7 sur l'intervalle

[0 ,2] avec la mthode de Simpson pour n=2 , n=4 , n=8 et n=16 .

56

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Chapitre IV : Calcul des structures (barres et poutres) selon la


Mthode des lments Finis (MEF) par MATLAB
1. Introduction
La mthode des Elments Finis consiste dcouper la structure en lments de forme simple
et choisir une approximation du dplacement sur chaque subdivision.
Pour analyser un phnomne naturel en gnral ou un problme dingnierie en particulier, on
est souvent amen dvelopper un modle mathmatique pouvant dcrire dune manire
aussi fiable que possible le problme en question.
Avec les progrs enregistrs dans le domaine de linformatique et les performances des
ordinateurs de plus en plus grandes ; plusieurs techniques de rsolution numrique ont t
ainsi dveloppes et appliques avec succs pour avoir des solutions satisfaisantes des
problmes dingnierie trs varis.
La mthode des lments finis est lune des techniques numriques les plus puissantes.
Lun des avantages majeurs de cette mthode est le fait quelle offre la possibilit de
dvelopper un programme permettant de rsoudre, avec peu de modifications, plusieurs types
de problmes. En particulier, toute forme complexe dun domaine gomtrique o un
problme est bien pos avec toutes les conditions aux limites, peut tre facilement trait par la
mthode des lments finis.

2. Elment Barre
L'lment barre linaire est un lment fini unidimensionnel o les coordonnes globale et
locale concident. Il schmatise un composant [IJ] dune structure qui travaille uniquement en
traction ou compression. Llment linaire possde un module d'lasticit E, une aire de
section transversale A, et la longueur L.
Chaque lment de barre linaire a deux nuds comme le montre la Figure 5.1. Dans ce cas,
la matrice de rigidit de l'lment est donne par :
K==

>?

@
>?

>?

@
>?
@

57

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

x
L

Figure 5.1 : Elment Barre

La matrice de rigidit pour l'lment de barre linaire est similaire celle de l'lment de
ressort avec la rigidit remplace par EA / L. L'lment barre linaire a seulement deux
degrs de libert, une chaque nud. En consquence, pour une structure n nuds, la
matrice de rigidit globale K sera de taille n n (puisque nous avons un degr de libert
chaque nud).
Une fois la matrice de rigidit globale K est obtenue, nous avons l'quation de la structure
suivante:

BKDEUG EFG
O U est le vecteur de dplacement nodal global et F est le vecteur de force nodale globale.
cette tape, les conditions aux limites sont appliques manuellement pour les vecteurs U et
F ; ce systme dquation est rsolu par la sparation et l'limination de Gauss. Enfin, une
fois les dplacements et les ractions inconnues sont dtects, les forces sont obtenues pour
chaque lment comme suit:

EfG BkDEuG

O f est le vecteur- force de dimension (2 x 1) de l'lment et u est le vecteur- dplacement de


dimension (2 1) de llment. Les tensions dans les lments sont obtenues en divisant les
forces par les sections transversales correspondantes A.

58

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Les fonctions MATLAB utilises pour le calcul des lments barres linaires sont:

Calcul de la matrice de rigidit de chaque lment barre


function y = LinearBarStiffness(E,A,L)
% E module d'lasticit,

L longueur,

section de l'lment

% la dimension de la matrice de rigidit est 2x2


y = [E*A/L -E*A/L ; -E*A/L E*A/L];

Assemblage des matrices de rigidit


function y = LinearBarAssemble(K,k,i,j)
K(i,i) = K(i,i) + k(1,1) ;
K(i,j) = K(i,j) + k(1,2) ;
K(j,i) = K(j,i) + k(2,1) ;
K(j,j) = K(j,j) + k(2,2) ;
y = K;

Calcul du vecteur de force pour chaque lment barre


function y = LinearBarForces(k,u)
y = k * u;

Calcul de la contrainte
function y = LinearBarStresses(k, u, A)
% vecteur de dplacement u, A

section de l'lment

y = k * u/A;

Par Exemple :
Considrons l'ensemble, constitu de deux barres linaires comme le montre la Figure cidessous
3

2 P

1m
m

1.5m

Figure 5.2 : Elment de deux-Barres pour lexemple 1


59

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Donnes :
E = 210 GPa, A = 0.003m2, P = 10 kN, dplacement du nud 3 est de 0,002 m vers la droite.
Dterminer:
1. la matrice de rigidit globale de la structure.
2. le dplacement au noeud 2.
3. les ractions aux nuds 1 et 3.
4. La contrainte dans chaque barre.
Solution:
tape 1 - La discrtisation du domaine:
Ce problme est dj discrtis. Le domaine est divis en deux lments et trois noeuds. Les
units utilises dans les calculs MATLAB sont kN et le mtre. Le Tableau ci-dessous montre
la connexion de l'lment pour cet exemple.

Element

Noeud 1

Noeud 2

tape 2 calcul des matrices de rigidit


Les deux matrices de rigidit k1 et k2 sont obtenues en faisant appel la fonction Linear Bar
Stiffness de MATLAB. Chaque matrice a la taille 2 2.

E=210e6;
A=0.003;
L1=1.5;
L2=1;
k1= LinearBarStiffness (E,A,L1)
k1 =
420000
-420000

-420000
420000

k2= LinearBarStiffness (E,A,L2)


k2 =
630000
-630000

-630000
630000
60

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

tape 3 Assemblage de la matrice de rigidit globale:


tant donn que la structure comporte trois nuds, la taille de la matrice de rigidit globale
est de 3 x 3.
Par consquent, pour obtenir K nous avons d'abord mis en place une matrice nulle de taille 3
3, puis faire deux appels la fonction LinearBarAssemble MATLAB puisque nous avons
deux lments de barre linaires dans la structure. Chaque appel la fonction assemble un
lment. Ce qui suit sont les commandes MATLAB:
K=zeros(3,3)
K=
0
0
0

0
0
0

0
0
0

K= LinearBarAssemble (K,k1,1,2)
K=
420000
-420000
0

-420000
420000
0

0
0
0

K= LinearBarAssemble (K,k2,2,3)
K=
420000 -420000
-420000 1050000
0
-630000

0
-630000
630000

tape 4 - Application des conditions aux limites:

En utilisant la matrice de rigidit globale obtenue l'tape prcdente, on obtient le systme


dquation suivant :
420000
J420000
0

420000
1050000
630000

61

U'
F'
0
U
F
630000K , . L , . L
F/
630000 U/

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Les conditions aux limites pour ce problme sont donnes titre:


U1 = 0, F2 = -10, U3 = 0,002
nous obtenons:

420000
J420000
0

420000
1050000
630000

F'
0
0
630000K , U. L ,10L
F/
630000 0.002

tape 5 - la rsolution des quations:

La rsolution du systme d'quations obtenu sera effectue par partitionnement


(manuellement) et l'limination de Gauss (avec MATLAB).
Nous obtenons:

[1050000] U2 + [-630 000] (0,002) = {-10}


La solution du systme ci-dessus est obtenue en utilisant MATLAB comme suit. Notez que
l'oprateur barre oblique inverse "\" est utilis pour l'limination de Gauss.
k=K(2,2);
k0=K(2,3);
u0=0.002;
f=[-10];
f0=f-k0*u0
f0 =
1250
u=k\f0
u=
0.0012

Le dplacement au nud 2 est 0.0012 m.

tape 6 - Post-traitement:
Dans cette tape, nous obtenons les ractions au niveau des nuds 1 et 3, et la contrainte dans
chaque barre en utilisant MATLAB comme suit. Nous avons d'abord mis en place le vecteur
de dplacement nodal U global, puis nous calculons le vecteur de force nodale global F.

62

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

U=[0 ; u ; u0]
U=
0
0.0012
0.0020
F=K*U
F=
-500.0000
-10.0000
510.0000

Ainsi, les ractions au niveau des nuds 1 et 3 sont des forces de 500 kN (dirigs vers la
gauche) et 510 kN (dirigs vers la droite), respectivement. Il est clair que la condition
dquilibre

statique

est

satisfaite.

Ensuite, nous mettons en place l'lment nodal vecteurs dplacement U1 et U2, puis nous
calculons les vecteurs de force f1 et f2 en faisant appel la fonction LinearBarForces de
MATLAB. Enfin, on divise chaque lment de la force par l'aire de section transversale de
l'lment pour obtenir les contraintes dans l'lment.
u1=[0 ; U(2)]
u1 =
0
0.0012
f1=LinearBarForces(k1,u1)
f1 =
-500.0000
500.0000
sigma1=f1/A
sigma1 =
1.0e+005 *
-1.6667
1.6667

63

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

u2=[U(2) ; U(3)]
u2 =
0.0012
0.0020
f2= LinearBarForces (k2,u2)
f2 =
-510.0000
510.0000
sigma2=f2/A
sigma2 =
1.0e+005 *
-1.7000
1.7000

La contrainte dans l'lment 1 est 1.667 105 kN / m2 (166.7 MPa, traction) et la contrainte
dans l'lment 2 est de 1.7 105 kN / m2 (170MPa, traction). Alternativement, nous pouvons
obtenir les contraintes lmentaires directement en faisant appel aux fonctions MATLAB
LinearBarStresses . On obtient les mmes rsultats que ci-dessus.
s1= LinearBarStresses (k1,u1,A)
s1 =
1.0e+005 *
-1.6667
1.6667
s2= LinearBarStresses (k2,u2,A)
s2 =
1.0e+005 *
-1.7000
1.7000

64

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

3. Structures planes treillis


Les structures treillis sont constitues par des assemblages de barres lies par des joints de
telle sorte que le chargement extrieur soit repris uniquement par des forces axiales dans les
barres. La Figure 5.3 montre un exemple de systme treillis compos dun assemblage de 13
barres et soumis un chargement de deux forces.

Figure 5.3 : Systme treillis

L'lment plan de treillis est un lment fini deux dimensions avec les deux coordonnes
locales et globales. Il est caractris par des fonctions de forme linaire. L'lment plan en
treillis a un module d'lasticit E, aire de section transversale A, et la longueur L. Chaque
lment de treillis plan a deux nuds est inclin avec un angle mesur dans le sens
antihoraire partir de l'axe X positif global comme le montre la Figure 5.4 .Soit C = cos et S
= sin . Dans ce cas, la matrice de rigidit de l'lment est donne par :

CS C CS
S C
V
S CS S U
NO R CS
k= R
P C CS
C
CS U
R
U
S T
Q CS S CS

x
L

Figure 5.4 : Elment dun treillis

65

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Llment plan de treillis a quatre degrs de libert - deux chaque noeud. En consquence,
pour une structure n nuds, la matrice de rigidit globale K sera de taille 2n 2n (puisque
nous avons deux degrs de libert chaque nud). La matrice de rigidit K globale est
assemble en faisant des appels la fonction MATLAB.

Une fois la matrice de rigidit globale K est obtenue, nous avons l'quation de la structure
suivante:

BKDEUG EFG

O U est le vecteur de dplacement global nodal et F est vecteur de force global nodale. A
cette tape, les conditions aux limites sont appliques manuellement pour les vecteurs U et F.
Puis le systme dquations linaires obtenue est rsolu par la sparation et l'limination de
Gauss. Enfin, une fois les dplacements et les ractions inconnues sont calculs, la force est
obtenue pour chaque lment de la faon suivante:

EA
BC  S C SDEuG
L

O f est la force dans l'lment (un scalaire) et u est le vecteur- dplacement de dimension (4
1) lment de dplacement vecteur. La contrainte de l'lment est obtenue en divisant la
force

de

l'lment

par

sa

66

section

transversale

A.

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Les fonctions MATLAB utilises pour le calcul des lments treillis sont les suivantes :
Calcul de la longueur de llment en fonction des coordonnes du premier noeud (x1,
y1) et du second nud (x2, y2).
function y = Truss2dLength(x1,y1,x2,y2)
y = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));

Calcul de la matrice de rigidit de chaque lment plan du treillis


function y = Truss2dStiffness (E,A,L, theta)
% E module d'lasticit,

L longueur,

angle theta (en degr), A

section de l'lment
% la dimension de la matrice de rigidit est 4x4
x = theta*pi/180;
C = cos(x);
S = sin(x);
y = E*A/L*[C*C C*S -C*C -C*S ; C*S S*S -C*S -S*S ; -C*C -C*S C*C C*S
; -C*S -S*S C*S S*S] ;

Assemblage des matrices de rigidit des lments plan du treillis


function y = Truss2dAssemble(K,k,i,j)
K(2*i-1,2*i-1) = K(2*i-1,2*i-1) + k(1,1) ;
K(2*i-1,2*i) = K(2*i-1,2*i) + k(1,2) ;
K(2*i-1,2*j-1) = K(2*i-1,2*j-1) + k(1,3) ;
K(2*i-1,2*j) = K(2*i-1,2*j) + k(1,4) ;
K(2*i,2*i-1) = K(2*i,2*i-1) + k(2,1) ;
K(2*i,2*i) = K(2*i,2*i) + k(2,2) ;
K(2*i,2*j-1) = K(2*i,2*j-1) + k(2,3) ;
K(2*i,2*j) = K(2*i,2*j) + k(2,4) ;
K(2*j-1,2*i-1) = K(2*j-1,2*i-1) + k(3,1) ;
K(2*j-1,2*i) = K(2*j-1,2*i) + k(3,2) ;
K(2*j-1,2*j-1) = K(2*j-1,2*j-1) + k(3,3) ;
K(2*j-1,2*j) = K(2*j-1,2*j) + k(3,4) ;
K(2*j,2*i-1) = K(2*j,2*i-1) + k(4,1) ;
K(2*j,2*i) = K(2*j,2*i) + k(4,2) ;
K(2*j,2*j-1) = K(2*j,2*j-1) + k(4,3) ;
K(2*j,2*j) = K(2*j,2*j) + k(4,4) ;
y = K;

67

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Calcul des forces


function y = Truss2dforce(E,L,theta,u)
% E module d'lasticit,

L longueur,

angle theta ( en degr),

vecteur de dplacement u
x = theta* pi/180;
C = cos(x);
S = sin(x);
y = E*A/L*[-C -S C S]* u;

Calcul des contraintes


function y = Truss2dStress(E,L,theta,u)
% E module d'lasticit,

L longueur,

vecteur de dplacement u
x = theta * pi/180;
C = cos(x);
S = sin(x);
y = E/L*[-C -S C S]* u;

68

angle theta ( en degr),

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

4. Elment Poutre
Cest un lment unidimensionnel [IJ] qui reprend toutes les hypothses des poutres longues.
Il intgre les nergies deffort normal, deffort tranchant, de flexion et de torsion.
L'lment poutre est un lment fini deux dimensions o les coordonnes locale et globale
concident. Il est caractris par des fonctions de forme linaire. L'lment de poutre a un
module d'lasticit E, moment d'inertie I, et la longueur L. Chaque lment de poutre
comporte deux nuds et est suppos tre horizontal comme reprsent sur la figure 5.5. Dans
ce cas, la matrice de rigidit de l'lment est donne par la matrice suivante, en supposant que
la dformation axiale est nglige :

S 12 6L 12
4L 6L
>Z R 6L
k= [ R
@ 12 6L
12
R
Q 6L 2L 6L
i

6L
V
2L U

6L U

4L T

E ,I

j
X. x

Figure 5.5 : Elment poutre

Llment

poutre a quatre degrs de libert - deux chaque nud (un dplacement

transversal et une rotation). La convention de signe utilise est que le dplacement est positif
si il pointe vers le haut et la rotation est positive si elle est dans le sens antihoraire. En
consquence, pour une structure avec n nuds, la matrice de rigidit globale K sera de taille
(2n 2n) (puisque nous avons deux degrs de libert chaque nud). La matrice de rigidit
K globale est assemble en faisant appels la fonction BeamAssemble de MATLAB qui
est crite spcifiquement cette fin. Ce procd va tre illustr en dtail dans les exemples.

69

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Les fonctions MATLAB utilises pour le calcul des lments poutres sont les suivantes :
Calcul de la matrice de rigidit de chaque lment poutre
function y = BeamStiffness(E,I,L)
% E module d'lasticit,

L longueur,

section de l'lment

% la dimension de la matrice de rigidit est 4x4


y = E*I/(L*L*L) * [12 6*L -12 6*L ; 6*L 4*L*L -6*L 2*L*L ; -12 -6*L
12 -6*L ; 6*L 2*L*L -6*L 4*L*L]

Assemblage des matrices de rigidit


function y = BeamAssemble(K,k,i,j)
K(2*i-1,2*i-1) = K(2*i-1,2*i-1) + k(1,1);
K(2*i-1,2*i) = K(2*i-1,2*i) + k(1,2);
K(2*i-1,2*j-1) = K(2*i-1,2*j-1) + k(1,3);
K(2*i-1,2*j) = K(2*i-1,2*j) + k(1,4);
K(2*i,2*i-1) = K(2*i,2*i-1) + k(2,1);
K(2*i,2*i) = K(2*i,2*i) + k(2,2);
K(2*i,2*j-1) = K(2*i,2*j-1) + k(2,3);
K(2*i,2*j) = K(2*i,2*j) + k(2,4);
K(2*j-1,2*i-1) = K(2*j-1,2*i-1) + k(3,1);
K(2*j-1,2*i) = K(2*j-1,2*i) + k(3,2);
K(2*j-1,2*j-1) = K(2*j-1,2*j-1) + k(3,3);
K(2*j-1,2*j) = K(2*j-1,2*j) + k(3,4);
K(2*j,2*i-1) = K(2*j,2*i-1) + k(4,1);
K(2*j,2*i) = K(2*j,2*i) + k(4,2);
K(2*j,2*j-1) = K(2*j,2*j-1) + k(4,3);
K(2*j,2*j) = K(2*j,2*j) + k(4,4);
y = K;

Calcul du vecteur de force pour chaque lment poutre


function y = BeamForces(k,u)
y = k * u;

70

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Calcul du diagramme des moments flchissants


function y = BeamShearDiagram(f, L)
x = [0 ; L];
z = [f(1) ; -f(3)];
hold on;
title(' Diagramme des moments flchissants ');
plot(x,z);
y1 = [0 ; 0];
plot(x,y1,'k')

Calcul du diagramme des efforts tranchants


function y = BeamMomentDiagram(f, L)
x = [0 ; L];
z = [-f(2) ; f(4)];
hold on;
title(' Diagramme des efforts tranchants');
plot(x,z);
y1 = [0 ; 0];
plot(x,y1,'k')

Par exemple :
Considrons la poutre reprsente sur la figure 5.7 ci-dessous.
1

Figure 5.7: Poutre avec deux lments

Donnes :
E = 210GPa, I = 60 10-6 m4, P = 20 kN, et L = 2m,

71

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

Dterminer:
1. la matrice de rigidit globale de la structure.
2. le dplacement vertical au nud 2.
3. les rotations aux nuds 2 et 3.
4. les ractions aux nuds 1 et 3.
5. les forces (efforts tranchants et moments) dans chaque lment.
6. le diagramme des efforts tranchants pour chaque lment.
7. le diagramme des moments de flexion pour chaque lment.

Solution:
tape 1 - La discrtisation du domaine:

Nous allons mettre un nud (nud 2) l'emplacement de la force concentre afin que nous
puissions dterminer les dplacements, les rotations, les efforts tranchants et les moments) en
ce point. Alternativement, nous pouvons considrer la structure comme compose d'un
lment de poutre et seulement deux nuds et utiliser les forces nodales quivalentes pour
prendre en compte la charge concentre.
Cependant, il est ncessaire de trouver le dplacement vertical sous la charge concentre.
Par consquent, le domaine est divis en deux lments, et trois nuds. Les units utilises
dans les calculs MATLAB sont kN et le mtre. Le Tableau 7.1 montre la connexion de
l'lment pour cet exemple.

Element

Noeud 1

Noeud 2

72

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

tape 2 -Calcul des matrices de rigidit:


Les deux matrices de rigidit lment (k1 et k2) sont obtenues en faisant appel la fonction
BeamStiffness de MATLAB. Chaque matrice a une taille 4 4.
E=210e6;
I=60e-6;
L=2;
k1= BeamStiffness (E,I,L)
k1 =

18900

18900

-18900

18900

18900

25200

-18900

12600

-18900

-18900

18900

-18900

18900

12600

-18900

25200

k2= BeamStiffness (E,I,L)


k2 =

18900

18900

-18900

18900

18900

25200

-18900

12600

-18900

-18900

18900

-18900

18900

12600

-18900

25200

tape 3 - assemblage de la matrice de rigidit globale:


tant donn que la structure comporte trois nuds, la taille de la matrice de rigidit globale
est de 6 x 6.
Par consquent, pour obtenir K nous avons d'abord mis en place une matrice nulle de taille 6
6, puis faire deux appels la fonction Beam Assemble MATLAB puisque nous avons deux
lments de poutre de la structure. Chaque appel la fonction assemble un lment. Ce qui
suit sont les commandes MATLAB :

73

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

K=zeros(6,6)
K=
0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

K= BeamAssemble (K,k1,1,2)
K=
18900
18900
-18900
18900
0
0

18900
25200
-18900
12600
0
0
0
0

-18900
-18900
18900
-18900
0
0

18900
12600
-18900
25200
0
0
0
0

0
0
0
0

0
0
0
0

K= BeamAssemble (K,k2,2,3)
K=
18900
18900
-18900
18900
0
0

18900
25200
-18900
12600
0
0

-18900
-18900
37800
0
-18900
18900

18900
0
12600
0
0
-18900
50400 -18900
-18900 18900
12600 -18900

74

0
0
18900
12600
-18900
25200

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

tape 4 - Application des conditions aux limites:


La matrice pour cette structure est obtenue de la manire suivante en utilisant la matrice de
rigidit globale obtenue l'tape prcdente:
18.9 18.9 18.9
0
0 U 1y F1y
18.9
18.9
25.2 18.9 12.6
0
0 1 M 1

18.9 18.9 37.8


18.9 18.9 U 2 y F2 y
0
103

18
.
9
12
.
6
0
50
.
4

18
.
9
12
.
6
2

M 2
0
18.9 18.9 18.9 18.9 U 3 y F3 y
0

0
18.9
12.6 18.9 25.2 3 M 3
0

Insertion des conditions ci-dessous nous obtenons:


U1y = 1 = 0, F2y = 20, M2 = 0, U3y = 0, M3 = 0
18.9 18.9 18.9
0
0 0 F1y
18.9
18.9
25.2 18.9 12.6
0
0 0 M 1

18.9 18.9 37.8


0
18.9 18.9 U 2 y 20
103

12.6
0
50.4 18.9 12.6 2 0
18.9
0
0
18.9 18.9 18.9 18.9 0 F3 y

0
18.9
12.6 18.9 25.2 3 0
0

tape 5 - la rsolution des quations:


La rsolution du systme d'quations sera effectue par partitionnement (manuellement) et
l'limination de Gauss (avec MATLAB). Nous avons d'abord partager le systme dquations
par l'extraction des sous-matrices en lignes 3-4 et 3-4 colonnes, lignes 3-4 et de colonne 6,
ligne 6 et colonnes 3-4, et de la ligne et de la colonne 6. On obtient donc:

37.8 0 18.9 U 2 y 20
0 50.4 12.6 = 0

18.9 12.6 25.2 3 0

75

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

La solution du systme ci-dessus est obtenue en utilisant MATLAB comme suit. Notez que
l'oprateur barre oblique inverse "\" est utilis pour l'limination de Gauss.
k=[K(3:4,3:4) K(3:4,6) ; K(6,3:4) K(6,6)]
k=
37800
0
18900

0
50400
12600

18900
12600
25200

f=[-20 ; 0 ; 0]
f=
-20
0
0
u=k\f
u=
1.0e-003 *
-0.9259
-0.1984
0.7937

Il est maintenant clair que le dplacement vertical au noeud 2 est 0.9259m (vers le bas), tandis
que les rotations aux nuds 2 et 3 sont 0,1984 rad (sens horaire) et 0,7937 rad (sens antihoraire), respectivement.

tape 6 - Post-traitement:
Dans cette tape, nous obtenons les ractions au niveau des nuds 1 et 3,

les efforts

tranchants et les moments dans chaque lment de poutre l'aide de MATLAB comme suit.
Nous avons d'abord mis en place le vecteur de dplacement nodal U global, puis nous
calculons le vecteur global de force nodale F.

76

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

U=[0 ; 0 ; u(1) ; u(2) ; 0 ; u(3)]


U=
1.0e-003 *
0
0
-0.9259
-0.1984
0
0.7937
F=K*U
F=
13.7500
15.0000
-20.0000
0
6.2500
-0.0000

Ainsi, les ractions au noeud 1 sont une force verticale de 13,75 kN (vers le haut) et un
moment de 15 kN.m (sens anti-horaire) tandis que la raction au nud 3 est une force
verticale de 6,25 kN (vers le haut). Il est clair que la condition dquilibre statique est
satisfaite. Ensuite, nous mettons en place les vecteurs dplacements nodaux U1 et U2 de
llment, puis nous calculons les vecteurs forces nodales f1 et f2 de llment en faisant
appels la fonction BeamForces de MATLAB.

77

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

u1=[U(1) ; U(2) ; U(3) ; U(4)]


u1 =
1.0e-003 *
0
0
-0.9259
-0.1984
f1= BeamForces (k1,u1)
f1 =
13.7500
15.0000
-13.7500
12.5000
u2=[U(3) ; U(4) ; U(5) ; U(6)]
u2 =
1.0e-003 *
-0.9259
-0.1984
0
0.7937
f2= BeamForces (k2,u2)
f2 =
-6.2500
-12.5000
6.2500
-0.0000

Enfin,

nous

appelons

les

fonctions

MATLAB

BeamShearDiagram

et

BeamMomentDiagram pour tracer le diagramme des efforts tranchants et le diagramme


des moments flchissants, pour chaque lment.

78

Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB

5. Application
Considrons le treillis plan reprsent sur la figure. 5.8.

Donnes :
E = 210GPa et A = 1 10-4 m2.

Dterminer:
1. la matrice de rigidit globale de la structure.
2. le dplacement horizontal au nud 2.
3. les dplacements horizontal et vertical au nud 3.
4. les ractions aux nuds 1 et 2.
5. La contrainte dans chaque lment.

Figure 5.8: Treillis trois lments

79

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Chapitre V : Calcul des structures sous effets dynamique et


sismique par MATLAB.
1. Introduction
Un des mouvements les plus importants observs dans la nature est le mouvement oscillatoire,
en particulier le mouvement harmonique : oscillations dun pendule, dune masse attache
un ressort, dun btiment, etc.
Dans le cas des oscillations de systmes mcaniques conservatifs isols, on parle
doscillations libres ; en prsence de frottement, lamplitude des oscillations dcrot et on
observe des oscillations amorties. Si les oscillations sont entretenues par une action
extrieure, on parle doscillations forces.
Un systme rel comprend gnralement plusieurs masses relies entre elles par des lments
de types ressort et amortisseur ce qui nous ramne la notion de systmes plusieurs degrs
de libert.
Pour comprendre les principes de base, une suite de programmes informatiques dans

MATLAB est donne pour calculer les structures sous effets dynamique et sismique.

2. Systmes 1 degr de libert libres non amortis


2.1 quations du mouvement.

Soit une masse m supporte par un ressort k. On parle doscillations non amorties quand
lamortissement est nul, cest--dire c=0.

Figure 4.1 : Systme non amorti

80

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Bilan des forces en position dforme :

Figure 4.2: Forces prsentes dans un systme non amorti

Ainsi, selon la loi de Newton :

# F7 mx\ 4t5

kx4t5 mx\ 4t5

mx\ 4t5 - kx4t5 0

(1)

En posant

k
$ ^
m

lquation (1) devient :

x\ - .$ x 0

La solution gnrale de lquation :

x4t5 ^x_. - `

V_ .
V_
b cos J$ t  arctg `
bK
$
$ x_

2.2 Calcul de la rponse libre 1 ddl


Soit un systme masse-ressort o k= 50 N/m; m = 1.5 kg, excit par une vitesse initiale de
1m/s.

La fonction suivante ssdl1 crite en MATLAB permet de calculer les rponses vibratoires
dun systme non amorti 1 ddl,

81

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

function[a,b,c,d,e]= ssdl(m,k,x0,v0,tf)
%ssdl(m,k,x0,v0,tf) trace la rponse libre. m et k

reprsentent

respectivement la masse et la raideur du systme.les arguments x0 et


vo reprsentent les conditions initiales en dplacement et en
vitesse. tf reprsente le temps d'observation
w=sqrt(k/m) ;% pulsation naturelle non amortie
t=0:tf/1000:tf;
A=sqrt(((v0)^2+(x0*w)^2)/w^2);%Amplitude de l'exponentielle
Phi=atan2(x0*w, v0);% phase
x=A*sin(w*t+Phi); % rponse non amortie
plot(t,x)
xlabel('Temps (s)')
ylabel('Dplacement (m)')
title ('Rponse temporelle libre')

Aprs excution, on obtient :


ssdl1 (1.5,50,0,1,10)

Rponse temporelle libre


0.2
0.15

Dplacement (m)

0.1
0.05
0
-0.05
-0.1
-0.15
-0.2

5
6
Temps (s)

Figure 4. 3: Rponse temporelle libre


82

10

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

3. Systmes 1 degr de libert libres amortis


3.1 quations du mouvement.
Soit une masse m supporte par un ressort k et un amortisseur c.
Lamortisseur de type visqueux oppose une force proportionnelle la vitesse du dplacement:
Fb = -Cx'(t).
- Le ressort s'oppose au dplacement par une force: FB = -Kx(t)
- La vibration est libre. La force dexcitation est donc nulle.

Figure 4.4: Systme masse ressort amortisseur

Bilan des forces en position dforme :

Figure 4.5: Forces et action de la masse prsentes dans un systme amorti

Ainsi, selon la loi de Newton, lquation du mouvement scrit :

# F7 mx\ 4t5

kx4t5  cxe 4t5 mx\ 4t5

mx\ 4t5 - cxe 4t5 - kx4t5 0

83

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Qui peut scrire aussi :

x\ 4t5 - 2xe - .$ x 0

(2)

c
m
Avec :

: Facteur damortissement[s-1]
La solution de lquation est de type :
x(t)= A ert
x(t)=

C1 er1t

(3)
+

C2 er2t

(4)

C2- 4MK < 0: Sous amortissement (Les solutions sont complexes)

Les deux formulations pour x(t) deviennent respectivement :


jfg hk'<l

x4t5 e<fg h iAe


A
B

<jfg hk'<l

- Be

xe 405 - i - k.  1m $ n x40

2$ k.  1

xe 405  i  k.  1m $ n x40


2$ k.  1

C2- 4MK > 0: Sur- amortissement (Les solutions sont relles)


Dans ce cas, les racines de lquation caractristique (3) sont relles et le systme sapproche
lentement de sa position dquilibre plutt que de vibrer.

C2-4KM = 0 : Amortissement critique


Ce cas reprsente la frontire entre les deux rgimes prcdents. Cette fois-ci, les racines de
lquation (3) sont gales ; le systme ne vibre pas et sapproche rapidement de sa position
dquilibre.
84

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

3.2 Calcul de la rponse libre amortie 1 ddl


Soit un systme masse-ressort-amortisseur o k = 163 N/m; c = 2.5 N.s/m; m = 1 kg, excit
par une vitesse initiale de 1m/s.
La fonction suivante ssdl2 crite en MATLAB permet de calculer les rponses vibratoires
dun systme 1 ddl, selon le type damortissement.

function[a,b,c,d,e,f]= ssdl2(m,c,k,x0,v0,tf)
%ssdl(m,c,k,x0,v0,tf) trace la rponse libre. m,c et k reprsentent
respectivement la masse, l'amortissent et la raideur du systme.les
arguments x0 et vo reprsentent les conditions initiales en dplacement
et en vitesse. tf reprsente le temps d'observation
w=sqrt(k/m) ;% pulsation naturelle
z=c/2/w/m;%calcul du rapport d'amortissement
wd=w*sqrt(1-z^2);% pulsation naturelle amortie
t=0:tf/1000:tf;
if z<1
A=sqrt(((v0+z*w*x0)^2+(x0*wd)^2)/wd^2);%Amplitude de l'exponontielle
Phi=atan2(x0*wd, v0+z*w*x0);% phase
x=A*exp(-z*w*t).*sin(wd*t+Phi); % rponse sous amortie
elseif z==1
a1=x0;
a2=v0+w*x0;
x=(a1+a2*t).*exp(-w*t);% rponse critique
else
a1=(-v0+(-z+sqrt(z^2-1))*w*x0)/2/w/sqrt(z^2-1);
a2=(v0+(z+sqrt(z^2-1))*w*x0)/2/w/sqrt(z^2-1);
x=exp(-z*w*t).*(a1*exp(-w*sqrt(z^2-1)*t))+(a2*exp(w*sqrt(z^2-1)*t)); %
rponse sur amortie
end
plot(t,x)
xlabel('Temps(s)')
ylabel('Dplacement(m)')
title ('Rponse temporelle libre')

Aprs excution, on obtient :


ssdl2(1,2.5,163,0,1,10)

85

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Rponse temporelle libre


0.08

0.06

Dplacement (m)

0.04

0.02

-0.02

-0.04

-0.06

5
6
Temps (s)

10

Figure 4.6: rponse temporelle libre amortie

4. Calcul dune structure sous effets dynamiques

(Systmes plusieurs degrs de

libert)
Un systme rel comprend gnralement plusieurs masses relies entre elles par des lments
de types ressort et amortisseur.
Le nombre de paramtres indpendants ncessaires pour dterminer la position relative de
chaque masse est appel nombre de degrs de libert ; un systme comportant N masses
susceptibles de se dplacer dans un plan possde donc 2N degrs de libert.
Pour chaque degr de libert, on tablira les conditions dquilibre, comportant les effets dus
lacclration et ceux dus aux autres actions extrieures du systme (Newton), au point
considr.
Intressons-nous au cadre deux degrs de libert illustr figure 4.5 afin de dvelopper les
quations dans le cas de structures plusieurs degrs de libert.

86

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Figure 4.7: Cadre deux degrs de libert

Les quations du mouvement pour chacun des deux degrs de libert de la structure de la
figure 4.7 , en cas doscillations libres non amorties, sexpriment de la manire suivante :

Mx\ - Kx 0

Celles-ci peuvent aussi sexprimer sous forme matricielle :

m'
0

0 x\ '
k
b ` b - ` ''
m. x\ .
k .'

k'. x'
bp q 0
k .. x.

Si M et K sont constantes dans le temps, le systme dquations couples peut tre dcoupl
et transform en un systme doscillateurs simples. Les modes propres sobtiennent en
annulant le dterminant du systme afin dobtenir les solutions non triviales :

|.$ M - K| 0

Les dplacements relatifs x sexpriment alors en coordonnes modales par le changement de


variables suivant :

a''
x pa

.'

a'. Z'
a.. q `Z. b AZ

O A est la matrice des vecteurs modaux. Ses lignes sont formes des vecteurs propres. Le
vecteur z est le vecteur des coordonnes modales.

87

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Exemple :
La figure suivante illustre un portique en 2D de 5 niveaux. Il est
constitu de colonnes carres de section (60 x 60cm) et de
poutres infiniment rigides (I = ) avec un module dlasticit
E = 2. 106 kN / m.
La masse totale de chaque niveau (m = 100t).
Le portique est soumis un spectre de rponse tel que dfini
dans le RPA 2003 avec les paramtres de conception suivants:
Zone sismique II.a, sol rocheux et un facteur d'amortissement
( = 0,05).
valuer les points suivants:
(A).Frquences et modes propres ;
(B).Priodes correspondantes chaque mode de vibration ;
(C).Acclrations correspondantes chaque priode ;
(D).Dplacements correspondants chaque mode de vibration ;
(E).Dplacement maximum en fonction de la combinaison modale
(SRSS) ;
(F).Facteurs de participation modale.

Solution :
Le processus de dcomposition modale est illustr la Figure 4.6.Un systme n degrs de
libert est trait comme n oscillateurs simples.

88

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Figure 4.8: Dcomposition modale


1. Dfinition de la matrice globale de masse :

M=

m1
0

0
m2

0
0

0
0

0
0

0
0

m3
0

0
m4

0
0
0 =
0

100 0
0
0 100 0
0
0 100
0
0

m5

0
0

0
0

0
0
0

0
0
0

100 0
0 100

% Dfinir la matrice globale de masse


M = [100 0 0 0 0;
0 100 0 0 0;
0 0 100 0 0;
0 0 0 100 0;
0 0 0 0 100]

2. Dfinition de la matrice globale de rigidit :


Kc =
Ic =

12 EI C
h3

a 4 0 .6 4
=
= 0.0108 m 4
12
12

La rigidit de chaque tage est:


K I = K c = 2K c =

24 EI C 24 2 10 6 0.0108
=
= 19200 KN / m
h3
33

La matrice de rigidit de la structure est donne par :

K=

K1 + K 2
K2

K2
K2 + K3

0
K2

0
0

0
0

K3
0

K3 + K 4
K4

K3
K 4 + K5

K5

0
0
0 =19200
K 4
K5

% Dfinir la matrice de rigidit


K = 19200.*[2 -1 0 0 0;
-1 2 -1 0 0;
0 -1 2 -1 0;
0 0 -1 2 -1;
0 0 0 -1 1]

89

2 1 0
0
1 2 1 0
0 1 2 1
0
0

0
0

0
0
0 KN/m

1 2 1
0 1 1

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

3. Calcul des frquences et modes propres :


Bas sur la thorie de la dynamique des structures, le calcul des frquences et modes

propres est dtermin par la rsolution de lquation suivante :

[K M] = 0
2

[Modes,Omega]=eig(inv(M)*K)

132.5335
0
0
0
329.3511
0
0
0
15.5547
0
0

0.4557
0.5969
0.3260

0
0

0
0

0
0
0

0
0
0

543.5194
0
0
707.0414

0.5969 0.1699 0.5485


0.3260
0.1699 0.3260 0.4557 0.5485
0.5485 0.4557 0.1699 0.5969

0.1699 0.3260 0.5485 0.5969 0.4557


0.5485 0.4557 0.5969 0.3260 0.1669

4. Calcul des frquences :


% Calcul des frquences
Freq = zeros(5) ;
for i=1:5
Freq(i,i)= Omega(i,i)^0.5
end

11.5123
0
0
0
18.1480
0
0
0
3.9439
0
0

0
0

0
0

0
0
0

0
0
0

23.3135
0
0
26.5902

90

rad/sec

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

On obtient:

0.4557
0.5969
0.3260

1=

0.5969
0.1699
0.1699
0.3260
, 2= 0.5485 , 3= 0.4557 ,

0.1699
0.5485
1=11.5123rad/sec

0.3260
0.4557

0.5485
0.5969

2=18.1480rad/sec

4=

0.5485
0.3260
0.4557
0.5485
0.1699 , 5= 0.5969
0.5969
0.3260

3=3.9439rad/sec

4=23.13135 rad/sec 5=26.5902 rad/sec

5. Calcul des priodes correspondant chaque mode de vibration :


T =

% Calcul des priodes


T = zeros(5);
for i=1:5
T (i,i) = 2 * pi /Freq(i,i)
end

On obtient:

T=

0.5458
0
0
0
0.3462
0
0
0
1.5931
0
0

0
0

0
0

0
0
0

0
0
0

sec

0.2695
0
0
0.2363

6. Dtermination des acclrations correspondantes chaque priode :


Laction sismique est reprsente par le spectre de calcul suivant (RPA 2003) :

91

0.4557
0.1669

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

A : coefficient dacclration de zone


: facteur de correction damortissement (quant lamortissement est diffrent de 5%)
=7/2+ 0.7
: pourcentage damortissement critique
R : coefficient de comportement de la structure
T1, T2 : priodes caractristiques associes la catgorie de site
Q : facteur de qualit
La dtermination de laction sismique dpend des paramtres suivants :
Zone sismique II.a
A=0.15
Groupe dusage du btiment 2
Q=1.25
R=3.5 (Portiques autostables avec remplissages en maonnerie rigide)
=5% = 1

92

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

function [a,b,c,d,e]=Sa(T1,T2,A,Q,R,ETA)
Sa=zeros(5)
T=[1.5931 0 0 0 0;
0 0.5458 0 0 0;
0 0 0.3462 0 0;
0 0 0 0.2695 0;
0 0 0 0 0.2363]
for i=1:5
if (T(i,i)>=0) & (T(i,i)<T1)
Sa(i,i)=(1.25 * A * (1+ T(i,i)/T1 * ((2.5 * ETA * Q/R) -1))) * 9.81
else
if T(i,i)>=T1 & T(i,i)<T2
Sa(i,i)=(1.25 * A * 2.5 * ETA * Q/R )*9.81
else
if T(i,i)>=T2 & T(i,i)<=3
Sa(i,i)=(1.25 * A * 2.5 * ETA * Q/R* (T2/T(i,i))^2/3 )*9.81
else
Sa(i,i)=(1.25 * A * 2.5 * ETA * Q/R* (T2/3)^2/3* (3/T(i,i))^5/3
)*9.81
end
end
end
end

Sol rocheux (S1)T1=0.15s et T2=0.35s


Aprs excution:
Sa(0.15,0.35,0.15,1.25,3.5,1)

On obtient:

7. Dtermination des dplacements correspondants chaque mode de vibration :


La matrice des dplacements est donne par lexpression suivante:
U=

L Sa
m*

O:

L = T M{1} m* = T M

93

Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.

Calcul de L:
LL=Modes'*M*[1;1;1;1;1]
for i=1:5
L(i,i)=LL(i,1)
end

Calcul de m*:
ModalMass = Modes'* M * Modes

8. Calcul des dplacements :


U_Modal = Modes*(L/ModalMass)*(Sa/Omegas)

9. Dtermination du dplacement maximum en fonction de la combinaison modale


(SRSS) :
U max =

(U )
i =1

= ( U1 ) 2 + ( U 2 ) 2 + ( U 3 ) 2 + ( U 4 ) 2 + ( U 5 ) 2

for i=1:5
s=0
for j=1:5
s = s + U_Modal(i,j)^2
end
U_Max(i,1) = s^0.5
Dtermination des facteurs de participation modale :
end

Les facteurs de participation modale reprsentent l'interaction entre la forme et le mode de la


distribution spatiale de la charge externe.
Ces facteurs sont donns par :
MPF=L/m*
MPF=L/ModalMass

5. Application
Ecrire le code MATLAB qui permet de calculer les rponses vibratoires dun systme forc
1 ddl

94

Bibliographie

Rfrences bibliographiques.
Essential MATLAB for engineers and scientists.
HAHN, Brian et VALENTINE, Daniel. Brian D. Hahn, Daniel T. Valentine
Newnes, 2007.

PRACTICAL MATLAB. BASICS FOR ENGINEERS


KALECHMAN, Misza.
CRC Press, 2008.

A GUIDE TO MATLAB for Beginners and Experienced Users


HUNT, Brian R., LIPSMAN, Ronald L., et ROSENBERG, Jonathan M.
Cambridge university press, 1995.

Numerical methods in engineering with MATLAB.


Jaan Kiusalaas.
Cambridge university press, 2 eme edition, 2010.

Mthodes numriques: algorithmes, analyse et applications.


QUARTERONI, Alfio Maria, SACCO, Riccardo, et SALERI, Fausto.
Springer Science & Business Media, 2008.

Introduction to MATLAB with Numerical Preliminaries


STANOYEVITCH, Alexander.
Wiley Interscience, 2005.

MATLAB for Engineers


Holly Moore.
Pearson Education, 2012.

Structural dynamics of earthquake engineering


Theory and application using MATHEMATICA and MATLAB
RAJASEKARAN, Sundaramoorthy.
Elsevier, 2009.

95

Bibliographie

The Finite Element Method Using MATLAB


KWON, Young W. et BANG, Hyochoong
CRC press, 2000.

Simulation des vibrations mcaniques par Matlab, Simulink et Ansys


THOMAS, Marc et LAVILLE, Frdric.
PUQ, 2007.

Cours Mthode des lments Finis


Abdelghani SEGHIR
Universit A. Mira, Bjaia, Algrie

Cours Dynamique des structures


I. Smith et P. Lestuzzi
COLE POLYTECHNIQUE FDRALE DE LAUSANNE
Ecole Polytechnique Fdrale de LAUSANE

Support du cours LCS : Langage du calcul scientifique (Matlab)


Dpartement ST
Universit Abderrahmane MIRA de Bejaia

Cours Langage
Z.Mansouri
Universit de Skikda 20 aot 55

Cours Analyse Numrique Applique


M. Mignotte
Universit de Montral

96