Vous êtes sur la page 1sur 12

ECOLE POLYTECHNIQUE D’ABOMEY-CALAVI

Méthode numérique et programmation


durée : 2h30mn
Corrigé type

NB :

 Cet examen est strictement individuel. Toute communication avec


le voisin est interdite ! ;
 Il n’est requis aucune connaissance en mécanique ;
 Les apprenants pourront disposer des notes de cours s’ils le
désirent ;
 Tout fichier ou M-file produit dans le cadre de cet examen sera
enregistré dans un dossier portant le nom et le prénom du candidat
(exemple : TossouPierre).
Problème 1 (12pts)
On se propose d’étudier le problème de vibration mécanique dont le modèle
physique est un système de pendule triple (figure 1). Les équations gouvernant
les mouvements de vibration se traduisent par le problème aux valeurs
initiales (1)

Figure 1 : modèle physique


𝑑2 𝜃1 (𝑚𝑔𝑙 + 𝑘𝑙 2 ) 𝑘
= − 𝑠𝑖𝑛(𝜃1 ) + 𝑠𝑖𝑛(𝜃2 ) + 𝐹𝑠𝑖𝑛(𝜔𝑡)
𝑑𝑡 2 𝑚𝑙 2 𝑚
𝑑 2 𝜃2 𝑘 (𝑚𝑔𝑙 + 2𝑘𝑙 2 ) 𝑘
2
= 𝑠𝑖𝑛(𝜃 1 ) − 2
𝑠𝑖𝑛(𝜃2 ) + 𝑠𝑖𝑛(𝜃3 )
𝑑𝑡 𝑚 𝑚𝑙 𝑚
2
𝑑 𝜃3 𝑘 (𝑚𝑔𝑙 + 𝑘𝑙 2) (1)
2
= 𝑠𝑖𝑛(𝜃2 ) − 𝑠𝑖𝑛(𝜃3 )
𝑑𝑡 𝑚 𝑚𝑙 2
𝜋
𝜃1 (0) = 𝜃2 (0) = 𝜃3 (0) =
12
′ (0) ′ (0) ′ (0)
{ 𝜃1 = 𝜃2 = 𝜃3 =0
1. En posant :

Page 1 sur 12
𝜃1 = 𝜑1
𝜃1′ = 𝜑2
𝜃2 = 𝜑3
𝜃2′ = 𝜑4
𝜃3 = 𝜑5
{𝜃3′ = 𝜑6
Montrer que le problème (1) se ramène à un système différentiel de la
forme :

𝑑𝜑1
= 𝑓1 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡
𝑑𝜑2
= 𝑓2 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡
𝑑𝜑3
= 𝑓3 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡
𝑑𝜑4
= 𝑓4 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡 (2)
𝑑𝜑5
= 𝑓5 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡
𝑑𝜑6
= 𝑓6 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡
𝜋
𝜑1 (0) = 𝜑3 (0) = 𝜑5 (0) = 12
{ 𝜑2 (0) = 𝜑4 (0) = 𝜑6 (0) = 0

Montrons que le problème (1) se ramène à un système différentiel de la forme (2)

Avec
𝜃1 = 𝜑1
𝜃1′ = 𝜑2
𝜃2 = 𝜑3
𝜃2′ = 𝜑4
𝜃3 = 𝜑5
{𝜃3′ = 𝜑6
On a

𝑑𝜑1 𝑑𝜃1
 𝜃1 = 𝜑1 ⇒ = = 𝜑2 ≡ 𝑓1 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡 𝑑𝑡
𝑑𝜑1
= 𝑓1 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = 𝜑2 ( )
𝑑𝑡
𝑑𝜑2 𝑑2 𝜃1 (𝑚𝑔𝑙+𝑘𝑙2 ) 𝑘
 𝜃1′ = 𝜑2 ⇒ = =− 𝑠𝑖𝑛(𝜃1 ) + 𝑚 𝑠𝑖𝑛(𝜃2 ) + 𝐹𝑠𝑖𝑛(𝜔𝑡)
𝑑𝑡 𝑑𝑡 2 𝑚𝑙2

Et puisque 𝜃1 = 𝜑1 et 𝜃2 = 𝜑3, on a

𝑑𝜑2 (𝑚𝑔𝑙 + 𝑘𝑙 2 ) 𝑘
=− 2
𝑠𝑖𝑛(𝜑1 ) + 𝑠𝑖𝑛(𝜑3 ) + 𝐹𝑠𝑖𝑛(𝜔𝑡)
𝑑𝑡 𝑚𝑙 𝑚

On pose alors

Page 2 sur 12
(𝑚𝑔𝑙 + 𝑘𝑙 2 ) 𝑘
𝑓2 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = − 2
𝑠𝑖𝑛(𝜑1 ) + 𝑠𝑖𝑛(𝜑3 ) + 𝐹𝑠𝑖𝑛(𝜔𝑡)
𝑚𝑙 𝑚
𝑑𝜑2
= 𝑓2 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) ( )
𝑑𝑡

𝑑𝜑3 𝑑𝜃2
 𝜃2 = 𝜑3 ⇒ = = 𝜑4 ≡ 𝑓3 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡 𝑑𝑡
𝑑𝜑3
= 𝑓3 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = 𝜑4 ( )
𝑑𝑡
𝑑𝜑4 𝑑2 𝜃2 𝑘 (𝑚𝑔𝑙+2𝑘𝑙2 ) 𝑘
 𝜃2′ = 𝜑4 ⇒ = = 𝑚 𝑠𝑖𝑛(𝜃1 ) − 𝑠𝑖𝑛(𝜃2 ) + 𝑚 𝑠𝑖𝑛(𝜃3 )
𝑑𝑡 𝑑𝑡 2 𝑚𝑙2

Et puisque 𝜃1 = 𝜑1, 𝜃2 = 𝜑3 et 𝜃3 = 𝜑5 , on a
𝑑𝜑4 𝑘 (𝑚𝑔𝑙+2𝑘𝑙2 ) 𝑘
= 𝑚 𝑠𝑖𝑛(𝜑1 ) − 𝑠𝑖𝑛(𝜑3 ) + 𝑚 𝑠𝑖𝑛(𝜑5 )
𝑑𝑡 𝑚𝑙2

On pose alors

𝑘 (𝑚𝑔𝑙 + 2𝑘𝑙 2 ) 𝑘
𝑓4 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = )
𝑠𝑖𝑛(𝜑1 − 𝑠𝑖𝑛(𝜑 3 ) + 𝑠𝑖𝑛(𝜑5 )
𝑚 𝑚𝑙 2 𝑚
𝑑𝜑4
= 𝑓4 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) ( )
𝑑𝑡

𝑑𝜑5 𝑑𝜃3
 𝜃3 = 𝜑5 ⇒ = = 𝜑6 ≡ 𝑓5 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 )
𝑑𝑡 𝑑𝑡
𝑑𝜑5
= 𝑓5 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) ( )
𝑑𝑡
𝑑𝜑6 𝑑2 𝜃3 𝑘 (𝑚𝑔𝑙+𝑘𝑙2 )
 𝜃3′ = 𝜑6 ⇒ = = 𝑚 𝑠𝑖𝑛(𝜃2 ) − 𝑠𝑖𝑛(𝜃3 )
