You are on page 1of 50

Mmoire

UNIVERSIT DE NICE - SOPHIA ANTIPOLIS




MMOIRE DE MASTRE
2011 - 2012

ELEMENTS FINIS :

DU CLASSIQUE AU ISOGEOMETRIQUE

tudiant
Responsable

: NGUYEN Thi Thuy Trang


TRINH Thi Huyen
: Pierre DREYFUSS
Francesca RAPETTI

Mmoire

Table des matires

Introduction
1

Elments nis classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.1

5
5

1.1.1

Ecriture du problme approch . . . . . . . . . . . . . . .

1.1.2

Calcul des coecients de la matrice . . . . . . . . . . . . .

1.1.3

Calcul des composantes du second membre . . . . . . . . .

1.1.4
1.2

Elments nis de degr un pour le problme de Dirichlet homogne


en dimension n = 1 . . . . . . . . . . . . . . . . . . . . . . . . . . .

Technique d'assemblage . . . . . . . . . . . . . . . . . . .

Elments nis de degr deux pour le problme de Dirichlet homogne 12


1.2.1
1.2.2

Calcul de la matrice de masse lmentaire . . . . . . . . . 13

1.2.3

Calcul de la matrice de raideur lmentaire . . . . . . . . 14

1.2.4

Calcul du second membre lmentaire . . . . . . . . . . . 14

1.2.5
1.3

Technique de l'lment de rfrence . . . . . . . . . . . . . 13

Technique d'assemblage . . . . . . . . . . . . . . . . . . . 15

Elments nis de degr trois pour le problme de Dirichlet homogne 18


1.3.1
1.3.2

Calcul de la matrice de masse lmentaire . . . . . . . . . 20

1.3.3

Calcul de la matrice de raideur lmentaire . . . . . . . . 20

1.3.4

Calcul du second membre lmentaire . . . . . . . . . . . 20

1.3.5
2

Technique de l'lment de rfrence . . . . . . . . . . . . . 19

Technique d'assemblage . . . . . . . . . . . . . . . . . . . 21

B-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1

Vecteur des noeuds . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.2

Les fonctions B-splines . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.3

Les drives de fonctions B-splines

2.4

Courbes B-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5

Interpolation par des courbes B-splines . . . . . . . . . . . . . . . . 32

. . . . . . . . . . . . . . . . . . 31

Mmoire
2.5.1
2.5.2
2.6
3

Le problme linaire . . . . . . . . . . . . . . . . . . . . . 33
Rsolution numrique d'un problme d'interpolation . . . 35

La mthode d'lments nis par B-splines . . . . . . . . . . . . . . 39

Commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

RFRENCES

50

Mmoire

Introduction
La mthode des lments nis fait partie des outils de mathmatiques appliques.
En analyse numrique, la mthode des lments nis est utilise pour rsoudre numriquement des quations aux drives partielles. Celles-ci peuvent par exemple reprsenter
analytiquement le comportement dynamique de certains systmes physiques (mcaniques,
thermodynamiques, acoustiques, etc.). En mathmatique, Il s'agit de remplacer un problme compliqu pour lequel a priori on ne connat pas de solution, par un problme plus
simple que l'on sait rsoudre.
Dans notre mmoire, dans la premire partie, on va regarder la mthode des lments
nis classique pour le problme Dirichlet homogne en dimension un de degr un, degr deux, degr trois. Au debut, on va donner les dnitions de la matrice de masse,
de la matrice de raideur, de la matrice de masse lmentaire, de la matrice de raideur
lmentaire. Dans chaque cas, on va regarder l'algorithme d'assemblage des matrices et
second membres lmentaire an de constituer le systme global. D'o on va donner les
programmes en Matlab pour calculer une solution approche et donner l'erreur.
Dans la deuxime partie, on va consider les fonctions B-splines et leurs premires drives, donner la dnition d'une courbe B-splines. Aprs on va regarder la rsolution
numrique d'un problme d'interpolation par des courbes B-splines et la mthode des lments nis utilisant les fonctions B-splines cubiques pour approcher une solution exacte.
Dans cette partie, on aura aussi les programmes en Matlab pour les pratiquer.
En n, on va donner les commentaires entre deux mthodes.
Nous voudrions exprimer notre reconnaissance Monsieur le Professeur Pierre Dreyfuss et Madame le Professeur Francesca Rapetti de nous avoir beaucoup aid faire ce
stage. Nous remercions bien aux professeurs du dpartement des Mathmatiques l'Universit de Nice - Sophia Antipolis, surtout Prof. Stphanie Nivoche et Prof. Jacques Blum
qui nous ont aides et nous ont encourages. Enn, il nous faut aussi dire remercier mes
amis avec leur soutien, leur encouragement et leur sympathie notre gard.
Nice, Juillet 2012

Mmoire

1 Elments nis classique


Considrons le problme de Dirichlet homogne en dimension n = 1 :

