Você está na página 1de 29

Intgration d'quations diffrentielles avec Python

Camille Chambon

INRA EcoSys

Kf Sciences du 17 juin 2016


Plan
1. Introduction sur les quations
diffrentielles
2. Rsolution numrique d'quations
diffrentielles avec Python : la bibliothque
logicielle SciPy.Integrate
3. Application la modlisation biologique
du bl : le modle compartiments CN-
Wheat
4. Pour se dtendre...

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 2 / 29


1. Introduction sur les quations
diffrentielles
C'est quoi une quation diffrentielle ?
Relation entre une ou plusieurs fonctions
inconnues et leurs drives.
Exemple : f ' (x )=3f (x )5
f (x) : fonction inconnue,
f ' (x ) : sa drive.

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 3 / 29


1. Introduction sur les quations
diffrentielles
a sert quoi ?
Traduire, sous forme de modles mathmatiques,
les lois qui rgissent la variation de telle ou telle
grandeur.
Exemple : position d'une navette spatiale, charge
d'un condensateur lectrique, concentration d'un
produit lors d'une raction chimique, effectif d'une
population, etc.

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 4 / 29


1. Introduction sur les quations
diffrentielles

Charge d'un condensateur

Dcollage de la navette Discovery

Raction de combustion du mthane

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 5 / 29


1. Introduction sur les quations
diffrentielles

Evolution des populations de mduses

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 6 / 29


1. Introduction sur les quations
diffrentielles
a veut dire quoi rsoudre une quation
diffrentielle ?
Chercher toutes les fonctions vrifiant l'quation
diffrentielle propose
Exemple : rsoudre l'quation f ' (x )=3f (x )5
sur l'intervalle I , cest chercher toutes les fonctions
f (x) drivables sur I et vrifiant pour
tout x de I : f ' (x )=3f (x )5

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 7 / 29


1. Introduction sur les quations
diffrentielles
Comment fait-on pour rsoudre les
quations diffrentielles classiques ?
quations diffrentielles dont les solutions peuvent
tre exprimes au moyen de fonctions
lmentaires.
Rsolution explicite

Exemple : solutions de f ' (x )=3f (x )5 sur :


5 , avec C constante.
3x
f (x)=Ce +
3

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 8 / 29


1. Introduction sur les quations
diffrentielles
Comment fait-on pour rsoudre les autres
quations diffrentielles ?
Rsolution numrique
Utilisation de mthodes permettant d'approcher
numriquement les solutions.
Exemples de mthodes : Euler, Runge-Kutta, Newmark,
diffrences finies, lments finis.

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 9 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
C'est quoi SciPy ?
Ensemble de bibliothques Python usage
scientifique.
Environnement de travail similaire Scilab, GNU
Octave, Matlab, R.
Optimisation, algbre linaire, statistiques, traitement du
signal, traitement d'images, etc.
Visualisation graphique avec matplotlib
Code en C et Fortran
Licence libre
https://www.scipy.org/
Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 10 / 29
2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate

SciPy couple Matplotlib (diagramme de diffraction)

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 11 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
C'est quoi SciPy.Integrate ?
Ensemble de routines pour l'intgration numrique de
fonctions et de systmes d'quations diffrentielles
http://docs.scipy.org/doc/scipy/reference/integrate.html

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 12 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
Quels types d'quations diffrentielles peut-
on rsoudre avec cette bibliothque ?
quations diffrentielles ordinaires du premier ordre, ou
pouvant se ramener un systme d'quations diffrentielles
ordinaires du premier ordre.

Trajectoire d'un boulet de canon

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 13 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
Quels types d'quations diffrentielles NE
peut-on PAS rsoudre avec cette
bibliothque ?
quations aux drives partielles (EDP).

Conduction thermique Propagation d'une onde