𝑑𝑡 𝑑𝑡 2 𝑚𝑙2

Et puisque 𝜃2 = 𝜑3 et 𝜃3 = 𝜑5 , on a
𝑑𝜑6 𝑘 (𝑚𝑔𝑙+𝑘𝑙2 )
= 𝑚 𝑠𝑖𝑛(𝜑3 ) − 𝑠𝑖𝑛(𝜑5 ) ≡ 𝑓6 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) ( )
𝑑𝑡 𝑚𝑙2

 En somme
𝑓1 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = 𝜑2
(𝑚𝑔𝑙 + 𝑘𝑙 2 ) 𝑘
𝑓2 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = − 2
𝑠𝑖𝑛(𝜑1 ) + 𝑠𝑖𝑛(𝜑3 ) + 𝐹𝑠𝑖𝑛(𝜔𝑡)
𝑚𝑙 𝑚
𝑓3 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = 𝜑4
𝑘 (𝑚𝑔𝑙 + 2𝑘𝑙 2 ) 𝑘
𝑓4 (𝑡, 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 ) = 𝑠𝑖𝑛(𝜑1 ) − 2
𝑠𝑖𝑛(𝜑3 ) + 𝑠𝑖𝑛(𝜑5 )
𝑚 𝑚𝑙 𝑚
(𝑡,
𝑓5 𝜑1 , 𝜑2 , 𝜑3 , 𝜑4 , 𝜑5 , 𝜑6 = 𝜑6 )
𝑘 (𝑚𝑔𝑙 + 𝑘𝑙 2 )
𝑓 (𝑡, 𝜑 , 𝜑 , 𝜑 , 𝜑 , 𝜑 , 𝜑 ) = 𝑠𝑖𝑛(𝜑 ) − 𝑠𝑖𝑛(𝜑5 )
{ 6 1 2 3 4 5 6
𝑚 3
𝑚𝑙 2
Les conditions initiales sont données par :
𝜋 𝜋
𝜃1 (0) = 𝜃2 (0) = 𝜃3 (0) = 12 ⇒ 𝜑1 (0) = 𝜑3 (0) = 𝜑5 (0) = 12 ( )

𝜃1′ (0) = 𝜃2′ (0) = 𝜃3′ (0) = 0 ⇒ 𝜑2 (0) = 𝜑4 (0) = 𝜑6 (0) = 0 ( )

Page 3 sur 12
2. Utilisation des solveurs [𝑥, 𝑦] = 𝑅𝐾4𝑒𝑥𝑝𝑆𝑦𝑠(𝐹, 𝑎, 𝑏, 𝑢, 𝑁) et 𝑜𝑑𝑒45( ) pour
la résolution du problème (2) :
 Donner les commandes Matlab définissant les arguments F, a, b,
u et N du solveur [𝑥, 𝑦] = 𝑅𝐾4𝑒𝑥𝑝𝑆𝑦𝑠(𝐹, 𝑎, 𝑏, 𝑢, 𝑁), puis ceux relatifs
à 𝑜𝑑𝑒45( ) ;

Utilisation de [𝑥, 𝑦] = 𝑅𝐾4𝑒𝑥𝑝𝑆𝑦𝑠(𝐹, 𝑎, 𝑏, 𝑢, 𝑁)

Les commandes MATLAB pour définir les arguments F, a, b, u et N du solveur :


Il faut avoir défini au préalable les grandeurs m, l, k, 𝜔, F et N. Mais la question suivante
résout ce problème. Nous donnerons ici juste les instructions qui définiront les
arguments, une fois m, l, k, 𝜔, F et N définis.
>>km=k/m ; x0=m*g*l ; x1=k*l^2 ;x2= m*l^2 ;x3=(x0+2*x1)/x2 ;
>>x4=(x0+x1)/x2 ;
>> 𝐹1 = @(𝑡, 𝑦)[𝑦(2); −𝑥4 ∗ sin(𝑦(1)) + 𝑘𝑚 ∗ sin(𝑦(3)) + 𝐹 ∗ sin(𝑜𝑚𝑒𝑔𝑎 ∗ 𝑡); 𝑦(4)
𝑘𝑚 ∗ sin(𝑦(1)) − 𝑥3 ∗ sin(𝑦(3)) + 𝑘𝑚 ∗ sin(𝑦(5)); 𝑦(6)
𝑘𝑚 ∗ sin(𝑦(3)) − 𝑥4 ∗ sin(𝑦(5))]; ( )
>>a=0 ;b=10 ;u=pi/12*[1 ;0 ;1 ;0 ;1 ;0] ; N=1000 ; ( )

Utilisation de 𝑜𝑑𝑒45()
La syntaxe de 𝑜𝑑𝑒45() est :
>>[𝑥, 𝑦] = 𝑜𝑑𝑒45(𝐹1, [𝑎; 𝑏], 𝑢) ;
Où a besoin des arguments F1, a,b et u sont définis comme pour [𝑥, 𝑦] =
𝑅𝐾4𝑒𝑥𝑝𝑆𝑦𝑠(𝐹1, 𝑎, 𝑏, 𝑢, 𝑁).
 Ecrire un script qui lit au clavier les grandeurs :
 m : masse des pendules (Kg) ;
 l : longueur de bras (m) ;
 k : rigidité des ressorts (N/m) ;
 𝝎 : pulsation (rad/s) ;
 𝑭 : intensité maximale de la force appliquée (N) ;
 𝑵 : nombre de subdivision pour la résolution du
problème

Page 4 sur 12
et qui représente sur [0 ;10], dans un même graphique, les solutions
𝜽𝟏 , 𝜽𝟐 𝒆𝒕 𝜽𝟑 du problème (1) aussi bien par [𝒙, 𝒚] = 𝑹𝑲𝟒𝒆𝒙𝒑𝑺𝒚𝒔(𝑭, 𝒂, 𝒃, 𝒖, 𝑵) que
par 𝒐𝒅𝒆𝟒𝟓( ). Exécuter ce script avec :

𝒎 = 𝟏𝟎𝑲𝒈, 𝒍 = 𝟏. 𝟓𝒎, 𝒌 = 𝟏𝟎𝟎𝑵/𝒎, 𝝎 = 𝟏𝟎𝝅 𝒓𝒂𝒅/𝒔, 𝑭 = 𝟏𝟎𝟎𝑵, 𝑵 = 𝟏𝟎𝟎𝟎

Le script

%==========================================================================
% Ecole Polytechnique d’abomey-Calavi
% ------------
% EEER 2017-2018
% ------------
% Cours de méthodes numériques – phase pratique
% Devoir n°1
% Problème 1 : Programme pour la résolution numérique d'un système
% d'équations différentielles
%
% Entrées
% m : masse des pendules (Kg) ;
% l : longueur de bras (m) ;
% k : rigidité des ressorts (N/m) ;
% omega : pulsation (rad/s) ;
% F : intensité maximale de la force appliquée (N) ;
% N : nombre de subdivision pour la résolution du problème
%
% Sorties : Représentation graphique de la solution du problème
%
% Auteur : GBAGUIDI T. Brice
%==========================================================================
%-----La constante de gravitation
g=9.81;
%-----Lecture des entrées
fprintf('Veuillez entrer les paramètres du problème\n');
fprintf(' Masse m(Kg)= ');
m=input('');
fprintf(' Longueur l(m)= ');
l=input('');
fprintf(' Rigidité des ressorts k(N/m)= ');
k=input('');
fprintf(' Pulsation omega(rad/s)= ');
omega=input('');
fprintf(' Intensité maximale de la force appliquée F(N)= ');
F=input('');
fprintf(' nombre de subdivision pour la résolution du problème N(-)= ');
N=input('');
%-----Variables intermédiaires
km=k/m ; x0=m*g*l ; x1=k*l^2 ;x2= m*l^2 ;x3=(x0+2*x1)/x2 ;
x4=(x0+x1)/x2 ;
%--Définition des paramètres d'entrée des solveurs
F1=@(t,y)[y(2);-x4*sin(y(1))+km*sin(y(3))+F*sin(omega*t);y(4)
km*sin(y(1))-x3*sin(y(3))+km*sin(y(5));y(6)
km*sin(y(3))-x4*sin(y(5))];
a=0 ;b=10 ;u=pi/12*[1 ;0 ;1 ;0 ;1 ;0] ;
%--------Appel du solveur [t,y]=RK4expSys(F1,a,b,u,N) pour la résolution
[t1,y1]=RK4expSys(F1,a,b,u,N);
%--------Appel du solveur [t,y]=ode45(F1,[a;b],u) pour la résolution
[t2,y2]=ode45(F1,[a;b],u);

Page 5 sur 12
%--------Représentation graphique
plot(t1,y1(1,:),t1,y1(3,:),t1,y1(5,:),t2,y2(:,1),t2,y2(:,3),t2,y2(:,5));
legend('Theta1 RK4','Theta2 RK4','Theta3 RK4', 'Theta1 ode45','Theta2
ode45','Theta3 ode45');

NB : On donne 𝒈 = 𝟗. 𝟖𝟏. On affichera une légende et les titres des axes.

1.5
Theta1 RK4
Theta2 RK4
Theta3 RK4
Theta1 ode45
Theta2 ode45
1 Theta3 ode45

0.5

-0.5

-1

-1.5
0 1 2 3 4 5 6 7 8 9 10

Que conclure des deux solveurs en termes de précision par rapport à ce


problème ?
Qu’il s’agisse de 𝜃1 , 𝜃2 𝑜𝑢 𝜃3 , les courbes obtenues pour les deux solveurs
semblent confondues. Mais il faut prendre en compte l’échelle en x et en y. En
effet, un zoom sur 𝜃3 montre un écart entre les deux courbes. Cet écart est de
l’ordre de 0.0025 en ordonnée.

Theta1 RK4
-0.08 Theta2 RK4
Theta3 RK4
Theta1 ode45
-0.085 Theta2 ode45
Theta3 ode45

-0.09

-0.095

-0.1

-0.105

-0.11

-0.115

-0.12

-0.125

-0.13
5.02 5.04 5.06 5.08 5.1 5.12 5.14 5.16

Problème 2 (8pts)
On se propose de résoudre l’équation de diffusion 1D :
𝜕𝑇 𝜕 2𝑇
=𝑎 2 (1)
𝜕𝑡 𝜕𝑥
On s’intéresse particulièrement aux solutions de la forme :

Page 6 sur 12
𝑥
𝑇(𝑥, 𝑡) = 𝐹 ( ) (2)
√𝑎𝑡
On montre alors que la fonction F est solution de l’équation différentielle :
𝑥 𝑥 𝑥
𝐹′ ( ) + 𝐹′′ ( )=0 (3)
2√𝑎𝑡 √𝑎𝑡 √𝑎𝑡
Les conditions à la limite 𝑥 = 0 sont indiquées sur la figure ci-après :
Résoudre le problème 3, puis (1) avec les conditions aux limites
spécifiées, par la MEF.

On donne 𝒕 ∈ [𝟏𝟎−𝟐 , 𝟏], 𝒂 = 𝟏

𝑻(𝟎, 𝒕) = 𝟎
𝝏𝑻 𝟐
(𝟎, 𝒕) =
𝝏𝒙 √𝒂𝒕 𝑥
𝑥=0 𝑥=𝐿

Résolution de (3) :

L’équation satisfaite par F est :


1
𝛼𝐹′(𝛼) + 𝐹′′(𝛼) = 0
2
Avec les conditions aux limites, on a
𝑇(0, 𝑡) = 𝐹(0) = 0
𝜕𝑇 𝜕 𝑥 𝜕 𝑥 𝑥 1 𝑥
= (𝐹 ( )) = ( ) 𝐹′ ( )= 𝐹′ ( )
𝜕𝑥 𝜕𝑥 √𝑎𝑡 𝜕𝑥 √𝑎𝑡 √𝑎𝑡 √𝑎𝑡 √𝑎𝑡
𝜕𝑇 1 2
Et donc 𝜕𝑥
(0, 𝑡) = 𝐹′(0) = ⇒ 𝐹′(0) = 2
√𝑎𝑡 √𝑎𝑡

Le problème à résoudre sur F est donc


1
𝛼𝐹′(𝛼) + 𝐹′′(𝛼) = 0
{2
𝐹′(0) = 2
𝐹(0) = 0
𝐿
Pour t donné, 0 ≤ 𝛼 ≤
√𝑎𝑡
Maillage
Nous avons un problème 1D linéaire
𝐿
Considérons une subdivision de 0 ≤ 𝛼 ≤ en N éléments finis
√𝑎𝑡

Page 7 sur 12
Nœud Nœud de
d’interpolation connectivité

Elément 1 avec Elément 2 avec Elément N avec


n nœuds n nœuds n nœuds
d’interpolation d’interpolation d’interpolation

Posons 𝐹(𝛼) = 𝑁𝐹𝑛 =< 𝑁1 … 𝑁𝑛 > {𝐹𝑛 } où n est le nombre de nœuds


d’interpolation pour chaque élément.
𝑑𝐹(𝛼) 𝑑𝑁 𝑑𝑁1 𝑑𝑁𝑛 𝐹1
= 𝐹𝑛 =< … >{⋮}
𝑑𝛼 𝑑𝛼 𝑑𝛼 𝑑𝛼 𝐹𝑛
Forme variationnelle
Soit 𝛿𝐹 une perturbation donnée,
𝑁1
𝑇
𝛿𝐹 = [< 𝑁1 … 𝑁𝑛 > [𝛿𝐹𝑛 ]] =< 𝛿𝐹1 … 𝛿𝐹𝑛 > { ⋮ }
𝑁𝑛
𝛼2
𝑑 2 𝐹(𝛼) 𝛼2
1 𝑑𝐹(𝛼)
∫ 𝛿𝐹 2
𝑑𝛼 + ∫ 𝛿𝐹 𝛼 𝑑𝛼 = 0
𝛼1 𝑑𝛼 𝛼1 2 𝑑𝛼

En intégrant le premier terme par partie, on obtient :


𝛼2𝛼2 𝛼2
𝑑𝐹(𝛼) 𝑑𝛿𝐹 𝑑𝐹(𝛼) 1 𝑑𝐹(𝛼)
[𝛿𝐹 ] −∫ 𝑑𝛼 + ∫ 𝛿𝐹 𝛼 𝑑𝛼 = 0
𝑑𝛼 𝛼1 𝛼1 𝑑𝛼 𝑑𝛼 𝛼1 2 𝑑𝛼

Donc
𝛼2
𝛼2 𝛼2
𝑑𝐹(𝛼) 𝑑𝛿𝐹 𝑑𝐹(𝛼) 1 𝑑𝐹(𝛼)
[𝛿𝐹 ] −∫ 𝑑𝛼 + ∫ 𝛿𝐹 𝛼 𝑑𝛼 = 0
𝑑𝛼 𝛼1 𝛼1 𝑑𝛼 𝑑𝛼 𝛼1 2 𝑑𝛼

𝑑𝑁 𝛼2 𝛼2
𝑑𝑁 𝑇 𝑑𝑁 1 𝛼2
1 𝑑𝑁
< 𝛿𝐹1 … 𝛿𝐹𝑛 > [𝑁 𝑇 ] 𝐹𝑁 −< 𝛿𝐹1 … 𝛿𝐹𝑛 > ∫ 𝑑𝛼𝐹𝑁 + < 𝛿𝐹1 … 𝛿𝐹𝑛 > ∫ 𝑁 𝑇 𝛼 𝑑𝛼𝐹𝑁
𝑑𝛼 𝛼1 𝛼1 𝑑𝛼 𝑑𝛼 2 𝛼1 2 𝑑𝛼
=0
Cette égalité est vraie pour toute perturbation 𝛿𝐹. On peut donc la simplifier par
< 𝛿𝐹1 … 𝛿𝐹𝑛 >. On obtient alors
𝑑𝑁 𝛼2 𝛼2
𝑑𝑁 𝑇 𝑑𝑁 1 𝛼2 1 𝑑𝑁
{[𝑁 𝑇 ] −∫ 𝑑𝛼 + ∫ 𝑁 𝑇 𝛼 𝑑𝛼} 𝐹𝑁 = 0
𝑑𝛼 𝛼1 𝛼1 𝑑𝛼 𝑑𝛼 2 𝛼1 2 𝑑𝛼

La matrice de rigidité élémentaire s’écrit


𝑑𝑁 𝛼2 𝛼2
𝑑𝑁 𝑇 𝑑𝑁 1 𝛼2 𝑑𝑁
𝐾𝑒 = [𝑁 𝑇 ] −∫ 𝑑𝛼 + ∫ 𝑁 𝑇 𝛼 𝑑𝛼
𝑑𝛼 𝛼1 𝛼1 𝑑𝛼 𝑑𝛼 2 𝛼1 𝑑𝛼

où 𝛼1 et 𝛼2 sont les nœuds de connectivité d’un élément quelconque.


𝐹𝑒 = 0
Conditions aux limites et construction des fonctions de forme 𝑁𝑖
Les conditions portent sur la limite 𝛼1 = 0 (borne inférieur de l’intervalle de
résolution). Les fonctions de forme de l’élément 1 seront construites de sorte
que :

Page 8 sur 12
𝑑𝑁1
| = 𝐹′(𝛼1 )
𝑑𝛼 𝛼=𝛼1
(4)
𝑑𝑁𝑘
| = 0 𝑎𝑣𝑒𝑐 𝑘 = 2, … , 𝑛
{ 𝑑𝛼 𝛼=𝛼1
En réalité, si on avait 𝐹(0) ≠ 0, on pourrait imposer 𝑑𝑁1
|
𝑑𝛼 𝛼=𝛼1
= 𝐹′(𝛼1 )/𝐹(𝛼1 )car cela
correspondrait à 𝑑𝐹(𝛼)
𝑑𝛼
| =
𝑑𝑁1
|
𝑑𝛼 𝛼=𝛼1
𝐹(𝛼1 ) = 𝐹′(𝛼1 ). Mais en adoptant l’équation (4),
𝛼=𝛼1
cela correspond au problème :
1
𝛼𝐺′(𝛼) + 𝐺′′(𝛼) = 0
{2
𝐺′(0) = 2
𝐺(0) = 1
Avec 𝐹(𝛼) = 𝐺(𝛼) − 1
Pour 𝑘 = 1, … , 𝑛 la fonction de forme 𝑁𝑘 est un polynôme de degré n interpolant
les 𝛼𝑖 avec 𝑖 ≠ 𝑘 et dont la dérivée première est définie par l’équation (4).
On obtient le script suivant :

%==========================================================================
% Ecole Polytechnique d’abomey-Calavi
% ------------
% EEER 2017-2018
% ------------
% Cours de méthodes numériques – phase pratique
% Devoir n°1
% Problème 2 : Programme pour la résolution numérique d'une équation
% différentielle lin »aire d’ordre 2 par la MEF
%
% Entrées
%
% Sorties : Représentation graphique de la solution du problème
%
% Auteur: GBAGUIDI Thomas Brice
%==========================================================================
clc;
%----------------- Les bornes de l'intervalle de résolution----------------
x0=0;xn=2;
%--- Maillage de[x0,xn] en ne éléments avec nn noeuds par élément----------
nn=10; % Nombre de noeuds d'interpolation
ne=1; % Nombre d'éléments
n=(nn-1)*ne; % il y a n+1 noeuds au total
k=1; % size(X,2);
X=linspace(x0,xn,n+1);
u0=1;du0k=2;du0k1=du0k/u0;
% Nombre de subdivision de l'intervalle [x0,xn] pour les intégrales
Nint=1000;
% Subdivision
% Elément de dérivée contrôlée en x0
% Les fonctions a(t) et b(t)
a=@(t1)(t1/2);
b=@(t1)(0);
c=@(t1)(0);
% La matrice Ke
Ke=zeros(n+1,n+1);
Fe=zeros(n+1,1);
XX=zeros(nn,ne);
k4=0;
for i=1:ne

Page 9 sur 12
k1=(i-1)*(nn-1)+1;k2=(i-1)*(nn-1)+nn;
for jj=1:nn
k3=k1+jj-1;
XX(jj,i)=X(k3);
if k3==k
k4=k3;
k5=jj;
end
end
if k4>0
NtdN=@(t1)(Ndu0(XX(:,i),du0k1,k5,t1)'*dNdu0(XX(:,i),du0k1,k5,t1));
NtN=@(t1)(Ndu0(XX(:,i),du0k1,k5,t1)'*Ndu0(XX(:,i),du0k1,k5,t1));
dNtdN=@(t1)(dNdu0(XX(:,i),du0k1,k5,t1)'*dNdu0(XX(:,i),du0k1,k5,t1));
fe=@(t1)(Ndu0(XX(:,i),du0k1,k5,t1)'*c(t1));
k4=0;
else
NtdN=@(t1)(LagMEF(XX(:,i),t1)'*dLagMEF(XX(:,i),t1));
NtN=@(t1)(LagMEF(XX(:,i),t1)'*LagMEF(XX(:,i),t1));
dNtdN=@(t1)(dLagMEF(XX(:,i),t1)'*dLagMEF(XX(:,i),t1));
fe=@(t1)(LagMEF(XX(:,i),t1)'*c(t1));
end
ke=@(t1)(-dNtdN(t1)+a(t1)*NtdN(t1)+b(t1)*NtN(t1));
deltaNdN1=NtdN(XX(1,i));
deltaNdN2=NtdN(XX(nn,i));
deltaNdN=deltaNdN2-deltaNdN1;
intke=integrale(ke,XX(1,i),XX(nn,i),Nint)+deltaNdN;
intfe=integrale(fe,XX(1,i),XX(nn,i),Nint);
Ke(k1:k2,k1:k2)=Ke(k1:k2,k1:k2)+intke;
Fe(k1:k2,1)=Fe(k1:k2,1)+intfe;
end
K=Ke(2:n+1,2:n+1);%exclusion de la première colonne et première ligne de Ke
F=Fe(2:n+1)-u0*Ke(2:n+1,1);
u=K\F;
f=@(s1,s2)([s2(2);-a(s1)*s2(2)-b(s1)*s2(1)+c(s1)]);
[xx,y2]=RK4expSys(f,X(1),X(end),[u0-1;du0k],n); % Résolution par RK4
u=[u0;u]-1; % Prise en compte de u(x0)=u0 et u=g-1
plot(X,u,'ro',xx,y2(1,:),'b+'); % Représentation graphique de la solution
legend('Solution MEF','Solution RK4');
grid on ;

function [ y ] = Ndu0( X,du0k,k,t )


%=========================================================
% Fonctions de forme de type polinomiale Ni
% tel que
% ° Ni(X,k,xj)=?ij
% ° dNi(X,k,xj)/dx=0 si i?k
% ° dNk(X,k,xj)/dx=duok
%
% Auteur: GBAGUIDI Thomas Brice
%=========================================================
N=length(X);
y1=zeros(N,1);
% y2=y1;
y2=0;
for j=1:N
if j~=k
y2=y2+1/(X(k)-X(j));
end
end
for i=1:N
if i==k

Page 10 sur 12
y1(i,1)=(du0k-y2)*(t-X(k))+1;
else
y1(i,1)=(t-X(k))/(X(i)-X(k));
end
for j=1:N
if j~=i
y1(i,1)=y1(i,1)*(t-X(j))/(X(i)-X(j));
end
end
end
y=y1';
end

function [ y ] = dNdu0( X,du0k,k,t )


%=========================================================
% Dérivées premières Fonctions de forme de type
% polinomiale de dérivée égale à du0k en xk et nulle
% en tout xi différent de xk
% Auteur: GBAGUIDI Thomas Brice
%=========================================================
N=length(X);
y1=zeros(N,1);
% y2=y1;
y2=0;
% Li(x)
for j=1:N
if j~=k
y2=y2+1/(X(k)-X(j));
end
end
lag1=LagMEF(X,t);
dlag1=dLagMEF(X,t);
fact1=(du0k-y2)*(t-X(k))+1;
for i=1:N
fact2=X(i)-X(k);
fact3=(t-X(k))/fact2;
if i==k
y1(i,1)=(du0k-y2)*lag1(k)+fact1*dlag1(k);
else
y1(i,1)=1/fact2*lag1(i)+fact3*dlag1(i);
end

Solution MEF
Solution RK4
2.5

1.5

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Page 11 sur 12
Résolution de (1)
La résolution de (3) étant déjà réalisée, il suffit de créer des vecteurs 𝑥𝑖 à partir
de 𝛼𝑖 pour différentes valeur de 𝑡 ∈ [10−2 , 1]

𝑥𝑖
𝛼𝑖 = ⟹ 𝑥𝑖 = 𝛼𝑖 √𝑎𝑡
√𝑎𝑡

On peut choisir par exemple

𝑡 ∈ {0.01; 0.05; 0.15; 0.2; 0.25; 0.3; 0.35; 0.4; 0.45; 0.5; 0.55;
0.6; 0.65; 0.7; 0.75; 0.8; 0.85; 0.9; 0.95; 1}

3
t=0.01
t=0.05

2.5

t=1
2

1.5

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

NB : On peut également procéder par changement de variable en posant

𝐺(𝛼) = 𝐹′(𝛼)

On pourra alors intégrer G avec la condition 𝐹(0) = 0 pour déterminer 𝐹(𝛼) :

𝛼𝑘 𝛼2
𝐹(𝛼𝑘 ) = ∫ 𝐺(𝛼)𝑑𝛼 = ∑ [∫ 𝑁(𝛼)𝑑𝛼] {𝐺𝑛 }
0 é𝑙é𝑚𝑒𝑛𝑡 𝛼1

On peut choisir des éléments linéaires. La résolution parallèle par RK4 peut être
utilisée pour assurer une bonne précision.

Page 12 sur 12