u (x) + u(x) = f (x) sur ]a, b[,


u(a) = u(b) = 0
o , sont des constantes et f est une fonction continue.
La formulation variationnelle de ce problme s'crit : Trouver la fonction u apparte1
1
nant H0 [a, b] telle que pour tout v H0 [a, b] on ait :
b

u (x)v (x)dx +
a

u(x)v(x)dx =
a

f (x)v(x)dx.

(1)

L'existence et l'unicit d'une solution pour ce problme se dmontrent en utilisant le


thorme de Lax-Milgram :

Thorme 1 (Thorme de Lax-Milgram)


Soient V un espace de Hilbert et a une forme bilinaire continue sur V V et coercive
sur V . Supposons que L est une forme linaire continue sur V . Alors, il existe un unique
fonctions u de V tel que l'quation a(u, v) = L(v) pour tout v de V .
On suppose maintenant que l'on connat un sous-espace Vh V de dimension nie,
paramtr par h et tel que pour tout v V , il existe un lment rh v Vh vriant :
limh0 rh v v = 0. Considrons alors le problme suivant : Trouver la fonction uh
appartenant Vh tell que : a(uh , vh ) = L(vh ), vh Vh . Ce problme admet galement
une solution unique car Vh est un sous-espace ferm de V et donc les hypothses du
thorme de Lax-Milgram sont galement vries dans Vh .
Supposons u et uh les solutions correspondent les problmes a(u, v) = L(v) et a(uh , vh ) =
L(vh ). On a alors un rsultat gnral de majoration d'erreur suivant :

Thorme 2 Soit M la constante intervenat dans l'hypothse de continuit de a : a(u, v)


M u v et m la constante intervenant dans l'hypothse de coercive : a(u, v) m v 2 ,
on a la majoration d'erreur suivante :
u uh

M
inf u vh .
m vh Vh

1.1 Elments nis de degr un pour le problme de Dirichlet homogne en dimension n = 1


Introduisons une discrtisation de l'intervalle [a, b] en N sous-intervalles ou lments
Ti = [xi1 , xi ]. Les lments Ti n'ont pas forcment mme longueur. V0,h est alors l'espace
des fonctions continues anes par morceaux (anes sur les segments Ti ) et nulles aux
extrmits a et b.

Mmoire

xi+1

xi

x1 = a

xN+1 = b

Figure 1  Discrtisation (maillage)du segment [a, b] en lments nis P 1


Rappelons que chaque fonction vh V0,h est dtermine de manire unique par la
donne de ses valeurs aux points xi pour i = 2, . . . , N. L'espace V0,h est de dimension
N 1 et il est engendr par la base de Lagrange qui est forme des N 1 fonctions
wi V0,h dnies par :

wi (xj ) = ij =

1 si i = j,
0 sinon

i = 2, . . . , N

et

j = 2, . . . , N.

D'o :

x x
i

xi xi1

xi x
wi (x) =
xi xi+1

si x [xi1 , xi ],
si x [xi , xi+1 ],
si x [xi1 , xi+1 ].
/

wi

x1 = a

xi1

wi+1

xi+1

xi

xi+2

xN+1 = b

Figure 2  Fonctions de base P 1


Une fonction vh quelconque s'crit dans cette base :
N

vh (x) =

vi wi (x)
i=2

avec vi = vh (xi ). Les coecients vi sont donc les valeurs de vh aux points xi .

1.1.1

Ecriture du problme approch

Ecrivons le problme approch dans V0,h : Trouver la fonction uh appartenant V0,h


telle que pour tout vh V0,h on ait :
b

uh (x)vh (x)dx +
a

uh (x)vh (x)dx =
a

f (x)vh (x)dx.

(2)

Mmoire
Le problme tant linaire, l'galit est vraie pour tout vh si et seulement si elle est vraie
pour une base de l'espace vectoriel V0,h , c'est--dire :

(2) est vrie vh V0,h (2) est vrie wi pour i = 2, . . . , N.


D'autre part, si uh est solution du problme approch dans V0,h , on peut l'exprimer dans
la base des wi comme suit :
N

uh (x) =

uj wj (x),
j=2

avec uj = uh (xj ) est le valeur approche de la solution exacte au point xj . Ainsi le


problme approch s'crit : Chercher u2 , u3 , . . . , uN tels que
N

wj (x)wi (x)dx +
j=2

wj (x)wi (x)dx uj =
a

f (x)wi (x)dx.
a

Posons

f (x)wi (x)dx

Fi :=
a

wj (x)wi (x)dx.

wj (x)wi (x)dx +

Aij :=

On remarque que le problme approch prend la forme d'un systme linaire de N 1


quations N 1 inconnues, qui peut s'crire sous la forme matricielle suivante :

AU = F.

1.1.2

Calcul des coecients de la matrice

La matrice A apparat comme la somme de deux matrices K et M .


K est appele matrice de raideur. Elle est donne par
b

Kij =

wj (x)wi (x)dx,
a

M est la matrice de masse. Son expression est la suivante :


b

Mij =

wj (x)wi (x)dx.
a

On obtient sans dicult les contributions de chaque lment Ti aux matrices de raideur
et de masse, dites matrices lmentaires de raideur et matrices lmentaires de masse.

Matrice lmentaire de raideur

On calcule les coecients Kij en sommant les contributions des dirents lments selon :
N

Kij =

xk+1

wj (x)wi (x)dx =
a

wj (x)wi (x)dx.
k=1

xk

Mmoire
Considrons par exemple l'lment Ti = [xi , xi+1 ]. Sur cet lment, il n'y a que deux
fonctions de base non nulles : wi et wi+1 . L'lment Ti produira donc eectivement une
contribution non nulle aux quatre coecients Ki,i , Ki,i+1 , Ki+1,i+1 et Ki,i+1 de la matrice
globale K . Calculons les contributions lmentaires de Ti et disposons les sous la forme
d'une matrice lmentaire 2 2 :
i
ei
1,1 e1,2
i
i
e2,1 e2,2

ElemKi =
avec

xi+1

ei =
1,1

1
,
xi+1 xi

wi (x)dx =
xi
xi+1

ei = ei =
1,2
2,1

wi (x)wi+1 (x)dx =
xi
xi+1

ei =
2,2

1
,
xi+1 xi

1
.
xi+1 xi

wi (x)dx =
xi

D'o :

1
1

xi+1 xi =
ElemKi = xi+1 xi

1
1
xi+1 xi

xi+1 xi xi+1 xi

1 1
1 1

Matrice lmentaire de masse

Avec le mme raisonnement, on obtient la matrice de masse lmentaire :

ElemMi =

1.1.3

xi+1 xi
6

2 1
1 2

Calcul des composantes du second membre

Chaque composante Fi du vecteur second-membre global est calcule galement par


assemblage de contributions lmentaires :
N

Fi =

xk+1

f (x)wi (x)dx =
a

f (x)wi (x)dx.
k=1

xk

On utilise des formules d'intgration numrique, par exemple la formule des trapzes ou
la formule de Simpson :
 La formule des trapzes :
b

(x)
a

ba
((a) + (b))
2

est exacte pour les fonctions anes.

Mmoire
 La formule de Simpson :
b

(x)
a

ba
a+b
((a) + 4(
) + (b))
6
2

est exacte pour les polynmes de degr infrieur ou gal 3.


Avec des fonctions tests wi P 1, la mthode des trapzes conduit une valeur approche
de l'intgrale, qui dans le cas de points quidistribus de pas h redonne le rsultat

Fi = hfi
obtenu en dirences nies. La mthode de Simpson permet aussi un calcul approch et
donne dans le mme cas
h
Fi = [fi1 + 4fi + fi+1 ].
6

1.1.4

Technique d'assemblage

Considrons un maillage N lments et notons B la matrice globale assembler


(matrice de raideur ou de masse globale), bk les matrices d'lmentaires correspondantes
relatives chaque lment Tk et F la matrice globale du second membre, lk les matrices
d'lmentaires correspondantes relatives chaque lment Tk . L'algorithme d'assemblage
est trs simple ds lors que l'on dispose d'un tableau associant les points d'un lment Tk
et les noeuds du maillage global.
Son schma en le suivant :

Pour des matrices :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 2 FAIRE ! boucle sur les numros locaux
POUR j = 1 : 2 FAIRE ! boucle sur les numros locaux
I = K + i 1 ! numros globaux
J = K + j 1 ! numros globaux
B(I, J) = B(I, J) + b(i, j) ! B : matrice globale, b : matrice lmentaire
FIN DES 3 BOUCLES

Pour second membre :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 2 FAIRE ! boucle sur les numros locaux
I = K + i 1 ! numros globaux
F (I) = F (I) + l(i) ! F : matrice globale, l : matrice lmentaire
FIN DES 2 BOUCLES
Dans ce cas trs simple d'lments de degr un en dimension un, chaque lment Tk
comprend 2 noeuds xk+1 , xk . On a alors les programmes suivants en matlab :

f u n c t i o n t e s t=EFdegre1 ;
Comparaison_degre_1 ( ) ;
9

Mmoire
end
f u n c t i o n t e s t 0=Comparaison_degre_1 ( ) ;
a l p h a =1;
b e t a =1;
N=16;
h=1/N;
a =0;
b=1;
K=( a l p h a /h ) [ 1 , 1 ; 1 , 1 ] ;
M=( b e t a /3 h ) [ 1 , 0 . 5 ; 0 . 5 , 1 ] ;
I=l i n s p a c e ( a , b ,N+1);
e l F i n i s=l i n s p a c e ( a , b ,N+1);
f u n c t i o n y=f ( x )
y=x ^ 4 ;
end
g=s o l u t i o n _ d e g r e _ 1 (N, h , e l F i n i s , alpha , beta , @f , a , b , K,M) ;
c2 = (37 24 exp ( 1 ) ) / ( exp (1) exp ( 1 ) ) ;
c1 =24 c2 ;
s_exact=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
e r r=gs_exact ' ;
em=max( abs ( e r r ) )

end

I=l i n s p a c e ( a , b , 2 0 0 ) ;
s=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
h o l d on
p=p l o t ( I , s ) ;
q=p l o t ( e l F i n i s , g , ' red ' ) ;
hold o f f

f u n c t i o n [ ms]= matrixA_degre_1 (N, h , e l F i n i s , alpha , beta , K,M)


ms=z e r o s (N+1,N+1);
f o r i e =1:N
f o r i =1:2
i g=i e+i 1;
f o r j =1:2
j g=i e+j 1;
ms( i g , j g )=ms( i g , j g )+K( i , j )+M( i , j ) ;
end
end
end
end
f u n c t i o n [ ap]= a p r o x i m a t i o n t r a p e z e s ( g )
ap =1/2 ( g (0)+ g ( 1 ) ) ;
10

Mmoire
end
f u n c t i o n y=p h i 1 ( x )
y=1x ;
end
f u n c t i o n y=p h i 2 ( x )
y=x ;
end
f u n c t i o n [ l ]=member2_s ( e l F i n i s , h , s , f )
x1=e l F i n i s ( s ) ;
x2=e l F i n i s ( s +1);
l=z e r o s ( 2 , 1 ) ;
f u n c t i o n y=r 1 ( x )
y=f ( x1+h x ) p h i 1 ( x ) ;
end
f u n c t i o n y=r 2 ( x )
y=f ( x1+h x ) p h i 2 ( x ) ;
end
l (1)= a p r o x i m a t i o n t r a p e z e s ( @r1 ) ;
l (2)= a p r o x i m a t i o n t r a p e z e s ( @r2 ) ;
end
f u n c t i o n [ F]= vectMember2_degre_1 ( e l F i n i s , h , N, f )
F=z e r o s (N+ 1 , 1 ) ;
f o r s =1:N
l=member2_s ( e l F i n i s , h , s , f ) ;
f o r i =1:2
i g=s+i 1; ,
F( i g )=F( i g )+h l ( i ) ;
end
end
end
f u n c t i o n [U]= s o l u t i o n _ d e g r e _ 1 (N, h , e l F i n i s , alpha , beta , f , a , b , K,M)
A=matrixA_degre_1 (N, h , e l F i n i s , alpha , beta , K,M) ;
A( 1 , : ) = 0 ;A( 1 , 1 ) = 1 ;
A(N+ 1 , : ) = 0 ;A(N+1,N+1)=1;
F=vectMember2_degre_1 ( e l F i n i s , h , N, f ) ;
F( 1 ) = 0 ;
F(N+1)=0;
U=A\F ;
end
Pour le degr un, la table de connectivit des lments, la table de noeuds de discrtisation
et le table des noeuds de quadrature sont toutes identiques. Cette proprit n'est plus
11

Mmoire
valable en degr suprieur 1. Les dtails sont donns dans la suite avec degr deux et
degr trois.

1.2 Elments nis de degr deux pour le problme de Dirichlet


homogne
On part nouveau d'une discrtisation de l'intervalle [a, b] en N sous-intervalles ou
lments Ti . Les lments Ti n'ont pas forcment mme longueur. L'espace Vh est considr
ici ensemble des fonctions continues sur [a, b] et tant polynomiales de degr deux sur
chaque sous-intervalle. Un polynme de degr deux est x par ses valeurs en trois points.
On prend les extrmits et le milieu de chaque lment Ti . On est ainsi amen considrer
une discrtisation de [a, b] en N sous-intervalles comportant eux-mmes trois points, ce
qui nous conduit globalement une discrtisation par 2N + 1 points o les noeuds xi sont
donns par
x1 = a < x2 < x3 < ... < x2N < x2N +1 = b,
x2i1 + x2i+1
pour i = 1, ..., N et Ti = [x2i1 , x2i+1 ] pour i = 1, ..., N .
avec x2i =
2
x1 = a

xi

xi+1

xi+2

x2N+1 = b

Figure 3  Discrtisation(maillage) du segment [a, b] en lments nis P 2


Soit encore la base {wi } avec i = 1, ..., 2N + 1 de Vh donnes par les conditions :

wi (xj ) = ij i = 1, ..., 2N + 1 et j = 1, ..., 2N + 1.


Aprs des calculs lmentaires on obtient :

(x xi2 )(x xi1 )

(xi xi2 )(xi xi1 )

(x xi+1 )(x xi+2 )


wi (x) =
(x x )(x x )
i

i+1
i
i+2

si x [xi2 , xi ],
si x [xi , xi+2 ],
si x [xi2 , xi+2 ],
/

lorsque wi correspondant un point xi extrmit d'un lment (voir Figure 4)et

(x xi1 )(x xi+1 )


si x [xi1 , xi+1 ],
wi (x) = (xi xi1 )(xi xi+1 )

0
si x [xi1 , xi+1 ].
/
lorsque wi correspondent un point milieu d'un lment (voir Figure 5).
La formulation variationnelle du problme de Dirichlet homogne consiste chercher la
1
fonction u appartenant H0 [a, b] telle que (2) soit satisfaite. Ainsi le problme approch
s'crit : Chercher u2 , . . . , u2N tels que :
2N

wj (x)wi (x)dx +
.

j=2

f (x)wi (x)dx i = 2, ..., 2N

wj (x)wi (x)dx uj =
a

12

Mmoire

wi

x1 = a

xi2

xi1

xi

xi+1

xi+2

x2N+1 = b

Figure 4  Fonction de base P 2 associe une extrmit


wi

x1 = a

xi1

xi

xi+1

x2N+1 = b

Figure 5  Fonction de base P 2 associe un milieu


1.2.1

Technique de l'lment de rfrence

xi+2 xi
t, on passe de t [1, 1]
2
x [xi , xi+2 ]. Les fonctions de base dans [xi , xi+2 ] s'expriment donc l'aider des trois
fonctions suivantes dnies sur [1, 1] :
Par le changement de variable Fi (t) = xi+1 +

w1 (t) =

t(t 1)
t(t + 1)
, w2 (t) = (t 1)(t + 1), w3 (t) =

.
2
2

L'expression des drives est :

dw1

1 dw 2

dw 3

1
=t ,
= 2t,
=t+ .
dt
2 dt
dt
2

1.2.2

Calcul de la matrice de masse lmentaire

Par w2i+k Fi = wk+2 avec la fonction Fi est dnie par le changement de variable

prcdent et k = 1, 0, 1. Les coecients de la matrice de masse pour l'lment [xi , xi+2 ]


sont :
xi+2 xi 1
wi (t)wj (t)dt pour i, j = 1, 2, 3.

2
1

13

Mmoire
On obtient ainsi la matrice de masse lmentaire suivante pour cet lment :

2
1
4

15
15
15

xi+2 xi 2
16
2
Mi =
.

15
2
15
15
1
2
4

15
15
15

1.2.3

Calcul de la matrice de raideur lmentaire

dw2i+k
dwk+2 dt

On a
=
pour k = 1, 0, 1 et i = 1, . . . , N. Ainsi les coecients de
dx
dt dx
la matrice de raideur sont :

et on obtient :

1.2.4

2
xi+2 xi

wi (t)wj (t)dt pour i, j = 1, 2, 3,

7
6

2
4
Ki =

xi+2 xi 3
1
6

4
3
8
3
4

1
6

4
.
3
7
6

Calcul du second membre lmentaire

Chaque composante Fi du vecteur second-membre global donne par


b

Fi =

f (x)wi (x)dx,
a
(k)

est galement calcule par assemblage des contributions lmentaires Fi . On a :


N

N
(k)
Fi

Fi =
k=1

x2k+1

f (x)wi (x)dx,
k=1

x2k1

(k)

o les Fi dsignent les contributions des lments k .


Sur l'lment Tk = [x2k1 , x2k+1 ], il n'y a que 3 fonctions de base non nulles : w2k1 , w2k , w2k+1 .
(k)
(k)
(k)
Ainsi les seules contributions non nulles sont F2k1 , F2k , F2k+1 . On utilise la formule de
Simpson pour les calculs,
x2k+1

(x)dx
x2k1

x2k+1 x2k1
[(x2k1 ) + 4(x2k ) + (x2k+1 )] .
6

Au nal, le second membre corespondent l'lment [x2k1 , x2k+1 ] s'crit :


(k)

F2k1
f2k1
(k) x2k+1 x2k1

F =
4f2k .
2k
6
(k)
f2k+1
F2k+1
14

Mmoire

1.2.5

Technique d'assemblage

Considrons un maillage N lments et notons B la matrice globale assembler


(matrice de raideur ou de masse globale), bk les matrices d'lmentaires correspondantes
relatives chaque lment Tk et F la matrice globale du second membre, lk les matrices
d'lmentaires correspondantes relatives chaque lment Tk . L'algorithme d'assemblage
est trs simple ds lors que l'on dispose d'un tableau associant les points d'un lment Tk
et les noeuds du maillage global.
Dans ce cas trs simple d'lments de degr deux en dimension un, chaque lment Tk
comprend trois noeuds x2k1 , x2k , x2k+1 .
Son schma en le suivant :

Pour des matrices :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 3 FAIRE ! boucle sur les numros locaux
POUR j = 1 : 3 FAIRE ! boucle sur les numros locaux
I = 2 K + i 2 ! numros globaux
J = 2 K + j 2 ! numros globaux
B(I, J) = B(I, J) + b(i, j) ! B : matrice globale, b : matrice lmentaire
FIN DES 3 BOUCLES

Pour second membre :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 3 FAIRE ! boucle sur les numros locaux
I = 2 K + i 2 ! numros globaux
F (I) = F (I) + l(i) ! F : matrice globale, l : matrice lmentaire
FIN DES 2 BOUCLES
On a alors les programmes suivants en matlab :

f u n c t i o n t e s t=EFdegre2 ;
Comparaison_degre_2 ( ) ;
end
f u n c t i o n t e s t 0=Comparaison_degre_2 ( ) ;
a l p h a =1;
b e t a =1;
N=16;
h=1/N;
a =0;
b=1;
K=(2 a l p h a /h ) [ 7 / 6 , 4 / 3 , 1 / 6 ; 4 / 3 , 8 / 3 , 4 / 3 ; 1 / 6 , 4 / 3 , 7 / 6 ] ;
M=( b e t a /2 h ) [ 4 / 1 5 , 2 / 1 5 , 1 / 1 5 ; 2 / 1 5 , 1 6 / 1 5 , 2 / 1 5 ; 1 / 1 5 , 2 / 1 5 , 4 / 1 5 ] ;
I=l i n s p a c e ( a , b , 2 N+1);
e l F i n i s=l i n s p a c e ( a , b , 2 N+1);
15

Mmoire
f u n c t i o n y=f ( x )
y=x ^ 4 ;
end
g=s o l u t i o n _ d e g r e _ 2 (N, h , e l F i n i s , alpha , beta , @f , a , b , K,M) ;
c2 = (37 24 exp ( 1 ) ) / ( exp (1) exp ( 1 ) ) ;
c1 =24 c2 ;
s_exact=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
e r r=gs_exact ' ;
em=max( abs ( e r r ) )
I=l i n s p a c e ( a , b , 2 0 0 ) ;
s=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
h o l d on
p=p l o t ( I , s ) ;
q=p l o t ( e l F i n i s , g , ' red ' ) ;
hold o f f
end
f u n c t i o n [ ms]= matrixA_degre_2 (N, h , e l F i n i s , alpha , beta , K,M)
ms=z e r o s ( 2 N+1 ,2 N+1);
f o r i e =1:N
f o r i =1:3
i g =2 i e+i 2;
f o r j =1:3
j g =2 i e+j 2;
ms( i g , j g )=ms( i g , j g )+K( i , j )+M( i , j ) ;
end
end
end
end
f u n c t i o n [ ap]= a p r o x i m a t i o n 2 p o i n t s ( g )
w= [ 1 , 1 ] ;
xpq=[ s q r t ( 1 / 3 ) , s q r t ( 1 / 3 ) ] ;
gpq =[g ( xpq ( 1 ) ) , g ( xpq ( 2 ) ) ] ;
ap =0;
f o r i =1:2
ap=ap+w( i ) gpq ( i ) ;
end
end
f u n c t i o n y=phi1_d2 ( x )
y=1/2 x ( x 1);
end
f u n c t i o n y=phi2_d2 ( x )
y=(1x ) (1+ x ) ;
end
16

Mmoire
f u n c t i o n y=phi3_d2 ( x )
y=1/2 x ( x +1);
end
f u n c t i o n [ l ]=member2_degre_2_s ( e l F i n i s , h , s , f )
x1=e l F i n i s ( 2 s 1);
x2=e l F i n i s ( 2 s ) ;
x3=e l F i n i s ( 2 s +1);
l=z e r o s ( 3 , 1 ) ;
f u n c t i o n y=r 1 ( x )
y=f ( x2+h/2 x ) phi1_d2 ( x ) ;
end
f u n c t i o n y=r 2 ( x )
y=f ( x2+h/2 x ) phi2_d2 ( x ) ;
end
f u n c t i o n y=r 3 ( x )
y=f ( x2+h/2 x ) phi3_d2 ( x ) ;
end
l (1)= a p r o x i m a t i o n 2 p o i n t s ( @r1 ) ;
l (2)= a p r o x i m a t i o n 2 p o i n t s ( @r2 ) ;
l (3)= a p r o x i m a t i o n 2 p o i n t s ( @r3 ) ;
end
f u n c t i o n [ F]= vectMember2_degre_2 ( e l F i n i s , h , N, f )
F=z e r o s ( 2 N+ 1 , 1 ) ;
f o r s =1:N
l=member2_degre_2_s ( e l F i n i s , h , s , f ) ;
f o r i =1:3
i g =2 s+i 2;
F( i g )=F( i g )+h/2 l ( i ) ;
end
end
end
f u n c t i o n [U]= s o l u t i o n _ d e g r e _ 2 (N, h , e l F i n i s , alpha , beta , f , a , b , K,M)
A=matrixA_degre_2 (N, h , e l F i n i s , alpha , beta , K,M) ;
A( 1 , : ) = 0 ;A( 1 , 1 ) = 1 ;
A( 2 N+ 1 , : ) = 0 ;A( 2 N+1 ,2 N+1)=1;
F=vectMember2_degre_2 ( e l F i n i s , h , N, f ) ;
F( 1 ) = 0 ;
F( 2 N+1)=0;
U=A\F ;
end
On peut continuer argumenter l'ordre de la mthode. Nous prsentons maintenant le
degr trois.

17

Mmoire

1.3 Elments nis de degr trois pour le problme de Dirichlet


homogne
On conserve toujours les mmes notations de bases, mais cette fois l'espace Vh est la
ensemble des fonctions continues sur [a, b] et tant polynomiales de degr trois sur chaque
sous-intervalle. Un polynme de degr trois est x par ses valeurs en quatre points. On
considrera donc une discrtisation globale en 3N + 1 points ou noeuds xi indexs par
i = 1, ..., 3N + 1 :
x1 = a < x2 < x3 < ... < x3N < x3N +1 = b
x3i+1 x3i1
x3i+1 x3i1
pour i = 1, ..., N , x3i = x3i2 + 2
pour
avec x3i1 = x3i2 +
3
3
i = 1, ..., N et Ti = [x3i2 , x3i+1 ] pour i = 1, ..., N .

x1 = a

xi

xi+1 xi+2 xi+3

x3N+1 = b

Figure 6  Discrtisation(maillage) du segment [a, b] en lments nis P 3


Soit encore la base wi avec i = 1, ..., 3N + 1 de Vh donnes par :

wi (xj ) = ij i = 1, ..., 3N + 1 et j = 1, ..., 3N + 1.


Ainsi, lorsque les fonctions wi correspondant un point xi qui est extrmit d'un lment,
il vient :

(x xi1 )(x xi2 )(x xi3 )

(xi xi1 )(xi xi2 )(xi xi3 )

(x xi+1 )(x xi+2 )(x xi+3 )


wi (x) =
(x x )(x x )(x x )
i

i+1
i
i+2
i
i+3

si x [xi3 , xi ],
si x [xi , xi+3 ],
si x [xi3 , xi+3 ],
/

wi

x1 = a

xi3

xi2

xi1

xi

xi+1

xi+2 xi+3 x3N+1 = b

Figure 7  Fonction de base P 3 associe une extrmit


et lorque les fonctions wi correspondant aux deux points intrieurs d'un lment, nous
obtenons :

(x xi1 )(x xi+1 )(x xi+2 )


si x [xi1 , xi+2 ]
wi (x) = (xi xi1 )(xi xi+1 )(xi xi+2 )

0
si x [xi1 , xi+2 ]
/
18

Mmoire
si xi est premier point intrieur d'un lment

wi

xi1

xi

xi+3

xi+2

Figure 8  Fonction de base P 3 associe premier point intrieur


et

(x xi2 )(x xi1 )(x xi+1 )


wi (x) = (xi xi2 )(xi xi1 )(xi xi+1 )

si x [xi2 , xi+1 ],
si x [xi2 , xi+1 ].
/

si xi est deuxime point intrieur d'un lment .

wi

xi2

xi1

xi+1

xi

Figure 9  Fonction de base P 3 associe deuxime point intrieur


A partir de la formulation variationnelle (2), nous obtenons maintenant un problme
approch qui s'crit : Trouver u2 , . . . , u3N tels que :
3N

wj (x)wi (x)dx +
j=2

1.3.1

f (x)wi (x)dx i = 2, ..., 3N.

wj (x)wi (x)dx uj =
a

Technique de l'lment de rfrence

xi + xi+3 xi+3 xi
+
t, on passe de t [1, 1]
2
2
x [xi , xi+3 ]. Les fonctions de base dans [xi , xi+3 ] s'expriment donc l'aider des quatre
Par le changement de variable Fi (t) =

19

Mmoire
fonctions suivantes dnies sur [1, 1] :

w1 (t) =

1
(1 t)(3t 1)(3t + 1),
16

w2 (t) =

9
(t + 1)(t 1)(3t 1),
16

1
9
(t + 1)(3t 1)(3t + 1), w3 (t) = (t + 1)(1 t)(3t + 1),

16
16
dont les drives sont respectivement gales
w4 (t) =

dw1

1
= (27t2 + 18t + 1),
dt
16
dw4

1
= (27t2 + 18t 1),
dt
16

1.3.2

dw2

9
= (9t2 2t 3),
dt
16
dw 3

9
= (9t2 2t + 3).
dt
16

Calcul de la matrice de masse lmentaire

Par w3i+k Fi = wk+3 avec la fonction Fi est dnie par le changement de variable

prcdent et k = 2, 1, 0, 1. Le calcul des coecients de la matrice de masse se ramne


l'valuation des intgrales :

1.3.3

xi+3 xi
2

wi (t)wj (t)dt pour i, j = 1, 2, 3, 4.

Calcul de la matrice de raideur lmentaire

dw3i+k
dwk+3 dt

=
pour k = 2, 1, 0, 1 et i = 1, . . . , N . Donc, les coecients
dx
dt dx
de la matrice de raideur dans lment [xi , xi+3 ] sont
On a

1.3.4

2
xi+3 xi

i (t)j (t)dt pour i, j = 1, 2, 3, 4.


1

Calcul du second membre lmentaire

Chaque composante Fi du vecteur second-membre global


b

f (x)wi (x)dx

Fi =
a

(k)

est calcule galement par assemblage de contributions lmentaires Fi


N

N
(k)

Fi =

Fi
k=1

selon

x3k+1

f (x)wi (x)dx,
k=1

x3k2

(k)

o les Fi dsignent les contributions des lments k .


Sur lment Tk = [x3k2 , x3k+1 ], il n'y a que 4 fonctions de base non nulles : w3k2 ,w3k1 ,
w3k , w3k+1 . Donc, sur cet lment, il n'y a que les contributions non nulles. Sur l'lment
Tk = [x2k1 , x2k+1 ], il n'y a que 4 fonctions de base non nulles : w3k2 ,w3k1 , w3k , w3k+1 .
(k)
(k)
(k)
(k)
Ainsi les seules contributions non nulles sont F3k2 , F3k1 , F3k , F3k+1 .
20

Mmoire

1.3.5

Technique d'assemblage

Considrons un maillage N lments et notons B la matrice globale assembler


(matrice de raideur ou de masse globale), bk les matrices d'lmentaires correspondantes
relatives chaque lment Tk et F la matrice globale du second membre, lk les matrices
d'lmentaires correspondantes relatives chaque lment Tk . L'algorithme d'assemblage
est trs simple ds lors que l'on dispose d'un tableau associant les points d'un lment Tk
et les noeuds du maillage global.
Dans ce cas trs simple d'lments de degr deux en dimension un, chaque lment Tk
comprend trois noeuds x3k2 , x3k1 , x3k , x3k+1 .
Son schma en la suivante :

Pour des matrices :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 4 FAIRE ! boucle sur les numros locaux
POUR j = 1 : 4 FAIRE ! boucle sur les numros locaux
I = 3 K + i 3 ! numros globaux
J = 3 K + j 3 ! numros globaux
B(I, J) = B(I, J) + b(i, j) ! B : matrice globale, b : matrice lmentaire
FIN DES 3 BOUCLES

Pour second membre :

POUR K = 1 : N FAIRE ! boucle sur les lments


POUR i = 1 : 4 FAIRE ! boucle sur les numros locaux
I = 3 K + i 3 ! numros globaux
F (I) = F (I) + l(i) ! F : matrice globale, l : matrice lmentaire
FIN DES 2 BOUCLES
On a alors les programmes suivants en matlab :

f u n c t i o n t e s t=EFdegre3 ;
Comparaison_degre_3 ( ) ;
end
f u n c t i o n t e s t 0=Comparaison_degre_3 ( ) ;
a l p h a =1;
b e t a =1;
N=16;
h=1/N;
a =0;
b=1;
K=m atrix _raid eur_ local _d3 ( alpha , beta , h ) ;
M
=matrix_masse_local_d3 ( alpha , beta , h ) ;
I=l i n s p a c e ( a , b , 3 N+1);
e l F i n i s=l i n s p a c e ( a , b , 3 N+1);
f u n c t i o n y=f ( x )
21

Mmoire
end

y=x ^ 4 ;

g=s o l u t i o n _ d e g r e _ 3 (N, h , e l F i n i s , alpha , beta , @f , a , b , K,M) ;


c2 = (37 24 exp ( 1 ) ) / ( exp (1) exp ( 1 ) ) ;
c1 =24 c2 ;
s_exact=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
e r r=gs_exact ' ;
em=max( abs ( e r r ) )
I=l i n s p a c e ( a , b , 2 0 0 ) ;
s=c1 exp ( I ) + c2 exp( I )+ I . ^ 4 + 12 I . ^ 2 + 24 ;
h o l d on
p=p l o t ( I , s ) ;
q=p l o t ( e l F i n i s , g , ' red ' ) ;
hold o f f
end
f u n c t i o n y=phi1_d3 ( x )
y=1/16 (1 x ) ( 3 x 1) (3 x +1);
end
f u n c t i o n y=phi2_d3 ( x )
y =9/16 ( x +1) (x 1) (3 x 1);
end
f u n c t i o n y=phi3_d3 ( x )
y =9/16 ( x+1) (1 x ) ( 3 x +1);
end
f u n c t i o n y=phi4_d3 ( x )
y =1/16 ( x +1) (3 x +1) (3 x 1);
end
f u n c t i o n y=dphi1_d3 ( x )
y=1/16 ( 27 x^2+18 x +1);
end
f u n c t i o n y=dphi2_d3 ( x )
y =9/16 (9 x^22 x 3);
end
f u n c t i o n y=dphi3_d3 ( x )
y=9/16 ( 9 x^22 x +3);
end
22

Mmoire
f u n c t i o n y=dphi4_d3 ( x )
y =1/16 (27 x^2+18 x 1);
end

f u n c t i o n [K]= matri x_rai deur _loca l_d3 ( alpha , beta , h )


K=z e r o s ( 4 , 4 ) ;
xpq=[ s q r t ( 3 / 5 ) , 0 , s q r t ( 3 / 5 ) ] ;
w= [ 5 / 9 , 8 / 9 , 5 / 9 ] ;
xx1 =[ dphi1_d3 ( xpq ( 1 ) ) , dphi2_d3 ( xpq ( 1 ) ) , dphi3_d3 ( xpq ( 1 ) ) , dphi4_d3 ( xpq ( 1 ) )
xx2 =[ dphi1_d3 ( xpq ( 2 ) ) , dphi2_d3 ( xpq ( 2 ) ) , dphi3_d3 ( xpq ( 2 ) ) , dphi4_d3 ( xpq ( 2 ) )
xx3 =[ dphi1_d3 ( xpq ( 3 ) ) , dphi2_d3 ( xpq ( 3 ) ) , dphi3_d3 ( xpq ( 3 ) ) , dphi4_d3 ( xpq ( 3 ) )
f o r i =1:4
f o r j =1:4
K( i , j )=w( 1 ) xx1 ( i ) xx1 ( j )+w( 2 ) xx2 ( i ) xx2 ( j )+w( 3 ) xx3 ( i ) xx3 ( j ) ;
end
end
K=2 a l p h a /h K;
end

f u n c t i o n [M]= matrix_masse_local_d3 ( alpha , beta , h )


M eros (4 ,4);
=z
x1=(3+2 s q r t ( 6 / 5 ) ) / 7 ;
x2=(3 2 s q r t ( 6 / 5 ) ) / 7 ;
xpq=[ s q r t ( x1 ) , s q r t ( x2 ) , s q r t ( ( x2 ) , s q r t ( x1 ) ] ;
w=[(18+ s q r t ( 3 0 ) ) / 3 6 , ( 1 8 s q r t ( 3 0 ) ) / 3 6 , ( 1 8 s q r t ( 3 0 ) ) / 3 6 , ( 1 8 + s q r t ( 3 0 ) ) / 3 6 ]
xx1 =[ phi1_d3 ( xpq ( 1 ) ) , phi2_d3 ( xpq ( 1 ) ) , phi3_d3 ( xpq ( 1 ) ) , phi4_d3 ( xpq ( 1 ) ) ] ;
xx2 =[ phi1_d3 ( xpq ( 2 ) ) , phi2_d3 ( xpq ( 2 ) ) , phi3_d3 ( xpq ( 2 ) ) , phi4_d3 ( xpq ( 2 ) ) ] ;
xx3 =[ phi1_d3 ( xpq ( 3 ) ) , phi2_d3 ( xpq ( 3 ) ) , phi3_d3 ( xpq ( 3 ) ) , phi4_d3 ( xpq ( 3 ) ) ] ;
xx4 =[ phi1_d3 ( xpq ( 4 ) ) , phi2_d3 ( xpq ( 4 ) ) , phi3_d3 ( xpq ( 4 ) ) , phi4_d3 ( xpq ( 4 ) ) ] ;
xx=[ xx1 ; xx2 ; xx3 ; xx4 ] ;
f o r i =1:4
f o r j =1:4
M( i , j )=w ( xx ( 1 : 4 , i ) . xx ( 1 : 4 , j ) ) ;
end
end
M e t a h/2 M;
=b
end
f u n c t i o n [ ms]= matrixA_degre_3 (N, h , e l F i n i s , alpha , beta , K,M)
ms=z e r o s ( 3 N+1 ,3 N+1);
f o r i e =1:N
f o r i =1:4
i g =3 i e+i 3;
f o r j =1:4
j g =3 i e+j 3;
ms( i g , j g )=ms( i g , j g )+K( i , j )+M( i , j ) ;
23

Mmoire

end

end

end

end

f u n c t i o n [ ap]= a p r o x i m a t i o n 4 p o i n t s ( g )
w=[(18 s q r t ( 3 0 ) ) / 3 6 , ( 1 8 + s q r t ( 3 0 ) ) / 3 6 , ( 1 8 + s q r t ( 3 0 ) ) / 3 6 , ( 1 8 s q r t ( 3 0 ) ) / 3 6 ] ;
x1=(3+2 s q r t ( 6 / 5 ) ) / 7
x2=(3 2 s q r t ( 6 / 5 ) ) / 7
xpq=[ s q r t ( x1 ) , s q r t ( x2 ) , s q r t ( x2 ) , s q r t ( x1 ) ] ;
gpq =[g ( xpq ( 1 ) ) , g ( xpq ( 2 ) ) , g ( xpq ( 3 ) ) , g ( xpq ( 4 ) ) ] ;
ap =0;
f o r i =1:4
ap=ap+w( i ) gpq ( i ) ;
end
end
f u n c t i o n [ l ]=member2_degre_3_s ( e l F i n i s , h , s , f )
x1=e l F i n i s ( 3 s 2);
x2=e l F i n i s ( 3 s 1);
x3=e l F i n i s ( 3 s ) ;
x4=e l F i n i s ( 3 s +1);
l=z e r o s ( 4 , 1 ) ;
f u n c t i o n y=r 1 ( x )
y=f ( ( x1+x4 )/2+h/2 x ) phi1_d3 ( x ) ;
end
f u n c t i o n y=r 2 ( x )
y=f ( ( x1+x4 )/2+h/2 x ) phi2_d3 ( x ) ;
end
f u n c t i o n y=r 3 ( x )
y=f ( ( x1+x4 )/2+h/2 x ) phi3_d3 ( x ) ;
end
f u n c t i o n y=r 4 ( x )
y=f ( ( x1+x4 )/2+h/2 x ) phi4_d3 ( x ) ;
end
l (1)= a p r o x i m a t i o n 4 p o i n t s ( @r1 ) ;
l (2)= a p r o x i m a t i o n 4 p o i n t s ( @r2 ) ;
l (3)= a p r o x i m a t i o n 4 p o i n t s ( @r3 ) ;
l (4)= a p r o x i m a t i o n 4 p o i n t s ( @r4 ) ;
end
f u n c t i o n [ F]= vectMember2_degre_3 ( e l F i n i s , h , N, f )
F=z e r o s ( 3 N+ 1 , 1 ) ;
f o r s =1:N
l=member2_degre_3_s ( e l F i n i s , h , s , f ) ;
f o r i =1:4
i g =3 s+i 3;
24

Mmoire

end

end

end

F( i g )=F( i g )+h/2 l ( i ) ;

f u n c t i o n [U]= s o l u t i o n _ d e g r e _ 3 (N, h , e l F i n i s , alpha , beta , f , a , b , K,M)


A=matrixA_degre_3 (N, h , e l F i n i s , alpha , beta , K,M) ;
A( 1 , : ) = 0 ;A( 1 , 1 ) = 1 ;
A( 3 N+ 1 , : ) = 0 ;A( 3 N+1 ,3 N+1)=1;
F=vectMember2_degre_3 ( e l F i n i s , h , N, f ) ;
F( 1 ) = 0 ;
F( 3 N+1)=0;
U=A\F ;
end

25

Mmoire
Comme les programmes en Matlab que nous avons fait, on a la tableau suivante :
1D
Continuit
sur lment
Connectivit

P1

P2

P3

C0

C0

C0

Ti

u(xk )
Point de
quadrature

i+1

des lments
Degr de libert

Ti

Trapze

Ti
i+1

Gauss 2 points

i+1

Gauss 4 points

Remarquons que la mthode de quadrature de Gauss- Legendre est utilis dans le calculs
1
approximations 1 f (x)dx, par exemple
 Pour 2 points :
2

g(x)dx
1

avec

wi g(xi )
i=1

1
1
x1 = , x2 = et w1 = w2 = 1.
3
3

 Pour 3 points :
3

g(x)dx
1

wi g(xi )
i=1

avec

x1 = 0, x2,3 =

3
8
5
et w1 = , w2,3 = .
5
9
9

 Pour 4 points :
4

g(x)dx
1

wi g(xi )
i=1

avec

x1,2 =

(3 2 6/5)
, x3,4 =
7

(3 + 2 6/5)
18 + 30
18 30
et w1,2 =
, w3,4 =
.
7
36
36

26

Mmoire
On reoit les rsultats des programmes en Matlab pour rsolution numrique de la
solution pour le problme :

u (x) + u(x) = x4 sur ]0, 1[,


u(0) = u(1) = 0

20

solution exacte
solution approche

x 10

erreur = 1.3527e004

15

10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figure 10  Approcher la solution avec la mthode d'lments nis de degr 1


solution exacte
solution approche

20

x 10

erreur = 4.5438e007

15

10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figure 11  Approcher la solution avec la mthode d'lments nis de degr 2


3

20

solution exacte
solution approche

x 10

erreur =1.6163e006

15

10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figure 12  Approcher la solution avec la mthode d'lments nis de degr 3


27

Mmoire

2 B-splines
Dans la mthode d'lments nis classique, le principal dfaut de cette mthode est
que la solution approche est une fonction qui n'est que continue. Or, dans de nombreuses
applications, par exemple en informatique graphique, il est prrable d'utiliser des fonctions
ayant au moins une drive continue. Cette proprit sera satisfaite dans la mthode
d'lments nis par B-spline.
Spline est une fonction polynomiale dnie par morceaux quelque de degr p sur chaque
intervalle.
Une B-spline est une combinaison linaire de splines non-ngatives support compact
minimal.
Pour contruire les fonctions base des B-splines, on doit d'abord introduire la dnition de
vecteur des noeuds.

2.1 Vecteur des noeuds


Dans l'espace dimension un, un vecteur de noeuds {1 , 2 , ..., n+p+1 } est un ensemble
non dcroissant de coordonnes dans l'espace des paramtres, o n est le nombre de
points de contrle et p est le degr de la spline. Si les noeuds i , i = 1, ..., n + p + 1 sont
quidistants, on dit que ce vecteur de noeuds est uniforme. Et si les noeuds en premire
et dernire position sont rpts p + 1 fois, on dit que ce vecteur de noeuds est ouvert.

2.2 Les fonctions B-splines


Soit {1 , 2 , ..., k } un vecteur de noeuds. Les fonctions B-splines Ni,p sont dnies par
rcurrence sur p par les relations suivantes :
Pour p = 0 :
1 si i < i+1
Ni,0 () =
pour i = 1, ..., k 1.
0 sinon
Pour p = l 1 :

Ni,l () =

i+l+1
i
Ni,l1 () +
Ni+1,l1 ()
i+l i
i+l+1 i+l

pour i = 1, ..., k (l + 1).

Remarque :
1. La fonction Ni,p est un polynme de degr infrieur ou gale p sur chaque intervalle
[j , j+1 [.
2. La fonction Ni,p s'annule en dehors de l'intervalle ]i , i+p+1 [.
3. La fonction Ni,p s'annule aussi en i sauf si i = i+1 = = i+p < i+p+1 auquel
cas Ni,p (i ) = 1.
4. Ni,p () 0, et

n
i=1

Ni,p () = 1, .

28

Mmoire
1

N1,0

N2,0

N3,0

Figure 13  Fonctions B-splines de degr 0


1

N2,1

N1,1

N3,1

Figure 14  Fonctions B-splines de degr 1


0.8

N1,2

N2,2

N3,2

0.7

0.6

0.5

0.4

0.3

0.2

0.1

Figure 15  Fonctions B-splines de degr 2


0.7

N1,3

N2,3

N3,3

0.6

0.5

0.4

0.3

0.2

0.1

Figure 16  Fonctions B-splines de degr 3

29

Mmoire
On peut construire une matrice de dimension (n + p) (p + 1) qui stocke toutes les
fonctions B-splines Ni,l () avec 0 l p en forme :

N1,0 ()
N1,1 ()
. . . N1,p ()
N2,0 ()
N2,1 ()
. . . N2,p ()

...
...
...
...

Nn,0 ()
Nn,1 ()
. . . Nn,p ()

Nn+1,0 ()
Nn+1,1 () . . .
0

...
...
...
...

Nn+p1,0 () Nn+p1,1 () . . .
0
Nn+p,0 ()
0
...
0
D'o on a le programme suivant :

Programe 1 - Bsp : Calcule les fonctions B-splines au point ksi.

function [sp]=Bsp(ksiVector,n,p,ksi)
sp=zeros(n+p,p+1);
for j=1:p+1
j0=j-1;
for i=1:n+p-j0
ki=ksiVector(i);
ki1=ksiVector(i+1);
if(j0==0)
if ( ksi>=ki && ksi<ki1 )
sp(i,j)=1;
else
sp(i,j)=0;
end
else
kip=ksiVector(i+j0);
kip1=ksiVector(i+j0+1);
if ( kip==ki )
tg=0;
else
tg=(ksi-ki)/(kip-ki);
end
if ( kip1==ki1 )
td=0;
else
td=(kip1-ksi)/(kip1-ki1);
end
sp(i,j)=tg*sp(i,j0)+td*sp(i+1,j0);
end
end
end
end

30

Mmoire

2.3 Les drives de fonctions B-splines


La drive d'une fonction de base B-spline est donne par :

Ni,p () =

p
p
Ni,p1 ()
Ni+1,p1 ().
i+p i
i+p+1 i+1

D'o on a le programme suivant :

Programe 2 - deriveBsp : Calcule les drives de fonctions splines au point ksi.

function [dsp]=deriveBsp(ksiVector,n,p,ksi)
U=Bsp(ksiVector,n,p,ksi);
dsp=zeros(n+p,p+1);
for j=1:p+1
j0=j-1;
for i=1:n+p-j0
ki=ksiVector(i);
ki1=ksiVector(i+1);
if(j0==0)
dsp(i,j)=0;
else
kip=ksiVector(i+j0);
kip1=ksiVector(i+j0+1);
if ( kip==ki )
dtg=0;
else
dtg=j0/(kip-ki);
end
if ( kip1==ki1 )
dtd=0;
else
dtd=-j0/(kip1-ki1);
end
dsp(i,j)=dtg*U(i,j0)+dtd*U(i+1,j0);
end
end
end
end

2.4 Courbes B-splines


Une courbe B-splines de degr p dnie par n points de contrle P1 , P2 , ..., Pn est de
la forme :
n

Xp () = (x(), y()) =

Ni,p ()Pi ,
i=1

o Pi = (Xi , Yi ) sont les coordonns de ime -point de contrle.


Remarque :
31

Mmoire
1. Les composantes de Xp () sont des polynmes de degr p sur chaque intervalle
[i , i+1 [.
2. Si [ti , ti+1 [, Xp () ne dpend que les points de contrle Pip , . . . , Pi et se trouve
dans l'enveloppe convexe de ces points.
3. Si i est un noeud simple et p 1, Xp (i ) ne dpend que des points de contrle
Pip , . . . , Pi1 et se trouve dans l'enveloppe convexe de ces points.
On a les programmes suivants :

Programe 3 - iwBsp : Calcule les coordonnes d'un point d'une spline.


function [C]=iwBsp(ksiVector,points,p,ksi)
n=size(points,2);
xi=points(1,:);
yi=points(2,:);
N=Bsp(ksiVector,n,p,ksi);
Nip=N(1:n,p+1);
x=xi*Nip;
y=yi*Nip;
C(1)=x;
C(2)=y;
end

Programe 4 - ip : Calcule les coordonnes de plusieurs points d'une spline.


function[P]=ip(ksiVector,points,p,vect)
l=size(vect,2);
P=zeros(l,2);
for i=1:l
t=vect(i);
ki=iwBsp(ksiVector,points,p,t);
P(i,1)=ki(1);
P(i,2)=ki(2);
end
end

2.5 Interpolation par des courbes B-splines


On se limite au courbes de degr 3 par morceaux. On cherche faire passer une courbe
B-spline en N 1 points Qi et en imposant la drives aux extrmits. Le problme se
divise en deux phases.
Premire phase : On se xe un vecteur de noeuds t et on cherche un polygone de contrle
P tel que la courbe B-spline Xk correspondante passe par les Qi aux noeuds. L'interpolation se traduit alors par la rsolution d'un systme linaire.
Deuxime phase : On cherche optimiser le choix du vecteur de noeuds. Ce problme est
typiquement non linaire.

32

Mmoire

2.5.1

Le problme linaire

On a le thorme suivant pour des B-splines de degr 3.

Thorme 3 Soient Q0 , . . . , QN des points de Rn . Soient va , vb deux vecteurs de Rn . Soit


t un vecteur de noeuds viss aux extrmits, de la forme
t0 = t1 = t2 = t3 = a < t4 < . . . < tN +2 < b = tN +3 = tN +4 = tN +5 = tN +6 .

Il existe un unique polygone de contrle P = (P0 , ..., PN +2 ) tel que la courbe B-spline de
degr 3 associe satisfasse
i = 0, ..., N,

X3 (ti+3 ) = Qi ,

et

X (a) = va ,

X (b) = vb .

Preuve. Comme chaque coordonne se traite indpendamment, on peut supposer que


n = 1. Dans ce cas, on considre l'application linaire

RN +3 RN +3 , (P0 , ..., PN +2 ) (X3 (a), X3 (t3 ), ..., X3 (tN +3 ), X3 (b))


Pour prouver qu'elle est bijective, il sut de prouver qu'elle est injective. Cela rsulte du
lemme 2 appliqu la fonction f = 0. En eet, si les points et vecterus interpols sont
tous nuls, le lemme donne X3 . Avec la conditon initiale X3 (a) = X3 (a) = 0, cela entrane
que X3 , et donc que les Pi sont tous nuls.

Lemme 4 Soient f, x : [a, b] R deux fonctions de classe C 2 . On suppose que


i, x est polynmiale de degr 3 sur chaque intervalle.
ii, f (ti ) = x(ti ) pour i = 3, ..., N + 3 et f (a) = x (a), f (b) = x (b).
Alors,
b

x (t)2 dt.

f (t)2 dt

(f (t) x (t))2 dt =

Preuve. On vrie immdiatement que


b

x (t)2 dt = 2R, o R =

f (t)2 dt+
a

(f (t)x (t))2 dt

(f (t)x (t))x (t)dt.


a

On intgre par parties sur chaque intervalle


ti+1

(f (t) x (t))x (t)dt = (f (ti+1 ) x (ti+1 ))x (ti+1 ) (f (ti ) x (ti ))x (ti )
ti
ti+1

(f (t) x (t))x (t)dt


ti

= (f (ti+1 ) x (ti+1 ))x (ti+1 ) (f (ti ) x (ti ))x (ti )


(f (ti+1 x(ti+1 ))x (ti+1 ) (f (ti ) x(ti ))x (ti )
ti+1

(f (t) x(t))x(4) (t)dt

+
ti

= (f (ti+1 x (ti+1 ))x (ti+1 ) (f (ti ) x (ti ))x (ti ),


33

Mmoire
car x(4) 0 et f (ti+1 x(ti+1 ) = f (ti ) x(ti ) = 0. En additionnant, il vient

R = (f (b) x (b))x (b) (f (a) x (a))x (a) = 0,


car f (a) x (a) = f (b) x (b) = 0.

Thorme 5 Soit f : [a, b] R une fonction de classe C 2 . Soit X3 la fonction B-spline


de degr 3 qui l'interpole en N + 1 point plus les drives aux bornes, selon le thorme
1. Alors
f X3

o h = max|ti+1 ti |.

h3/2
f
2

f X3

et

h1/2 f

2,

Preuve. Posons g = f X3 . Le lemme 2 donne


b

2
2

g (t)2 dt

=
a
b

f (t)2 dt

X3 (t)2 dt

a
2
2.

Par construction, g s'annule aux ti , donc, d'aprs le thorme de Rolle, g s'annule au


moins une fois dans chaque intervalle [ti , ti+1 ]. Tout point t [a, b] est donc distance au
plus h d'un point t tel que g (t ) = 0. On crit :

|g (t)| = |g (t) g (t )|
t

=|

g (s)ds|
t
t

g (s)2 ds)1/2

ds)1/2 (

t
1/2

1/2

2,

d'aprs l'ingalit de Cauchy- Schwarz. Ceci montre que

h1/2 f

Tout point t [a, b] est distance au plus


consquent,

h
2

2.

d'un point t tel que g(t ) = 0. Par

|g(t)| = |g(t) g(t )|


t

=|

g (s)ds|
t

|t t | g

1/2

2.

Remarque Le choix de l'espacement uniforme n'est pas la meilleur solution.


34

Mmoire

2.5.2

Rsolution numrique d'un problme d'interpolation

On se donne le vecteur de noeuds

t0 = t1 = t2 = t3 = 0 < t4 = 1 < ... < tN +2 = N 1 < N = tN +3 = tN +4 = tN +5 = tN +6 .


dans l'intervalle [0, N ]. Il s'agit de trouver le polygone de contrle ( N + 3 sommets) de
la B-spline qui passe par le point Qi en ti+3 et pour drives v0 (resp. vN ) aux extrmits.
On peut supposer que n = 1.
Il s'agit de rsoudre le systme AP = Q pour Q = (Q0 , v0 , Q1 , ..., QN 1 , vN , QN ) et
P RN +3 et

N1,p (a)
0
...
...
...
0
N1,p (a)
N2,p (a)
0
...
...
0

0
N2,p (a + h) N3,p (a + h) N4,p (a + h) . . .
0

..
..
.
.
0
0
...
0
A=
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
. N (b)
.
.
.
.
.
.
N,p

...

...

. . . NN,p (b)

avec p = 3, h = ti ti1 = 1. On utilise les valeurs des fonctions B-splines relatives au


vecteur de noeuds ci-dessus :

X3 (0) = 0,
X3 (0) = 3(P1 P0 ),
7
1
1
P 1 + P2 + P 3 ,
X3 (t4 ) =
4
12
6
1
2
1
X3 (ti+3 ) =
Pi + Pi+1 + Pi+2 ,
6
3
6
pour i 2. On a la matrice suivante :

1
0
0
0 ... ...
3 3
0
0 0 ...

1
7
1
0
0 ...

4 12 6

1
2 1
0
0
...

6
3 6
.
.
. .. .. ..

.
.
.
.
.
.
.
.
A= .
.
1 2
.
.
.
.
.
.
.
.
.
.
.
6 3

1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ... ... ... ... ...

... ... ...


... ... ...

... ... ...

... ... ...

... ... ...

1
... ...

7
1

12 4
.
. 3 3

.
... ... 1

On peux montrer directement que le systme linaire AP = Q a exactement une solution


en montrant que la matrice A est inversible. On remarque que detA = 3detB o la matrice
35

Mmoire
B est :

B=

7
12
1
6

0
.
.
.
.
.
.

1
6
2
3

... ...
1
... ...
6

.. ..
.
. ... ...

.
2
1
1
.
.
6
3
6
.
.
1
7
.
.
.
.
6
12
0

Pour montrer que B est inversible, on prouve que (Bv, v) = 0


(v1 , . . . , vN 1 ). On a

(Bv, v) = (

1
7
v1 + v2 )v1 +
12
6
=

1
3

N 2
2
vi +
i=2

1
6

v RN 1 \{0}, v =

N 3

1
2
1
7
1
( vi + vi+1 + vi+2 )vi+1 + ( vN 1 + vN 2 )vN 1
6
3
6
12
6
i=1

N 2

(vi + vi+1 )2 +
i=1

5 2
5 2
v1 + vN 1 > 0
12
12

v RN 1 \{0}.

Cela indique que la matrice B est inversible.


En Matlab, on a les programmes suivants pour calculer le polygone de contrle et tester
l'interpolation de la courbe par calcul automatique des points de contrle :

Programme 5 - control : Calcule le polygone de contrle.


% fonction qui renvoie les ordonnes des points de controle, leurs abcisses sont les noeuds
% N+1 : nombre de points d'interpolation
% p : degr de la spline
% a, b : bornes de l' intervalle [a,b]sur laquelle on trace la courbe
% vi, vf : tangentes la courbe aux bornes
% Qpoints : ordonnes des points d'interpolation,leurs abcisses sont les noeuds
function [Polygon]=control(N,p,vi,vf,a,b,Qpoints)
% vecteur nodal avec des noeuds multiples en debut et n
ksiVector=zeros(1,N+2*p+1);
ksiVector(1:p)=a;
ksiVector(p+1:N+p+1)=linspace(a,b,N+1);
ksiVector(N+p+2:N+2*p+1)=b;
%matrice A du systme linaire

A=zeros(N+3,N+3);
%premiere ligne
r=Bsp(ksiVector,N+3,p,a);
rr=r(1:N+3,p+1);
A(1,:)=rr';
%deuxieme ligne

s=deriveBsp(ksiVector,N+3,p,a);
ss=s(1:N+3,p+1);
A(2,:)=ss';
%avant-dereniere ligne
36

Mmoire
t=deriveBsp(ksiVector,N+3,p,b);
tt=t(1:N+3,p+1);
A(N+2,:)=tt';
%derniere ligne

u=Bsp(ksiVector,N+3,p,b);
uu=u(1:N+3,p+1);
A(N+3,:)=uu';
%lignes de A

for i=3:N+1
v=Bsp(ksiVector,N+3,p,ksiVector(i+p-1));
vv=v(1:N+3,p+1);
A(i,:)=vv';
end
Q=zeros(N+3,1);
Q(1)=Qpoints(1);
Q(2)=vi;
Q(3:N+1)=Qpoints(2:N);
Q(N+2)=vf;
Q(N+3)=Qpoints(N+1);
Polygon= (A'*A)\(A'*Q);
end

Programme 6 - spline1 : Test d'interpolation de la courbe par calcul automatique


des points de contrle.

function test1=spline1()
p=3;
a=-5;
b=5;
N=6;
points2trace=linspace(a,b,1000);
ksiVector=zeros(1,N+2*p+1);
ksiVector(1:p)=a;
ksiVector(p+1:N+p+1)=linspace(a,b,N+1);
ksiVector(N+p+2:N+2*p+1)=b;
vi=0;
vf=0;
Qp=zeros(N+1);
for i=1:N+1
w=ksiVector(i+p);
Qp(i)=1 (1+w 2);
37

Mmoire
end
pc=control(N,p,vi,vf,a,b,Qp);
pointsControles=zeros(2,N+3);
pointsControles(1,:)=ksiVector(p:N+p+2);
for i=1:N+3
pointsControles(2,i)=pc(i,1);
end
m2=ip(ksiVector,pointsControles,p,points2trace);
hold on
ezplot('1/(1+x*x)');
q=plot(m2(:,1),m2(:,2),'green');
hold off
end
1/(1+x2)
Bspline courbe N=6

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5

0
x

Figure 17  Interpolation sur [5, 5] avec N = 6


1/(1+x2)
N=8
N=6
N=10

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5

0
x

Figure 18  Interpolation sur [5, 5] avec N = 6, N = 8, N = 10


38

Mmoire

2.6 La mthode d'lments nis par B-splines


Dans cette mthode, on reconsidre le problme de Dirichlet homogne dans la mthode d'lments nis classique. Mais, on choisit les fonctions bases de Vh sont les fonctions
B-splines de degr p : wi := Ni,p , i = 1, . . . , n. Alors on peut crire le problme approch
dans V0,h suivant : Trouver la fonction uh appartenant V0,h telle que :
b

uh (x)Ni,p xdx + uh (a)Ni,p (a) uh (b)Ni,p (b) +

uh (x)Ni,p (x)dx
a

a
b

f (x)Ni,p (x), i = 2, . . . , n 1.

=
a

D'autre part, si uh est une solution du problme approch dans V0,h , on peut exprimer : :
n1

uh (x) =

uj Nj,p (x).
j=2

Ainsi, le problme approch : Trouver u2 , u3 , . . . , un1 tels que


n1

Nj,p (x)Ni,p (x)dx + Nj,p (a)Ni,p (a) Nj,p (b)Ni,p (b) +


j=2

Nj,p (x)Ni,p (x)dx uj


a

f (x)Ni,p (x), i = 2, . . . , n 1.

=
a

Posons

f (x)Ni,p (x)dx,

Fi :=
a
b

Nj,p (x)Ni,p (x)dx + Nj,p (a)Ni,p (a) Nj,p (b)Ni,p (b) +

Aij :=
a

Nj,p (x)Ni,p (x)dx.


a

On remarque que le problme approch prennant la forme d'un systme linaire de n 2


quations n 2 inconnues, qui peut s'crire sous la forme matricielle suivante :

AU = F.

Calcule matrice membre gauche

Chaque composante Aij de la matrice membre gauche s'rit

Aij = mij + cij ,


o

mij =

Nj,p (x)Ni,p (x)dx +


a

Nj,p (x)Ni,p (x)dx


a

et

cij = Nj,p (a)Ni,p (a) Nj,p (b)Ni,p (b).

39

Mmoire
Chaque composante mij est galement calcule par assemblage de contributions lmentaires :
b

(Nj,p (x)Ni,p (x) + Nj,p (x)Ni,p (x))dx

mij =

a
np

(Nj,p (x)Ni,p (x) + Nj,p (x)Ni,p (x))dx

=
s=1

Ts

On remarque que sur l'lment Ts , il n'a que p+1 fonctions B-splines Ns,p , Ns+1,p , . . . , Ns+p,p
non nulles et il n'a que p + 1 drivs Ns,p , Ns+1,p , . . . , Ns+p,p non nulles. On peut donc utiliser le technique d'assemblage pour calculer les composantes mij .

Calcul des composantes du second - membre

Chaque composante Fi du vecteur second - membre global est galement calcule par
assemblage de contributions lmentaires :
np

f (x)Ni,p (x)dx =

Fi =
a

f (x)Ni,p (x)dx
s=1

Ts

Sur lment Ts , il n'a que p + 1 fonctions B-splines Ns,p , Ns+1,p , . . . , Ns+p,p non nulles. On
peut donc utiliser le technique d'assemblage pour calculer les composantes Fi .
On a le programme suivant en matlab pour approximation solution u par B-splines :

f u n c t i o n t e s t=E l e m e n t F i n i 1 D p a r B s p l i n e ( )
ComparaisonparBspline ( ) ;
end
f u n c t i o n t e s t 0=C o m p a r a i s o n p a r B s p l i n e ( )
nh=15; % nombre de l i b e r t e
p=3;
a l p h a =1;
b e t a =1;
a =0;
b=1;
nbpt =200;
s h i f t =(ba ) / 1 0 0 0 ;
I=l i n s p a c e ( a , b s h i f t , nbpt ) ;
f u n c t i o n y=f ( x )
y=x ^ 4 ;
end
[ g ,G]= s o l u t i o n ( p , nh , alpha , beta , @f , a , b , I ) ;
gp=d e r S o l u t i o n ( p , nh ,G, I , a , b ) ;
x=I ;
c2 = (37 24 exp ( 1 ) ) / ( exp (1) exp ( 1 ) ) ;
c1 =24 c2 ;
s_exact=z e r o s ( 1 , s i z e ( x , 2 ) ) ;
40

Mmoire
f o r i =1: s i z e ( x , 2 )
s_exact ( i )=c1 exp ( x ( i ) ) + c2 exp( x ( i ))+ x ( i )^4 + 12 x ( i )^2 + 24
end
e r r=gs_exact ;
em=max( abs ( e r r ) )
h o l d on
close all ;
e=p l o t ( I , e r r ) ;
x l a b e l ( ' x ' ) ; y l a b e l ( ' Erreur ' ) ; t i t l e ( ' E r r e u r du s o l u t i o n e x a c t e ' ) ;
s e t ( e , ' Color ' , ' black ' , ' LineWidth ' , 2 ) ;
hold o f f
figure ;
p=p l o t ( I , s_exact ) ;
x l a b e l ( ' x ' ) ; y l a b e l ( ' u( x ) ' ) ; t i t l e ( ' Solution exacte ' ) ;
s e t ( p , ' Color ' , ' blue ' , ' LineWidth ' , 2 ) ;
figure ;
q=p l o t ( I , g ) ;
x l a b e l ( ' x ' ) ; y l a b e l ( ' u ( x ) ' ) ; t i t l e ( ' S o l u t i o n approche ' ) ;
s e t ( q , ' Color ' , ' red ' , ' LineWidth ' , 1 . 5 ) ;
hold o f f
figure ;
d=p l o t ( I , gp ) ;
xlabel ( 'x ' ) ; ylabel ( 'u ' '( x ) ');
t i t l e ( ' P re mi re d r i v e de l a s o l u t i o n approche ' ) ;
s e t ( d , ' Color ' , ' blue ' , ' LineWidth ' , 1 . 5 ) ;
% hold o f f
end
f u n c t i o n [ sp ]=Bsp ( k s i V e c t o r , n , p , k s i )
sp=z e r o s ( n+p , p +1);
f o r j =1:p+1
j 0=j 1;
f o r i =1:n+p j 0
k i=k s i V e c t o r ( i ) ;
k i 1=k s i V e c t o r ( i +1);
i f ( j 0 ==0)
i f ( k s i >=k i && k s i <k i 1 )
sp ( i , j )=1;
else
sp ( i , j )=0;
end
else
k i p=k s i V e c t o r ( i+j 0 ) ;
41

Mmoire
k i p 1=k s i V e c t o r ( i+j 0 +1);
i f ( k i p==k i )
t g =0;
else
t g =( k s i k i ) / ( kip k i ) ;
end

end

end

end

end

i f ( k i p 1==k i 1 )
td =0;
else
td=( kip1 k s i ) / ( kip1 k i 1 ) ;
end
sp ( i , j )= t g sp ( i , j 0 )+td sp ( i +1, j 0 ) ;

% c a l c u l e l e s d r i v e s de f o n c t i o n s s p l i n e s au p o i n t k s i
f u n c t i o n [ dsp ]= d e r i v e B s p ( k s i V e c t o r , n , p , k s i )
U=Bsp ( k s i V e c t o r , n , p , k s i ) ;
dsp=z e r o s ( n+p , p +1);
f o r j =1:p+1
j 0=j 1;
f o r i =1:n+p j 0
k i=k s i V e c t o r ( i ) ;
k i 1=k s i V e c t o r ( i +1);
i f ( j 0 ==0)
dsp ( i , j )=0;
else
k i p=k s i V e c t o r ( i+j 0 ) ;
k i p 1=k s i V e c t o r ( i+j 0 +1);
i f ( k i p==k i )
dtg =0;
else
dtg=j 0 / ( kip k i ) ;
end

end

end

i f ( k i p 1==k i 1 )
dtd =0;
else
dtd= j 0 / ( kip1 k i 1 ) ;
end
dsp ( i , j )= dtg U( i , j 0 )+dtd U( i +1, j 0 ) ;

42

Mmoire
end

end

f u n c t i o n n i p=s p l i n e K s i ( k s i V e c t o r , n , p , k s i )
mat=Bsp ( k s i V e c t o r , n , p , k s i ) ;
n i p=mat ( n , p +1);
end
f u n c t i o n dnip=d s p l i n e K s i ( k s i V e c t o r , n , p , k s i )
mat=d e r i v e B s p ( k s i V e c t o r , n , p , k s i ) ;
dnip=mat ( n , p +1);
end

f u n c t i o n [ ap]= a p r o x i m a t i o n ( g , x0 , x1 )
w=[(18 s q r t ( 3 0 ) ) / 3 6 , ( 1 8 + s q r t ( 3 0 ) ) / 3 6 , ( 1 8 + s q r t ( 3 0 ) ) / 3 6 , ( 1 8 s q r t ( 3 0 ) ) / 3
xpq=[ s q r t ((3+2 s q r t ( 6 / 5 ) ) / 7 ) , s q r t ((3 2 s q r t ( 6 / 5 ) ) / 7 ) ,
s q r t ((3 2 s q r t ( 6 / 5 ) ) / 7 ) , s q r t ((3+2 s q r t ( 6 / 5 ) ) / 7 ) ] ;
gpq =[g ( ( x0+x1 )/2+( x1x0 ) / 2 xpq ( 1 ) ) , g ( ( x0+x1 )/2+( x1x0 ) / 2 xpq ( 2 ) ) ,
g ( ( x0+x1 )/2+( x1x0 ) / 2 xpq ( 3 ) ) , g ( ( x0+x1 )/2+( x1x0 ) / 2 xpq ( 4 ) ) ] ;
ap =0;
f o r i =1:4
ap=ap+w( i ) gpq ( i ) ;
end
ap=ap ( x1x0 ) / 2 ;
end
f u n c t i o n [ i e s ]= i n t e g r e E l e m e n t _ s ( e l F i n i s , s , g )
x0=e l F i n i s ( 1 ) ;
x1=e l F i n i s ( 2 ) ;
l k=s i z e ( e l F i n i s , 2 ) 1 ;
pas=( e l F i n i s ( l k +1) e l F i n i s ( 1 ) ) / l k ;
f u n c t i o n y=h ( x )
y=g ( x+(s 1) pas ) ;
end
i e s=a p r o x i m a t i o n (@h, x0 , x1 ) ;
end
f u n c t i o n mge=i j f u n c t i o n ( k s i V e c t o r , p , alpha , beta , i , j , x )
Nip=s p l i n e K s i ( k s i V e c t o r , i , p , x ) ;
Njp=s p l i n e K s i ( k s i V e c t o r , j , p , x ) ;
dNip=d s p l i n e K s i ( k s i V e c t o r , i , p , x ) ;
dNjp=d s p l i n e K s i ( k s i V e c t o r , j , p , x ) ;
mge=( a l p h a dNip dNjp )+( b e t a Nip Njp ) ;
end

f u n c t i o n [ i j f s ]= i n t g _ i j f u n c t i o n _ E l e m e n t _ s ( k s i V e c t o r , p , alpha , beta , i , j , e l F i
i j f s =i n t e g r e E l e m e n t _ s ( e l F i n i s , s , @ a i j ) ;
43

Mmoire

end

f u n c t i o n a i j=a i j ( x )
a i j=z e r o s ( s i z e ( x , 1 ) , s i z e ( x , 2 ) ) ;
f o r k=1: s i z e ( x , 2 )
a i j ( k)= i j f u n c t i o n ( k s i V e c t o r , p , alpha , beta , i , j , x ( k ) ) ;
end
end

f u n c t i o n [ ms]= m a t s o l u t i o n ( k s i V e c t o r , e l F i n i s , p , nh , alpha , b e t a )
ms=z e r o s ( nh , nh ) ;
c=z e r o s ( nh , nh ) ;
l h=nhp ;
r=s i z e ( e l F i n i s , 2 ) ;
f o r i =1:nh
f o r j =1:nh
Nipa=s p l i n e K s i ( k s i V e c t o r , j , p , e l F i n i s ( 1 ) ) ;
dNjpa=d s p l i n e K s i ( k s i V e c t o r , i , p , e l F i n i s ( 1 ) ) ;
Nipb=s p l i n e K s i ( k s i V e c t o r , j , p , e l F i n i s ( r ) ) ;
dNjpb=d s p l i n e K s i ( k s i V e c t o r , i , p , e l F i n i s ( r ) ) ;
c ( i , j )= a l p h a ( dNjpa NipadNjpb Nipb ) ;
end
end
f o r s =1: l h
f o r i=s : s+p
f o r j=s : s+p
ms( i , j )=ms( i , j )+ i n t g _ i j f u n c t i o n _ E l e m e n t _ s ( k s i V e c t o r , p , alpha , beta , i , j , e l F
end
end
end
end
f u n c t i o n mgem2=j f u n c t i o n m 2 ( k s i V e c t o r , p , f , j , x )
Njp=s p l i n e K s i ( k s i V e c t o r , j , p , x ) ;
mgem2=f ( x ) Njp ;
end

f u n c t i o n [ j f s ]= intg_jfunction_Element_s ( k s i V e c t o r , p , alpha , beta , j , e l F i n i s ,


j f s =i n t e g r e E l e m e n t _ s ( e l F i n i s , s , @bj ) ;
f u n c t i o n b j=b j ( x )
b j=z e r o s ( s i z e ( x , 1 ) , s i z e ( x , 2 ) ) ;
f o r k=1: s i z e ( x , 2 )
b j ( k)= j f u n c t i o n m 2 ( k s i V e c t o r , p , f , j , x ( k ) ) ;
end
end
end
f u n c t i o n [ l ]= vectMember2 ( k s i V e c t o r , e l F i n i s , p , alpha , beta , nh , f )
44

Mmoire

end

l=z e r o s ( nh , 1 ) ;
l h=nhp ;
f o r s =1: l h
f o r j=s : s+p
l ( j )= l ( j )+ intg_jfunction_Element_s ( k s i V e c t o r , p , alpha , beta , j , e
end
end

f u n c t i o n [U]= d e g r e s _ d e _ l i b e r t e ( p , nh , alpha , beta , f , a , b )


k s i V e c t o r=z e r o s ( 1 , nh+p +1);
l h=nhp ;
k s i V e c t o r ( 1 , 1 : p)=a ;
k s i V e c t o r ( 1 , p+1: l h+p+1)= l i n s p a c e ( a , b , l h +1);
k s i V e c t o r ( 1 , l h+p+2:nh+p+1)=b ;
e l F i n i s=k s i V e c t o r ( 1 , p+1: l h+p +1);

end

A=m a t s o l u t i o n ( k s i V e c t o r , e l F i n i s , p , nh , alpha , b e t a ) ;
A( 1 , : ) = 0 ;A( 1 , 1 ) = 1 ;
A( nh , : ) = 0 ;A( nh , nh )=1;
L=vectMember2 ( k s i V e c t o r , e l F i n i s , p , alpha , beta , nh , f ) ;
L( 1 ) = 0 ;
L( nh )=0;
U=A\L ;

f u n c t i o n [ u ,U]= s o l u t i o n ( p , nh , alpha , beta , f , a , b , I )


k s i V e c t o r=z e r o s ( 1 , nh+p +1);
l h=nhp ;
k s i V e c t o r ( 1 , 1 : p)=a ;
k s i V e c t o r ( 1 , p+1: l h+p+1)= l i n s p a c e ( a , b , l h +1);
k s i V e c t o r ( 1 , l h+p+2:nh+p+1)=b ;
u=z e r o s ( 1 , s i z e ( I , 2 ) ) ;
U=d e g r e s _ d e _ l i b e r t e ( p , nh , alpha , beta , f , a , b ) ;
f o r x=1: s i z e ( I , 2 )
u ( x )=0;
f o r i =1:nh
u ( x)=u ( x)+U( i ) s p l i n e K s i ( k s i V e c t o r , i , p , I ( x ) ) ;
end
end
end
f u n c t i o n u=d e r S o l u t i o n ( p , nh , U, I , a , b )
k s i V e c t o r=z e r o s ( 1 , nh+p +1);
l h=nhp ;
k s i V e c t o r ( 1 , 1 : p)=a ;
k s i V e c t o r ( 1 , p+1: l h+p+1)= l i n s p a c e ( a , b , l h +1);
45

Mmoire

end

k s i V e c t o r ( 1 , l h+p+2:nh+p+1)=b ;
u=z e r o s ( 1 , s i z e ( I , 2 ) ) ;
f o r x=1: s i z e ( I , 2 )
u ( x )=0;
f o r i =1:nh
u ( x)=u ( x)+U( i ) d s p l i n e K s i ( k s i V e c t o r , i , p , I ( x ) ) ;
end
end

46

Mmoire
Solution approche
0.018
0.016
0.014
0.012

u(x)

0.01
0.008
0.006
0.004
0.002
0

0.2

0.4

0.6

0.8

0.8

Solution exacte
0.018
0.016
0.014
0.012

u(x)

0.01
0.008
0.006
0.004
0.002
0

0.2

0.4

0.6
x

Premire drive de la solution approche


0.04
0.02
0
0.02

0.06
0.08
0.1
0.12
0.14
0.16

0.2

0.4

0.6

0.8

Erreur du solution exacte erreur =6.9393e007

x 10

6
4
2
Erreur

u(x)

0.04

0
2
4
6
8

0.2

0.4

0.6

0.8

47

Mmoire

3 Commentaire
Commentaire sur la mthode d'lments nis classique et la mthode d'lments nis par B-splines
1. La similarit
Dans les deux mthodes, on utilise la mme formulation variationnelle et la mme
technique l'assemblage.
2. La dirence
 La base : Dans la mthode d'lments nis classique, on choisit les fonctions
d'interpolations de Lagrange et dans la mthode d'lments nis par B-splines,
on choisit les fonctions B-splines. Pour le degr un, les bases de deux mthodes
sont concides, mais elles sont direntes en degr suprieur 1.
 La continuit : Les fonctions d'interpolations de Lagrange de degr p sont seulement de classe C 0 mais les fonctions B-splines de degr p sont de classe C p1 .
 Les fonctions d'interpolations de Lagrange peuvent recevoir des valeurs ngatives,
mais les fonctions B-splines sont toujours positifs, donc tous les composants de la
matrice de raideur dans la mthode des lments nis par B-splines sont toujours
positifs.
 Le nombre de fonctions de base : Avec la mme N lments, dans la mthode des
lments nis classique pour degr p, on doit calculer N p + 1 fonctions de base,
mais dans la mthode des lments nis par B-splines, on doit seulement calculer
N + p fonctions de base.
 L'erreur entre deux mthodes :

48

Mmoire
3

20

Elments finis classique de degr 1

x 10

20

Elments finis par Bsplines de degr 1

x 10

solution approche
solution exacte

solution exacte
solution approche
15

15
err = 4.2711e004

err = 1.3527e004

u(x)

10

u(x)

10

0.2

0.4

0.6

0.8

0.2

0.4

Elments finis classique de degr 2


0.018

20

0.8

0.8

solution approche
solution exacte
15

err = 4.5438e007

0.014

0.8

Elments finis par Bsplines de degr 2

x 10

solution exacte
solution approche

0.016

0.6
x

err = 7.6583e006

0.012

u(x)

u(x)

10
0.01
0.008
5
0.006
0.004

0.002
0

0.2

0.4

0.6

0.8

0.2

0.4

Elments finis classique de degr 3

Elments finis par Bsplines de degr 3

0.018

0.018
solution exacte
solution approche

0.016
0.014

solution approche
solution exacte

0.016
0.014

err = 1.6163e006

0.01

err = 2.3235e007

0.012
0.01

u(x)

0.012

u(x)

0.6
x

0.008

0.008

0.006

0.006

0.004

0.004

0.002

0.002

0.2

0.4

0.6
x

0.8

0.2

0.4

0.6
x

49

Mmoire

RFRENCES
[1] P.A.RAVIART, J.M.THOMAS, Introduction l'analyse numrique des quations aux
drives partielles, MASSON (1983)
[2] Pierre PANSU, Interpolation et Approximation par des B-splines, February 9, 2004.
[3] J.Austin Cottrell, Thomas J.R.Hughes, Yuri Bazilevs, Isogeometric Analysis : toward
integration of CAD and FEA, WILEY(2009)

50

You might also like