naoufel hatime tp4

Post on 12-Feb-2016

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

mathématiques

TRANSCRIPT

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

top related