FORMAV votre partenaire Formation http://formav.eu
# -*- coding: utf-8 -*-
#Résoudre des équations différentielles linéaires à coefficients constants
#Programme créé par Martine Arrou-Vignod en Août 2015
from math import *
#pour faire du calcul formel
from sympy import *
#Pour pouvoir utilser mathjax pour écrire des formules
init_printing(use_latex='mathjax')
###Défintion des variables utiles dans les calculs
x,y=symbols("x y ")
def linun(a,b,xd0,yd0,ordre):
#ordre 0 on donne yd0=y(xd0)
#ordre 1 on donne yd0=y'(xd0)
f=Function('y')
fonction=a*f(x).diff(x)+b*f(x)-secondmembre(x)
print('Equation différentielle')
pprint(fonction)
print('Solution générale équation différentielle sans Conditions Initailes')
solution=dsolve(fonction)
pprint(solution.expand(basic=True))
x0=xd0
y0=yd0
#pprint(solution)
if ordre==0 :
sol1=solution.rhs.subs(x,xd0)-yd0
if ordre==1 :
solutiond=solution.rhs.diff(x).expand(basic=True)
print('\nDérivée' )
pprint(solutiond)
sol1=solutiond.subs(x,xd0)-yd0
S=solve((sol1))
solutionci=solution.subs("C1",S[0]).expand(basic=True)
return solutionci
Exemple n°1
def secondmembre(x):
return x**2
linun(3,1,0,1,0)
Exemple n°2
def secondmembre(x):
return x**2*exp(x)
linun(3,1,1,1,1)
def lindeux(a,b,c,xd0,yd0,ordre0,xd1,yd1,ordre1):
#ordre 0 on donne yd0=y(xd0)
#ordre 1 on donne yd0=y'(xd0)
f=Function('y')
fonction=a*f(x).diff(x,x)+b*f(x).diff(x)+c*f(x)-secondmembre(x)
print('Equation différentielle')
pprint(fonction)
print('Solution générale équation différentielle sans Conditions Initiales')
solution=dsolve(fonction)
pprint(solution.expand(basic=True))
x0=xd0
y0=yd0
#pprint(solution)
if ordre0==0 :
sol0=solution.rhs.subs(x,xd0)-yd0
if ordre0==1 :
solutiond=solution.rhs.diff(x).expand(basic=True)
print('\n Dérivée')
pprint(solutiond)
sol0=solutiond.subs(x,xd0)-yd0
if ordre1==0 :
sol1=solution.rhs.subs(x,xd1)-yd1
if ordre1==1 :
if ordre0==0:
solutiond=solution.rhs.diff(x).expand(basic=True)
print('Dérivée' )
pprint(solutiond)
sol1=solutiond.subs(x,xd1)-yd1
S=solve((sol1,sol0))
solutionci=solution.subs(S).expand(basic=True)
return solutionci
Exemple n°3
def secondmembre(x):
return x**2
lindeux(1,2,1,0,1,1,1,2,0)
Exemple n°4
def secondmembre(x):
return exp(x)+4
lindeux(1,2,1,1,1,1,0,0,1)
Exemple n°5
def secondmembre(x):
return exp(x)
lindeux(1,0,1,0,0,1,0,2,0)