Académique Documents
Professionnel Documents
Culture Documents
Polycop Matlab PDF
Polycop Matlab PDF
Polycopi
Le calcul scientifique appliqu au Gnie Civil
sous MATLAB
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.
2
Prface
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.
3
Tables des matires
4
Tables des matires
5
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
.
6
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.
8
Chapitre I : Introduction 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
9
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
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.
11
Chapitre I : Introduction lenvironnement MATLAB
% 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 :
% le corps de la fonction
. . .
r1 = . . . % la valeur retourne pour r1
r2 = . . . % la valeur retourne pour r2
. . .
rn = . . . % la valeur retourne pour rn
end % le end est facultatif
Par exemple :
12
Chapitre I : Introduction lenvironnement MATLAB
On obtient
>> whos
La fonction Sa signification
13
Chapitre I : Introduction lenvironnement MATLAB
exp(x) = ex
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
Le type Exemples
Entier 5 -83
Rel en notation dcimale 0.0205 3.1415926
Rel en notation scientifique 1.60210e-20 6.02252e23 (1.60210x10-20 et
6.02252x1023)
Complexe 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.
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
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.
>> 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 :
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
>> 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 :
in debut
le pas
nombre d lments 1
Par exemple :
La taille dun vecteur (le nombre de ses composants) peut tre obtenue avec la fonction
length comme suit :
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
>> V1 = [1 2];
>> V2 = [3 4];
>> V = [V1;V2]
V=
12
34
>> M = [1 2; 3 4]
M=
12
34
19
Chapitre I : Introduction lenvironnement MATLAB
20
Chapitre I : Introduction lenvironnement MATLAB
Par exemple :
>> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12] % cration de la matrice A
A=
1 2 3 4
5 6 7 8
9 10 11 12
21
Chapitre I : Introduction lenvironnement MATLAB
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 4
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 :
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 4 4 5 8
A6 5 3 B 3 11 12
10 8 2 2 1 7
Ralisez un code MATLAB qui permet, pour les matrices A et B donnes, de vrifier que :
A*B-B*A0
(A + B)T = AT + BT
23
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.
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(...).
A=[1 2 3];
disp(A);
1 2 3
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) if (condition)
instruction_1 ensemble dinstructions 1
instruction_2 ou bien else
. . . ensemble dinstructions 2
Instruction_N end
end
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
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 )
28
Chapitre II: Introduction la programmation avec MATLAB
>> 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
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
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 :
31
Chapitre II: Introduction la programmation avec MATLAB
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 :
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 :
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 :
33
Chapitre II: Introduction la programmation avec MATLAB
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
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 :
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$
$&'
# j)
+&'
38
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.
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
39
Chapitre III: Applications des mthodes numriques avec MATLAB
a 11 a 12 ... a 1n x1 b1
a ... a 2 n x 2 b 2
21 a 22 =
... ... ... ... ... ...
a n 1 a n 2 ... a nn x n b n
- 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),
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
40
Chapitre III: Applications des mthodes numriques avec MATLAB
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.
41
Chapitre III: Applications des mthodes numriques avec MATLAB
c- Exemple de rsolution
x'
Avec
1 2 2 2
x
A 1 3 2 ,x . ,b 1
3 5 8 x/ 8
Premire tape du pivot de Gauss pour liminer les variables x1 dans les lignes L2et L3 :
x 1 + 2x 2 + 2x 3 = 2 L1
x2 4x 3 = 3 L 2 L 2 L1
x 2 + 2x 3 = 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 + 2x 3 = 2 L1
x2 4x 3 = 3 L2
2x 3 = 1 L3 L 3 + L 2
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
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 .
( )
que (X X n ) = (M 1 N ) (X X 0 ) . B = M 1 N est appele la matrice d'itration.
n
Vitesse de convergence :
Pour i de 1 n faire
1 i 1 n
x ki +1 = ai , j x k + a x kj bi
j
i, j
a i ,i j =1 j =i +1
44
Chapitre III: Applications des mthodes numriques avec MATLAB
Thorme : Soit A une matrice symtrique, diagonale strictement dominante, c'est dire
A priori, cette mthode converge pour une matrice A SDP (matrice symtrique dfinie
positive).
Pour i de 1 n faire
1 i 1 n
x ki +1 = ai , j x k +1 a x kj + bi
j
i, j
a i ,i j =1 j =i +1
t
On procde par crasement du vecteur X k : x kj+1 , 1 j i 1 x ki +1
{
x kj , i + 1 j n
1442443
dj calculs calcul en cours
.
Boucle rtrograde
Cette fois, on pose M = D F et N = E .
On propose lalgorithme suivant :
Pour i de n 1 faire
1 i 1 n
x ki +1 = ai , j x k a x kj+1 + bi
j
i, j
a i ,i j =1 j = i +1
45
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 : ');
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
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 :
>>f=[8 0 2 3 4 -2]
f =8 0 2 3 4 -2
Soient :
f(x)= 3x3+2x2-x+4
g(x)= 2x4-3x2+5x-1
>>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
h(x)= 6x7+4x6-11x5+17x4+10x3-19x2+21x-4
f(x)= 3x3+2x2-x+4
g(x)= 2x4-3x2+5x-1
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
Aprs factorisation, on a:
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
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
% 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'
51
Chapitre III: Applications des mthodes numriques avec MATLAB
x$ x$<'
x$9' x$
f4x$ 5 f4x$<' 5
52
Chapitre III: Applications des mthodes numriques avec MATLAB
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].
correspondant.
En additionnant les aires des n trapzes, on obtient la formule des trapzes :
b h
a
f ( x)dx ( 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
1
f ( x) = f ( x0 ) + ( x x0 ) f ( x0 ) + ( x x0 )2 f ( x0 ) + ...
2!
En intgrant de x0 x1, on obtient :
h2 h3
f ( x0 ) + f ( x0 ) + ...
x1
x0
f ( x)dx = hf ( x0 ) +
2! 3!
h2
Comme : f1 = f ( x1 ) = f 0 + hf ( x0 ) + f ( x0 ) + ...
2!
h2 h h3
en multipliant par h/2 , on a : f ( x0 ) = ( f1 f 0 ) f ( x0 ) + ...
2! 2 4
et lintgrale devient :
h h3 h3 h h3
f ( x0 ) + ...
x1
f ( x)dx = hf ( x0 ) + [ ( f1 f 0 ) f ( x0 )] + [ f ( x0 )] + ... = ( f 0 + f1 )
x0
2 4 3! 2 12
Lintgrale totale vaut :
h h2 n 1
hf ( xk )
xn
f ( x)dx [ f 0 + 2 f1 + 2 f 2 + ... + 2 f n 1 + f n ]
x0
2 12 k = 0
xn =b
Comme le dernier terme est une approximation de x0 = a
f ( x)dx en le remplaant par
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;
>>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.
55
Chapitre III: Applications des mthodes numriques avec MATLAB
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
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== A
@ @
>? >?
@ @
57
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
i j
x
L
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
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:
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 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 ci-
dessous
1 2 P 3
1.5m 1m
m
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.
E=210e6;
A=0.003;
L1=1.5;
L2=1;
k1= LinearBarStiffness (E,A,L1)
k1 =
420000 -420000
-420000 420000
k2 =
630000 -630000
-630000 630000
60
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par 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 0
-420000 1050000 -630000
0 -630000 630000
61
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
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
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 =
-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 =
1.0e+005 *
-1.6667
1.6667
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
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 :
S C CS C CS
V
NO R CS S CS S U
k= R
P C CS CS U
R U
Q CS S CS S T
C
Y x
L j
i X
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
f 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 section transversale A.
66
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));
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
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;
function y = Truss2dStress(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/L*[-C -S C S]* u;
68
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 6L
V
>Z R 6L 2L U
k= [ R
6L U
4L 6L
@ 12 6L
R U
Q 6L 2L 6L 4L T
12
i E ,I j
X. x
L
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 :
function y = BeamStiffness(E,I,L)
% E module d'lasticit, L longueur, A 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]
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;
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
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')
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 P 3
2
L L
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.
72
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
E=210e6;
I=60e-6;
L=2;
k1= BeamStiffness (E,I,L)
k1 =
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=
K= BeamAssemble (K,k2,2,3)
K=
74
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
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=
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 anti-
horaire), 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=
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 =
1.0e-003 *
0
0
-0.9259
-0.1984
f1 =
13.7500
15.0000
-13.7500
12.5000
u2 =
1.0e-003 *
-0.9259
-0.1984
0
0.7937
f2 =
-6.2500
-12.5000
6.2500
-0.0000
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.
79
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.
80
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
# F7 mx\ 4t5
k
$ ^
m
V_ . V_
x4t5 ^x_. - ` b cos J$ t arctg ` bK
$ $ x_
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')
ssdl1 (1.5,50,0,1,10)
0.15
0.1
0.05
Dplacement (m)
-0.05
-0.1
-0.15
-0.2
0 1 2 3 4 5 6 7 8 9 10
Temps (s)
82
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
# F7 mx\ 4t5
83
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
c
O
2
m
Avec :
: Facteur damortissement[s-1]
La solution de lquation est de type :
x(t)= A ert (3)
x(t)= C1 er1t + C2 er2t (4)
xe 405 - i - k. 1m $ n x40
A
2$ k. 1
84
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
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')
ssdl2(1,2.5,163,0,1,10)
85
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
0.06
0.04
Dplacement (m)
0.02
-0.02
-0.04
-0.06
0 1 2 3 4 5 6 7 8 9 10
Temps (s)
86
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
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 :
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
x pa 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.
m1 0 0 0 0 100 0 0 0 0
0 m2 0 0 0 0 100 0 0 0
M= 0 0 m3 0 0 = 0 0 100 0 0 t
0 0 0 m4 0 0 0 0 100 0
0 0 0 0 m5 0 0 0 0 100
K1 + K 2 K2 0 0 0 2 1 0 0 0
K2 K2 + K3 K2 0 0 1 2 1 0 0
K= 0 K3 K3 + K 4 K3 0 =19200 0 1 2 1 0 KN/m
0 0 K4 K 4 + K5 K 4 0 0 1 2 1
0 0 0 K5 K5 0 0 0 1 1
89
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
[Modes,Omega]=eig(inv(M)*K)
132.5335 0 0 0 0
0 329.3511 0 0 0
= 0 0 15.5547 0 0
0 0 0 543.5194 0
0 0 0 0 707.0414
11.5123 0 0 0 0
0 18.1480 0 0 0
= 0 0 3.9439 0 0 rad/sec
0 0 0 23.3135 0
0 0 0 0 26.5902
90
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
On obtient:
On obtient:
0.5458 0 0 0 0
0 0.3462 0 0 0
T= 0 0 1.5931 0 0 sec
0 0 0 0.2695 0
0 0 0 0 0.2363
91
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
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
Sa(0.15,0.35,0.15,1.25,3.5,1)
On obtient:
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
U_Modal = Modes*(L/ModalMass)*(Sa/Omegas)
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
end Dtermination des facteurs de participation modale :
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.
95
Bibliographie
Cours Langage
Z.Mansouri
Universit de Skikda 20 aot 55
96