télécharger le texte du TP

Transcription

télécharger le texte du TP
Journées de formation
« Modélisation numérique de
phénomènes physiques »
les 2 et 3 octobre 2008
F ICHE DE TRAVAUX PRATIQUES
But du TP
L’objectif de la séance de travaux pratiques est double : faire découvrir un logiciel libre
Présentation
de calcul scientifique et manipuler les méthodes numériques de résolution d’équations
différentielles ordinaires. Au travers d’une démarche de modélisation, il s’agit d’observer
Deux journées de formation, les 2 et 3 octobre 2008, spécifiquement conçues pour les Inspecteurs de
l’efficacité des différents algorithmes et leurs limitations dans l’étude numérique d’un
mathématiques de l’Éducation nationale sont organisées par l’antenne de Bretagne de l’École normale
problème concret.
supérieure de Cachan, sur le thème :
Modélisation
numérique de phénomènes physiques :
Environnement
informatique
Les enjeux actuels du calcul scientifique pour la modélisation, la recherche mathématique, l’enseignement.
La séance a lieu dans la salle libre-service linux ; des comptes « invités » ont été créés :
login :
mot de passeet
: leur approximation. Les aspects quantitatifs
Ces journées s’articuleront autour des équations différentielles
et qualitatifs
aux de
méthodes
numériques
seront présentés
au travers>de
mini-courscréer
s’appuyant
Auliés
début
la séance,
ouvrir un terminal
(menu Applications
Accessoires),
un dos-sur des
exemples issus
detravail
la physique.
Des
travaux
pratiques
sous le logiciel Scilab permettront aux participants
sier de
et lancer
scilab
à l’aide
des commandes
de mettre en œuvre ces méthodes et d’en apprécier les apports et les limitations. Par ailleurs, Claude
# mkdir TP_IPR
Gomez, responsable
de l’équipe-projet Scilab, présentera l’utilisation au lycée de ce logiciel scientifique
# cd TP_IPR
libre, notamment
dans le cadre de la nouvelle épreuve pratique de mathématiques au baccalauréat.
# scilab illustreront les problématiques de la recherche actuelle en termes de modélisations
Enfin, des conférences
mathématique et numérique dans divers domaines applicatifs.
Détail
activités
Cette formation
se des
déroule
pour la troisième année consécutive sur le campus de Ker Lann. En 2006,
elle était organisée par le département d’informatique et télécommunications de l’ENS Cachan - Bretagne
Il s’agit
programme
à lasur
carte,
oùthéorie
chacun de
peut
approfondir et
les les
thèmes
de son choix. ». En 2007, le
(organisateur
: Lucd’un
Bougé)
et portait
« la
l’information
communications
département de Mathématiques de l’ENS Cachan - Bretagne et l’ENSAI (organisateurs : François Coquet,
prise en main du logiciel Scilab,
ENSAI et Michel Pierre, ENS Cachan - Bretagne) se sont associés pour proposer la formation sur le thème
« Statistiques
et applications
multi-disciplinaires
». numérique d’EDO,
utilisation
des méthodes
de résolution
comparaison des vitesses de convergence des différents schémas,
étude de stabilité – étoiles d’ordre.
P RISE EN MAIN DE Scilab
L’essentiel
Vecteurs et matrices
Les objets de base de Scilab sont les matrices : un vecteur est une matrice à une ligne ou
une colonne ; un scalaire est une matrice 1 × 1.
-->
-->
-->
-->
-->
-->
-->
-->
x=[1,4,-5];
y=[1;4;-5]
length(y)
norm(y,’inf’)
z=1:2:10
t=linspace(0,10,100);
t(6)
A=zeros(3,3)
-->
-->
-->
-->
-->
-->
-->
-->
A(1,3)=3
B=[A,y]
C=[A;x]
size(B)
D=eye(3,3)+0.1*A;
D(3,:)
solution=D\y
D*solution
Fonctions
Voici comment définir ses propres fonctions dans Scilab : on crée le fichier suivant dans un
éditeur de texte (menu Applications>Accessoires) et le sauvegarde dans fct.sci (attention :
ce fichier doit se trouver dans le répartoire où Scilab a été lancé)
function y=f(t)
y=t.^3-t.*(1-t)-2;
endfunction
Il faut ensuite charger la fonction dans Scilab :
--> getf fct.sci
La fonction f peut alors être utilisée comme toute autre fonction prédéfinie.
--> f(9)
--> f([1,2,3])
Graphiques
Pour tracer un graphe dans Scilab, il faut créer les vecteurs des abscisses et des ordonnées.
-->
-->
-->
-->
-->
t=linspace(0,1,100);
plot(t,sin(t))
plot(t,f(t))
clf
plot(t,cos(t),’r’)
1
Pour aller plus loin
Programmation
Il est possible de rassembler dans un fichier texte une séquence de commandes Scilab. La
commande exec permet alors de les exécuter.
Exemple : le fichier script.sce contient les instructions suivantes















