naoufel hatime tp4
DESCRIPTION
mathématiquesTRANSCRIPT
Faculte des Sciences et Techniques deBeni Mellal
Master Genie Mathematiques et Applications
Analyse numerique
TP 4Methode des elements finis
unidimensionnel P1
Realise par : Naoufel Hatime
26 Decembre 2015
Table des matières
1.1 Position du problème : . . . . . . . . . . . . . . . . . . . . . . 21.2 But du TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Formulation variationel du probléme . . . . . . . . . . 21.3.2 Probléme aprochée . . . . . . . . . . . . . . . . . . . . 4
1.4 Partie pratique . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
1.1 Position du problème :
Soient f,g deux fonctions continues sur ]-L,L[, nous cherchons à approcherle probléme suivant :
−u′′(x) = f(x) (I)
u(−L) = g(−L)u(L) = g(L)
(1.1)
1.2 But du TP
Le but de TP est de trouver une solution approchée du probléme précé-dent en utilisant la méthode des éléments finis P1.
1.3 Approximation
1.3.1 Formulation variationel du probléme
Pour implementé la méthode des éléments finis on va approchéele probléme avec condition de Dirichlet homogène, puis on utilisonsla "pinalisation" pour résoudre notre probléme avec la condition de Dirichletnon homogène
−u′′(x) = f(x) (I)
u(−L) = 0
u(L) = 0
(1.2)
On note par γ le bord de l’overt ]− L,L[.Multiploins l’équation (I) par v ∈ H1(]− L,L[) tel que v/γ = 0 et intégronssur ]-L,L[ :
−∫ L
−Lu′′(x)v(x)dx =
∫ L
−Lf(x)v(x)dx
2
Utilisons une integration par parties, on aura :∫ L
−Lu′(x)v(x)
′dx+ [u
′(−L)v(−L)− u′(−L)v(−L)] =
∫ L
−Lf(x)v(x)dx
Or v/γ = 0 ,alors , ∫ L
−Lu′(x)v(x)
′dx =
∫ L
−Lf(x)v(x)dx
On pose V = H1(]−L,L[) ; Ainsi on obtient le problème variationnel suivant :{Trouver u ∈ H1(]− L,L[) tel que
a(u, v) = L(v) ∀v ∈ V
avec,
a(u, v) =
∫ L
−Lu′(x)v(x)
′dx
L(v) =
∫ L
−Lf(x)v(x)dx
Il est claire que L est une forme linéaire continue sur VIl est claire que a est une forme bilinéaire bicontinue sur V × VV est espace de Hiblert.Grace au lemme de Lax-miligram on déduit que le problème variationneladmet une solution unique.
3
1.3.2 Probléme aprochée
Soit N un entier positif,divisions l’intervale [-L,L] en N+1 partie .Posons,h = 1
N+1et xi = −L+ ih pour i=1,...,N+1 .
On définit pour i=1,...,N+1 les fonction suivantes :
ϕi(x) =
x−xi
xi−xi+1si xi−1 ≤ x ≤ xi
x−xi+1
xi−xi+1si xi ≤ x ≤ xi+1
0 sinon
Clairement la fonction sont tell que :
ϕi(xj) = δi,j ( indice de Kronecker ).
Figure 1.1 – Fontion de base ϕi
4
Ainsi on définit Vh l’espace approché de V par :
Vh = {vh ∈ C(]− L,L[) |vh/[xi, xi+1] ∈ P1([xi, xi+1]) , ∀i ∈ 0, 1...N}
Vh un sous espace fermé de V ,et de dimensionfinie N et {ϕi}i=N
i=1 une base de Vh.Soit vh ∈ Vh alors,
vh =i=N∑i=1
ϕivi,où vi sont N nombre réeel .
Ainsi on peur donc formuler une approximation de notre problème sous laforme :
Trouver uh ∈ Vh tel que∫ L
−Lu′
h(x)v(x)′
hdx =
∫ L
−Lf(x)v(x)hdx ∀vh ∈ V (II)
Puisque uh ∈ Vh, on peut ecrire
uh(x) =i=N∑i=1
ϕiui
Où u1, ...., uN sont des réels inconnus .En prenant en particulier vh = ϕi pour j=1,...,N dans (II). Donc on peut
ecrire le systéme sous la forme suivant :
Trouver u = (u1, ...., uN)
t ∈ RN solution dei=N∑i=1
ui
∫ L
−Lϕ′
i(x)ϕ′
j(x)dx =
∫ L
−Lf(x)ϕ
′
jdx pourj = 1, ..., N
5
Ainsi on aura,Trouver u = (u1, ...., uN)
t ∈ RN solution dei=N∑i=1
ui
k=N∑k=1
∫ xk
xk−1
ϕ′
i(x)ϕ′
j(x)dx =k=N∑k=1
∫ xk
xk−1
f(x)ϕ′
jdx pourj = 1, ..., N
On pose
aij =k=N∑k=1
akij =k=N∑k=1
∫ xk
xk−1
ϕ′
i(x)ϕ′
j(x)dx
Li =k=N∑k=1
Lki =
k=N∑k=1
∫ xk
xk−1
f(x)ϕ′
jdx
Il est claire que akij 6= 0 seulement si i, j ∈ {k − 1, k},et que Lk
i 6= 0 seulement si i ∈ {k − 1, k}Ainsi la matrice élementaire ,et le seconde membre sont donnée par
Ak =
∫ xk
xk−1
ϕ′
k−1(x)ϕ′
k−1(x)dx
∫ xk
xk−1
ϕ′
k−1(x)ϕ′
k(x)dx
∫ xk
xk−1
ϕ′
k(x)ϕ′
k−1(x)dx
∫ xk
xk−1
ϕ′
k(x)ϕ′
k(x)dx
Lk =
∫ xk
xk−1
f(x)ϕ′
k−1dx
∫ xk
xk−1
f(x)ϕ′
kdx
6
Donc la résolution numérique du probléme (I) se ramène à la résolutiond’un système linéaire du type :
Au = b
avecu = (u1, ..., uN)
T
A = (a(ϕi, ϕj)){1≤i,j≤N}
b = L(ϕj){1≤j≤N}
1.4 Partie pratique
On défnit une fonction Matlab maillage qui return deux tableaux eltqui fait associer à chaque numero global d’un element [xk, xk+1], et tableauq aussi return les coordonnées des neouds.On définit les fonctions chapeaux dans le fichier BLGG.m. On définit lesfonctions SM.m et Assemblage.m qui nous permet respectivement de cal-culeret assembler la matrice de la matrice de masseet le second membre, On définit la fonctions LimitCond.m pour ajouterla condition de Dirichlet non homogène (la pénalisation) . En on intégre cesfonctions dans un programme principal programmeP1.m dont les para-métres d’entrées sont L et N .
7
1.4.1 Exemple
On considére le problème suivant :−u′′(x) = exp(x) x ∈]− L,L[u(L) = exp(L)
u(−L) = exp(−L)(1.3)
Il est claire que uexacte = exp.on prend L=1.On définie l’erreur par norme(solution exatce− solution approche)
N 3 6 9 12 15 20Erreur 0.0170 0.0073 0.0043 0.0029 0.0021 0.0014
Figure 1.2 – Représentation de la solution exacte et approchée Pour N=3
8
Figure 1.3 – Représentation de la solution exacte et approchée Pour N=10
Figure 1.4 – Représentation de la solution exacte et approchée Pour N=20
9
Programme Principale
function [U,A,B,x]=programmeP1(L,N);
[x,elt]=maillage(L,N);
[A]=Assemblage(elt,x);
B=SM(elt,x);
[A,B]=LimitCond(A,B,x,elt);
V=ue(x);
U = A\B;
max(abs(V-U))
plot(x,U,’*k’,x,V,’--r’);
legend(’Solution approchée’,’Solution exact’);
end
Les fonctions
function [x,elt]=maillage(L,N)
h=2*L/(N+1);
i=0:N+1;
x=h*i’-L;
for k=1:N+1
elt(k,:)=[k,k+1];
end
end
10
function [A]=Assemblage(elt,x)
next=[2 1 2];
nt=length(elt);
ne=length(x);
A=zeros(ne,ne);
h=x(2)-x(1);
for k=1:nt
for k1=1:2
i1=elt(k,k1);
i2=elt(k,next(k1));
i3=elt(k,next(k1+1));
[phii,phixi]=BLGG(x(i1),x(i1),x(i2),x(i3));
for k2=1:2
j1=elt(k,k2);
j2=elt(k,next(k2));
j3=elt(k,next(k2+1));
[phij,phixj]=BLGG(x(j1),x(j1),x(j2),x(j3));
x1=h*phixi*phixj;
A(i1,j1)=A(i1,j1)+x1;
end
end
end
end
function [B]=SM(elt,x)
nt=length(elt);
ne=length(x);
h=x(2)-x(1);
11
B=zeros(ne,1);
for k=1:nt
% for k1=1:2
i1=elt(k,1);
i2=elt(k,2);
B(i1)=B(i1)+(2*f1(x(i1))+f1(x(i2)))*h/6;
B(i2)=B(i2)+(f1(x(i1))+2*f1(x(i2)))*h/6;
end
end
function [A,B]=LimitCond(A,B,x,elt)
cte=1e30;
nt=length(elt);
ili=elt(1,1);
ilf=elt(nt,2);
A(ili,ili)=cte;
B(ili)=cte*ue(x(ili));
A(ilf,ilf)=cte;
B(ilf)=cte*ue(x(ilf));
end
function y=f1(x)
y=-exp(x);
end
function [phi,phix]=BLGG(x,a,b,c)
if (a<=x && x<=b)
phi=(x-a)/(b-a);
phix=1/(b-a);
12
elseif (b<=x && x<=c)
phi=(x-c)/(b-c);
phix=1/(b-c);
else
phi=0;
phix=0;
end
end
13