Professional Documents
Culture Documents
Polycopi
Le calcul scientifique appliqu au Gnie Civil
sous MATLAB
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.
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
sintresse
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.
1. Introduction Historique.
2. Lenvironnement MATLAB. 8
3. Les fichiers SCRIPT et FUNCTION
11
13
15
16
22
6. Application 23
Chapitre II : Introduction la programmation avec MATLAB..
24
1. Introduction..
24
24
24
25
25
4. Instructions de contrle 25
4.1 Linstruction while 25
4.2 Linstruction if.
26
30
31
32
34
36
36
37
6 .Application 38
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
44
47
47
50
50
52
53
53
5. 2 Mthode de Simpson..
55
6. Applications..
56
Chapitre IV : Calcul des structures (barres et poutres) selon la Mthode des Elments
57
57
1. Introduction..
57
2. Elment Barre
57
69
5. Application .
79
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
80
83
83
86
5. Application
94
Rfrences bibliographiques
95
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.
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
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
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
).
11
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 :
de la fonction
% la valeur retourne pour r1
% la valeur retourne pour r2
% la valeur retourne pour rn
% le end est facultatif
Par exemple :
function [a,b] = ma_function(x,y)
a = x + y;
b = x * y;
12
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
Sa valeur
pi
=3.1415...
exp(1)
e=2.7183...
= 1
Inf
= 1
NaN
eps
2 1016.
La fonction
Sa signification
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
sqrt(x)
la racine carre de x x
13
abs(x)
exp(x)
= ex
log(x)
log10(x)
imag(x)
real(x)
round(x)
floor(x)
ceil(x)
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
whos
clear x y
clc
Efface lcran
exit, quit
format
14
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.
Signification
format short
format long
format bank
format rat
15
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
16
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 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
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
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
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
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
19
20
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 =
>> A(1,:)
ans =
1
>> A(:,2)
ans =
2
6
10
>> A(2:3,:)
ans =
5 6 7 8
9 10 11 12
>> A(1:2,3:4)
ans =
4
8
>> A([1,3],[2,4])
ans =
>> A(:,3) = []
A=
>> A(2,:) = []
A=
>> A = [A , [0;0]]
A=
1 2 4
0
9 10 12 0
21
>> 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
5.3
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)
zeros(m,n)
ones(n)
ones(m,n)
eye(n)
magic(n)
rand(m,n)
22
6. Application
1. On veut vrifier que la multiplication de matrices n'est pas commutative. Soient deux
matrices :
3 4
A6 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
23
24
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
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
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
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
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 )
% 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
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
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
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 :
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
3 -2
>> 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
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
-3
3 -2
>> plot(K,M)
33
Couleur de la courbe
le caractre
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
le symbole +
m ou magenta
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
34
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
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
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
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
39
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
40
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
c- Exemple de rsolution
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
42
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
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
( )
Thorme : B n
(B ) . x 0 x
k
= (B )
Notation : A =
E
1 i 1
j
ai , j x k +
a i ,i j =1
j =i +1
i, j
x kj bi
44
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
j =i +1
i, j
x kj + bi .
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
.
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
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
47
h4x5
6475
8475
>>f=[3 2 -1 4];
>>g=[2 0 -3 5 -1];
>>h=deconv(g,f)
h=
0.6667 -0.4444
Aprs factorisation, on a:
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
x$9' x$
f4x$ 5
f;4x$ 5
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
x$9' x$
x$ x$<'
f4x$ 5 f4x$<' 5
52
b
a
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].
h=
ba
et f(xi) = fi ; i = 0, 1, 2, , n.
n
x i +1
xi
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
f ( x) = f ( x0 ) + ( x x0 ) f ( x0 ) +
1
( x x0 )2 f ( x0 ) + ...
2!
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
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
xn =b
x0 = a
f ( x)dx
en le remplaant par
h
h2
f ( x)dx [ f 0 + 2 f1 + 2 f 2 + ... + 2 f n 1 + f n ] [ f (b) f (a)]
2
12
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
Exemple :
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;
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
x2
x0
x2
h
f ( x)dx x p( x)dx = [ f 0 + 4 f1 + f 2 ]
0
3
55
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
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
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
56
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
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
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:
L longueur,
section de l'lment
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
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
E=210e6;
A=0.003;
L1=1.5;
L2=1;
k1= LinearBarStiffness (E,A,L1)
k1 =
420000
-420000
-420000
420000
-630000
630000
60
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
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
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
420000
J420000
0
420000
1050000
630000
F'
0
0
630000K , U. L ,10L
F/
630000 0.002
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
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
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));
L longueur,
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] ;
67
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
L longueur,
vecteur de dplacement u
x = theta* pi/180;
C = cos(x);
S = sin(x);
y = E*A/L*[-C -S C S]* u;
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
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
Llment
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
70
Chapitre IV: Calcul des structures (barres et poutres) selon la Mthode des lments Finis (MEF) par MATLAB
Par exemple :
Considrons la poutre reprsente sur la figure 5.7 ci-dessous.
1
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
18900
18900
-18900
18900
18900
25200
-18900
12600
-18900
-18900
18900
-18900
18900
12600
-18900
25200
18900
18900
-18900
18900
18900
25200
-18900
12600
-18900
-18900
18900
-18900
18900
12600
-18900
25200
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
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
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
37.8 0 18.9 U 2 y 20
0 50.4 12.6 = 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
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
Enfin,
nous
appelons
les
fonctions
MATLAB
BeamShearDiagram
et
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.
MATLAB est donne pour calculer les structures sous effets dynamique et sismique.
Soit une masse m supporte par un ressort k. On parle doscillations non amorties quand
lamortissement est nul, cest--dire c=0.
80
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
# F7 mx\ 4t5
(1)
En posant
k
$ ^
m
x\ - .$ x 0
x4t5 ^x_. - `
V_ .
V_
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
Dplacement (m)
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
5
6
Temps (s)
10
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.
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)
<jfg hk'<l
- Be
xe 405 - i - k. 1m $ n x40
2$ k. 1
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')
85
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
0.06
Dplacement (m)
0.04
0.02
-0.02
-0.04
-0.06
5
6
Temps (s)
10
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.
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
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
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.
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
12 EI C
h3
a 4 0 .6 4
=
= 0.0108 m 4
12
12
24 EI C 24 2 10 6 0.0108
=
= 19200 KN / m
h3
33
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
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.
[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
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
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
91
0.4557
0.1669
Chapitre V: Calcul des structures sous effets dynamique et sismique par MATLAB.
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
On obtient:
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
(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
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.
95
Bibliographie
Cours Langage
Z.Mansouri
Universit de Skikda 20 aot 55
96