La solution analytique des équations différentielles à condition initiale par exemple:
import sympy as sp
from IPython.display import *
%matplotlib inline
sp.init_printing(use_latex=True)
t,C1,C2=sp.symbols('t,C1,C2')
x=sp.Function('x')(t)
eq=sp.Eq(x.diff(t,2)-9.81) # équation ballistique, trajectoire
display(eq)
xsol=sp.dsolve(eq,x).rhs
display(xsol)
constantes={'C1':0,'C2':0} # les conditions initiales not mises ici dans le dictionnaire
# constantes qui a été défini. C1 est la position initiale
# et C2 la vitesse initiale.
xsol=xsol.subs(C1,constantes['C1'])
xsol=xsol.subs(C2,constantes['C2'])
display(xsol)
display()
Voyons la solution d'une équation différentielle d'ordre 2 à conditions aux limites. Les 4 premières lignes sont utilisées comme dans la leçon précédente. (importer sympy et faire l'affichage de qualité en LaTeX)
import sympy as sp
from IPython.display import *
%matplotlib inline
sp.init_printing(use_latex=True)
x,N=sp.symbols('x,N')
T=sp.Function("T")(x)
eq=sp.Eq(T.diff(x,2)-N**2*T) # Transport Phenomena, 10.7, ailette droite
# forme adimensionnelle
Sol=sp.dsolve(eq,T).rhs # Solution generale
display(Sol)
On veut maintenant trouver les valeurs des constantes. On utilisera donc les conditions aux limites, T=1 en x=0 et dT/dx=0 en x=1.
# Trouve C1 et C2 a partir des CL, 2 eq 2 inconnues
S=sp.solve([sp.Eq(Sol.subs(x,0),1), # condition de Dirichlet
sp.Eq(Sol.diff(x).subs(x,1),0)] # condition de Newman
,sp.symbols('C1,C2')) #
Final=Sol.subs(S)
display(Final)
final=sp.simplify(Final)
display(final)
Autre exemple, un film dont la viscosité est variable s'écoulant sur un plan
import sympy as sp
from IPython.display import *
%matplotlib inline
sp.init_printing(use_latex=True)
rho,cosbeta,g,alpha,delta,mu0=sp.symbols('rho,cosbeta,g,alpha,delta,mu0',positive=True)
x=sp.symbols('x')
vz=sp.symbols('vz',function=True)
eq=mu0*sp.exp(-alpha*x/delta)*sp.Derivative(vz(x),x)+rho*g*cosbeta*x
display(eq)
vz=sp.dsolve(eq)
display(vz)
Je vous invite à explorer les nombreux documents disponibles sur l'utilisation de sympy, à commencer avec live.sympy.org , à voir absolument. La solution des équations différentielles de plusieurs types sont présentées.