N = 10; x = zeros(1, N);
for i = 1 : N
x(i) = log(i);
end
i = 1;
while(i < 5 & x(i) < 2)
i = i + 1;
end
[i, x(i)]
L’exécution dans Scilab s’effectue comme suit
--> exec script.sce
Régression linéaire
Parmi les nombreuses fonctions prédéfinies dans Scilab, on utilise fréquemment la commande reglin qui permet de calculer les coefficients de la droite des moindres carrés
d’un nuage de points. Pour une description détaillée, voir l’aide :
--> help reglin
2
M ÉTHODES NUM ÉRIQUES DE R ÉSOLUTION D ’ EDO
L’essentiel
On considère l’équation différentielle avec condition initiale suivante :
( 0
y (t) = f (t, y(t)), 0 ≤ t ≤ T,
y (0) = y0 ,
où f : [0, T ] × Rd → Rd est une fonction régulière et y0 ∈ Rd .
Pour l’approximation numérique, on note h le pas de la subdivision uniforme (tn )nN=0 de
l’intervalle [0, T ] : tn = nh et yn est une approximation de y(tn ) pour 0 ≤ n ≤ N.
On rappelle ci-dessous quelques méthodes classiques.
Euler explicite
y n +1 = y n + h f ( t n , y n )
Heun
y n +1 = y n +
Runge-Kutta (RK4)
h
2
h
f (tn , yn ) + f (tn+1 , yn + h f (tn , yn ))
kn1
=
f (tn , yn )
kn2
kn3
kn4
=
f (tn + 2h , yn + 2h kn1 )
=
f (tn + 2h , yn + 2h kn2 )
i
f (tn+1 , yn + hkn3 )
= yn + 6h kn1 + 2kn2 + 2kn3 + kn4
=
y n +1
Pour aller plus loin
y n +1 = y n + h f ( t n +1 , y n +1 )
Euler implicite
Soulignons que la méthode d’Euler implicite nécessite la résolution d’une équation (généralement non-linéaire) à chaque pas de temps. On peut utiliser la méthode de Newton
initialisée avec l’itéré précédent.
Précisément, yn étant connu, il s’agit de trouver z, racine de l’équation ϕ(z) = 0 avec
ϕ ( z ) = z − y n − h f ( t n +1 , z ).
La méthode de Newton construit la suite (zk ) à l’aide de la relation de récurrence
z0 = y n
et
z k +1 = z k − ϕ 0 ( z k ) −1 ϕ ( z k ) .
On arrête l’algorithme quand l’incrément |zk+1 − zk | est inférieur à un certain seuil (un
nombre maximal d’itération est aussi imposé).
3
Mise en œuvre sur un exemple issu d’une modélisation
On se base sur un texte de préparation à l’épreuve de modélisation (option calcul scientifique) de l’agrégation externe de mathématiques, voir pages suivantes. Le système différentiel étudié modélise la cinétique d’une réaction auto-catalytique. Il est reproduit cidessous
 0

 y a (t) = − k1 y a (t) + k3 yb (t)yc (t)
y0b (t) =
k1 y a (t) − k3 yb (t)yc (t) − k2 [yb (t)]2

 0
yc (t) =
k2 [yb (t)]2
avec

y (0) = 1,

 a
yb (0) = 0,

 y (0) = 0.
c
Les constantes valent k1 = 0.04, k2 = 3 · 107 et k3 = 104 .
Les différences d’ordres de grandeur des constantes rendent la résolution numérique
délicate.
Pistes de travail
P ROGRAMMATION DE LA FONCTION D ÉFINISSANT L’ EDO
Le système différentiel s’écrit sous la forme Y 0 = F (t, Y ). Dans Scilab, il est représenté
par la fonction vectorielle
function Yprime=F(t,Y)
U TILISATION DE LA COMMANDE ode D ÉJ À PROGRAMM ÉE DANS Scilab
--> Y0=[1;0;0];
--> t=linspace(0,0.2,100);
--> Y=ode(Y0,0,t,F);
--> plot(t,Y(2,:))
P ROGRAMMATION ET COMPARAISON DE M ÉTHODES NUM ÉRIQUES
On peut programmer, sur le modèle de la commande ode, les méthodes précédentes. Il
est alors intéressant de comparer leur performance pour différentes valeurs du pas h.
C OMPARAISON DES VITESSES DE CONVERGENCE
Pour comparer les ordres de convergence des différentes méthodes, on se place dans le
cas modèle
y0 (t) = −y(t) avec y(0) = 1
pour lequel la solution exacte est connue.
En faisant varier le pas h, on peut obtenir les courbes d’erreur pour chaque méthode :
E (h) = max |y(tn ) − yn |.
n=0,··· ,N
É TOILES D ’ ORDRE
Il est possible d’observer les domaines de A-stabilité des méthodes numériquement.
Rappel. Pour λ ∈ C de partie réelle négative, on considère l’approximation (yλn ) de l’équation
y0 (t) = λy(t)
avec
y (0) = y0 .
Le domaine de stabilité d’une méthode donnée est l’ensemble des complexes λ pour lesquels la
suite (yλn )n∈N est bornée.
4
Cinétique de l’oxydation du sulfite de cuivre
Grégory Vial∗
10 mars 2008
Résumé
On s’intéresse à l’oxydation du sulfite de cuivre : il s’agit d’une réaction d’autocatalyse dont l’étude cinétique conduit à un problème différentiel raide. On étudie
différentes méthodes numériques pour en approcher la solution. Cette présentation
est inspirée de [1].
Mots-clés : Système d’équations différentielles, problème raide, approximation numérique.
1 Le modèle
La cinétique chimique s’intéresse aux aspects temporels liés aux réactions chimiques.
Les problèmes les plus intéressants sont ceux dans lesquels plusieurs réactions ont lieu
simultanément ou successivement, avec des vitesses de différents ordres de grandeur.
C’est souvent le cas lors de réactions d’autocatalyse.
Le phénomène d’oxydation du sulfite de cuivre est un exemple d’autocatalyse. En
effet, le sulfite de cuivre ne réagit pas directement avec le dioxygène, mais produit luimême la catalyseur qui va permettre la réaction. L’équation bilan s’écrit
Cu SO3 + 21 O2 −→ Cu SO4 .
En réalité le mécanisme chimique est beaucoup plus complexe, voir [2] ; un modèle simplifié est le suivant :
Cu2+ + SO23−
−
+
−−⇀
↽−− Cu + SO3
Cu+ + SO3− + 12 O2 −−→ Cu+ + SO4−
La première réaction favorise fortement le sens de droite à gauche car le sulfite de cuivre
est un composé stable. D’autre part, la seconde est très rapide, ce qui permet l’oxydation
même si le catalyseur est en très faible quantité.
Le prototype de ce genre d’équations est donné par le problème de Robertson (1966) :
les quantités chimiques en jeu sont appelées A, B, C pour plus de simplicité ; le bilan global de la réaction est A → C. On décompose le mécanisme chimique complexe en trois
réactions élémentaires dont les lois cinétiques sont supposées d’ordre 1 :
−→
B
(lente : k1 = 0.04),
B + B −→ C + B (très rapide : k2 = 3 · 107 ),
B + C −→ A + C (rapide : k3 = 104 ).
A
∗ Département
(1)
de Mathématiques, ENS Cachan antenne de Bretagne, Campus de Ker-Lann, 35170 Bruz.
[email protected]
1
2
Agrégation externe de mathématiques – ENS Cachan Bretagne
La première réaction est nommée amorçage, il s’agit de la formation lente du catalyseur B.
Le deuxième réaction produit le composé C très rapidement, et la troisième traduit la
recomposition du catalyseur B (rupture) ; cette dernière justifie le terme d’autocatalyse.
Les vitesses des trois réactions en jeu sont très différentes comme le montrent les
constantes de réaction situées à droite des équations chimiques. Les lois de la cinétique
chimique permettent d’obtenir le système différentiel suivant, où ya (t), yb (t), yc (t) désignent les quantités respectives des composés A, B et C à l’instant t,
 ′

 y a ( t) = − k1 y a ( t) + k3 yb ( t) yc ( t)
(2)
y′b (t) =
k1 ya (t) − k3 yb (t)yc (t) − k2 [yb (t)]2

 ′
2
yc ( t) =
k2 [yb (t)] .
Ces équations sont assorties de conditions initiales, traduisant la seule présence du réactif A :
ya (0) = 1,
yb (0) = 0,
(3)
yc (0) = 0.
2 Étude mathématique du système différentiel
Les quantités ya , yb et yc représentant des quantités de composés chimiques, on souhaite qu’elles restent positives au cours du temps (elles le sont évidemment à l’instant
initial). On peut vérifier que c’est bien le cas :
Proposition 1 Pour t > 0, ya (t) ≥ 0, yb (t) ≥ 0 et yc (t) ≥ 0.
P REUVE . Raisonnons par l’absurde : si une de ces quantités devient négative, alors elle
s’annule par continuité. Tout d’abord, il est facile de voir, par monotonie, que le cas où
yc s’annule se ramène à celui où yb s’annule. Supposons donc tout d’abord que yb soit
la première composante à s’annuler : notons t0 tel que yb (t0 ) = 0. Alors ya (t0 ) > 0. La
deuxième équation du système (2) implique y′b (t0 ) > 0, si bien que yb reste positif au
voisinage de t0 .
Maintenant, si ya s’annule en t0 sans que yb ne s’annule, la première équation prouve
de la même manière que ya est croissante au voisinage de t0 , donc reste positive.
Il reste à considérer le cas où ya et yb s’annulent à la fois en t0 . Mais on a alors affaire à
un point critique, et l’unicité locale de la solution contredit la non-nullité de ya en t = 0.
Les points d’équilibre sont les triplets (0, 0, γ), où γ est arbitraire. Il est naturel de
s’intéresser à leur stabilité. Pour cela, on étudie le système linéarisé au voisinage du
point (0, 0, γ) : il s’écrit
 ′

 ya (t) = − k1 ya (t) + k3 γyb (t)
(4)
y′b (t) =
k1 ya (t) − k3 γyb (t)

 ′
0.
yc ( t) =
La point (0, 0, γ) est stable pour le système (4), mais une étude complémentaire est nécessaire pour le système (2).
Proposition 2 Les points d’équilibre (0, 0, γ) sont stables.
Texte. Cinétique de l’oxydation du sulfite de cuivre
3
P REUVE . Il suffit de remarquer que la fonction ya + yb + yc est une intégrale première
du système différentiel (2). Comme, de plus, les quantités ya , yb et yc restent positives, le
point (0, 0, γ) est stable.
Enfin, on s’intéresse au comportement de la solution en temps long. Il est clair que
yc (t) converge quand t tend vers +∞, sa limite est notée y∞
c . Pour montrer que y a et yb
convergent, il faut approfondir l’analyse.
Théorème 3 Les solutions du problème différentiel (4)-(3) vérifient
– la fonction ya est décroissante et converge vers 0 quand t tend vers +∞ ;
– la fonction yb est croissante puis décroissante, elle converge vers 0 quand t tend vers +∞ ;
– la fonction yc est croissante, elle converge vers 1 quand t tend vers +∞.
P REUVE .
forme
Utilisant le fait que ya + yb + yc = 1, on peut récrire le système (2) sous la
(
x′ = −k1 x + k3 y(1 − x − y) = f ( x, y)
y′ = k1 x − k3 y(1 − x − y) − k2 y2 = g( x, y),
(5)
où on a posé x = ya et y = yb . La figure 1 partage le quart de plan x, y > 0 en régions où
les fonctions f et g définissant le système (5) sont de signe constants ; dans ces régions,
les fonctions x et y sont monotones.
Le point initial A = (1, 0) est situé dans la région I. Si le point mobile ( x(t), y(t)) reste
dans la région I, alors x et y convergent par monotonie et on déduit du système (5) que
la limite ne peut être que le point critique (0, 0). Sinon, la trajectoire sort de la zone I au
temps t0 pour entrer dans la zone II, voir le point B sur la figure 1. Il est facile de voir que
cette zone est stable, si bien que les fonctions x(t) et y(t) sont toutes-deux décroissantes
à partir du temps t0 . On conclut de même que plus haut à la convergence vers le point
critique et le théorème est démontré.
Les informations qualitatives données par le théorème précédent sont conformes à ce
que les chimistes observent. En effet, la catalyseur B disparaı̂t en temps long, et finalement, la quantité du réactif A introduite initialement sera totalement transformée dans le
produit C.
3 Approximations numériques
Afin de calculer une solution approchée du système différentiel (2), on introduit une
subdivision tn = nδt (n = 0, . . . , N), où δt vérifie Nδt = T. La figure 2 présente un résultat
pour la méthode d’Euler explicite, dont on voit qu’il n’est guère conforme à la monotonie
prédite par la théorie. La situation peut être améliorée en diminuant la valeur du pas δt,
comme le montre la figure 3.
Toutefois, afin de réduire le temps de calcul, on s’oriente vers d’autres méthodes permettant de choisir des valeurs de δt plus grandes. C’est le cas de la méthode d’Euler
implicite, qui fournit un résultat correct pour des valeurs très grossières de pas de temps,
cf. figures 4 et 5.
Agrégation externe de mathématiques – ENS Cachan Bretagne
4
y
f ( x, y) ≤ 0
g( x, y) ≤ 0
II
f ( x, y) ≥ 0
g( x, y) ≤ 0
I
B
•
III
f ( x, y) ≤ 0
g( x, y) ≥ 0
x
•
A(1, 0)
O
F IG . 1 – Régions de positivité dans le plan de phase pour (5)
Méthode d’Euler explicite pour la résolution de u′ = F (u)
un+1 = ( I + δtF )(un ).
Méthode d’Euler implicite pour la résolution de u′ = F (u)
un+1 = ( I − δtF )−1 (un ).
yb ( t)
4·10−5 −
3·10−5 −
2·10−5 −
10−5 −
0
|
0.1
|
0.2
|
0.3
t
F IG . 2 – Fonction yb (t) obtenue avec Euler explicite pour T = 0.3 et δt = 10−3 .
Texte. Cinétique de l’oxydation du sulfite de cuivre
5
yb ( t)
4·10−5 −
3·10−5 −
2·10−5 −
10−5 −
0
|
0.1
|
0.2
|
0.3
t
F IG . 3 – Fonction yb (t) obtenue avec Euler explicite pour T = 0.3 et δt = 10−4 .
yb ( t)
4·10−5 −
3·10−5 −
2·10−5 −
10−5 −
0
|
0.1
|
0.2
|
0.3
t
F IG . 4 – Fonction yb (t) obtenue avec Euler implicite pour T = 0.3 et δt = 10−2 .
yb ( t)
4·10−5 −
3·10−5 −
2·10−5 −
10−5 −
0
|
0.1
|
0.2
|
0.3
t
F IG . 5 – Fonction yb (t) obtenue avec Euler implicite pour T = 0.3 et δt = 10−3 .
Agrégation externe de mathématiques – ENS Cachan Bretagne
6
Du point de vue chimique, on peut être intéressé à la quantité moyenne de catalyseur
présent dans la solution entre les temps 0 et T. La solution approchée déterminée à l’aide
de la méthode d’Euler implicite permet d’effectuer un calcul numérique de l’intégrale
1 T
yb (t) dt.
T 0
En utilisant la méthode des trapèzes, on obtient les valeurs Ib ( N ) pour différentes valeurs
de N, données dans le tableau suivant (T = 0.3).
Ib =
Z
N
30
Ib ( N )
3.480938188866958 · 10−5
300
3.534801090251057 · 10−5
3000
3.53920602392115 · 10−5
4 Calcul du temps de demi-oxydation
Les simulations numériques précédentes peuvent être utilisées pour estimer le temps
au bout duquel la moitié de la quantité de sulfite de cuivre aura été oxydée. Le recours à
une méthode implicite est ici cruciale, puisqu’on est intéressé au comportement en temps
long de la solution.
D’autre part, la processus d’oxydation peut être ralenti par un abaissement de la
température, qui agit essentiellement sur la réaction de amorçage. Plus précisément, la
loi d’Arrhénius exprime la constante k1 en fonction de la température absolue T :
200 ,
(6)
k1 = 0.078 exp −
T
si bien que k1 vaut 0.04 pour T = 300 kelvin. Le tableau ci-dessous montre les valeurs du
temps de demi-oxydation t1/2 en fonction de la température T.
T
275 300 325 350
t1/2 300 268 244 224
Ainsi, la conservation du sulfite de cuivre à 2 degrés Celsius plutôt qu’à température
ambiante permet de augmenter le temps de demi-oxydation de près de 12%.
Références
[1] E. H AIRER , G. WANNER. Solving ordinary differential equations. II, volume 14 of Springer Series in Computational Mathematics. Springer-Verlag, Berlin, second edition 1996.
Stiff and differential-algebraic problems.
[2] L OGAN. Introduction à la cinétique chimique. Dunod, Paris 1998.
Suggestions. (le candidat est libre de ne pas les suivre)
1. on pourra justifier l’existence d’une solution du système (2) définie pour t > 0 ;
2. on pourra retrouver à l’aide d’un programme simple les courbes obtenues pour
y b ( t ).
3. on pourra discuter le terme “catalyseur” au vu des résultats numériques obtenus.