Pour les EDP : voir bibliothque fipy (


http://www.ctcms.nist.gov/fipy/)
Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 14 / 29
2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
Comment utiliser la bibliothque
SciPy.Integrate ?
Routine scipy.integrate.odeint(...)
Exemple : dy =2y , avec t=0. .10 et y (t =0)=1
dt
>>> from scipy.integrate import odeint
>>> def rhs(y, t): # second membre de l'equa diff
return -2*y
>>> t = np.linspace(0, 10, 100)
>>> y = odeint(rhs, 1, t) # solution

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 15 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 16 / 29


2. Rsolution numrique d'quations diffrentielles
avec Python : la bibliothque logicielle
SciPy.Integrate
Routine scipy.integrate.odeint(...)
Utilise le solveur lsoda de la bibliothque Fortran odepack
Pour plus d'informations : voir doc en ligne
http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html

Autre routine plus gnrique : scipy.integrate.ode(...)


Voir documentation en ligne :
http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.ode.html

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 17 / 29


3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat

Prsentation du modle (d'aprs R.Barillot, iCROPM2016)


Modle de Plante Structure-Fonction (FSPM)
Mtabolisme Carbone-Azote dans le bl
Plante <=> organes interconnects : racines, entre-nuds, gaines,
limbes, pdoncules, pis et grains

Structure de la plante (R.Barillot, iCROPM2016)

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 18 / 29


3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat

Prsentation du modle (suite)


Organe <=> ensemble de compartiments
Compartiments <=> concentrations de mtabolites : fructanes,
amidon, protines, saccharose, acides amins, nitrates.
Concentrations des mtabolites varient en fonction de processus
physiologiques
Processus physiologiques rgis par concentrations de mtabolites
Interactions avec rtroactions entre les compartiments

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 19 / 29


3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat

Interactions entre les compartiments (R.Barillot, iCROPM2016)

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 20 / 29


3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat

Mise en quations du modle


Interactions dcrites par un systme d'quations diffrentielles
Calculer les concentrations c 1 , c 2 , ... , c m chaque pas de temps t
<=> rsoudre le systme d'quations diffrentielles :
dc 1

()
dt
p 1(t , c )

( )
dc 2
p (t , c)
dt = 2

pm (t , c)
dc m
dt
avec c un vecteur tel que c (t)=[c 1 (t), c 2 (t), ... , c m (t)] , et
p1 , p2 , ... , pm les fonctions reprsentant les processus physiologiques.

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 21 / 29


3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat
Utilisation de SciPy.Integrate pour calculer les concentrations
un pas de temps donn
Cration de la liste de conditions initiales c ( t 0 )=[c 1 (t 0 ), c 2 (t 0 ) ,... , c m (t 0 )]
partir de la valeur courante des concentrations de chaque mtabolite.
dc dc 1 dc 2 dc m
Dfinition d'une fonction , P= calculant les drives [ , ,, ]
dt dt dt dt
partir d'un temps t et de conditions initiales c (t) , t [t 0, t i ]
Appelle de la fonction scipy.integrate.odeint(...), avec :

en 1er argument la fonction P,


en 2d argument les conditions initiales c (t 0 ) ,

et en 3e argument le temps ti auquel on veut calculer les concentrations

Quand le calcul est termin, scipy.integrate.odeint(...) renvoie les concentrations aux


temps t 0 et t i
Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 22 / 29
3. Application la modlisation biologique du bl :
le modle compartiments CN-Wheat

Concentration des mtabolites (R.Barillot, iCROPM2016)

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 23 / 29


4. Pour se dtendre...

Des renards et des lapins


Modle proie-prdateur : dynamique de systmes biologiques dans lesquels un prdateur
et sa proie interagissent (https://fr.wikipedia.org/wiki/%C3%89quations_de_Lotka-Volterra)
du

( )(
dt = AuBuv
dv
dt
cu+DBuv )
avec :
u et v des variables fonction du temps
u nombre de lapins,
v nombre de renards,
et A , B , C et D des paramtres (constants) dfinissant la dynamique de la population :
A taux de reproduction des lapins quand il n'y a pas de renard,
B taux de mortalit des lapins d aux renards,
C taux de mortalit des renards quand il n'y a pas de lapin,
D taux de reproduction des renards en fonction des lapins rencontrs et mangs.

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 24 / 29


4. Pour se dtendre...

Des renards et des lapins (suite)

Modle proie-prdateur : dynamique des populations de renards et de lapins


http://scipy-cookbook.readthedocs.io/items/LoktaVolterraTutorial.html

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 25 / 29


4. Pour se dtendre...
Une invasion de zombies (d'aprs http://mysite.science.uottawa.ca/rsmith43/Zombies.pdf)
ds

()
dt
PBsz Ds
dz
dt
dr
(
= Bsz +Gr Asz
Ds + Asz Gr )
dt

avec :
s , z et r des variables fonction du temps :
s : nombre de victimes potentielles,
z : nombre de zombies,
r : nombre de personnes tues par un zombie,
et P , D , B , G et A des paramtres (constantes) dfinissant la dynamique de la population :

P : taux de natalit de la population,


D : taux de mortalit de la population,
B : la probabilit qu'une personne vivante devienne un zombie,
G : la probabilit qu'une personne dcde soit ressuscite en zombie,
A : la probabilit qu'un zombie soit tu

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 26 / 29


4. Pour se dtendre...

Une invasion de zombies (suite)

Modle d'invasion de Zombies : dynamique des populations de vivants et de zombies


http://scipy-cookbook.readthedocs.io/items/Zombie_Apocalypse_ODEINT.html

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 27 / 29


4. Pour se dtendre...

Des loups et des moutons

https://www.youtube.com/watch?v=cqifh4b7vxQ

Modle proie-prdateur (moutons et loups) de la bibliothque NetLogo

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 28 / 29


Merci de votre attention

Camille Chambon Intgration d'quations diffrentielles avec Python 17 juin 2016 29 / 29

Você também pode gostar