Utilisation de numpy, sympy, scipy Résolvez l'équation différentielle ordinaire du premier ordre dans les conditions initiales.
problème: $ x '(t) + k x (t) = 0 $, condition initiale $ x (0) = 1 $, (k = 1 est un paramètre)
La solution exacte est $ x (t) = e ^ {-t} $.
from sympy import *      #Imoprt toutes les fonctionnalités de la bibliothèque sympy
import numpy as np      #import numpy avec le nom np
from scipy.integrate import odeint 
import matplotlib.pyplot as plt
"""
exemple:Équation différentielle ordinaire du premier ordre: 
dx/dt = -kx x(0)=Résoudre sous la condition initiale de 1
"""
x=Symbol('x')                  #lettre'x'Est défini comme la variable x
y=Symbol('y')                  #lettre'y'Est défini comme la variable y
t=Symbol('t')                  #lettre't'Est défini comme la variable y
k=Symbol('k')
def func(x, t, k): # dx/Définir dt comme une fonction
    dxdt=-k*x
    return dxdt
k = 1.0 #Définir une valeur pour un paramètre
x0 = 1.0 #Conditions initiales
t=np.linspace(0,10,101) #Réglage du pas de temps de l'intégration:Divisez 0 à 10 en 101 parties égales
sol=odeint(func, x0, t, args=(k,)) #Résolvez l'équation différentielle numériquement. Stockez les résultats dans une liste appelée sol.
#Solution exacte pour comparaison(e^-t)Liste excact_Mettre à sol
exact_sol=[]
tt=np.linspace(0,10,101)
for i in tt:
    exact_sol.append(exp(-1.0*float(i)))
#
    
#Visualisation
plt.plot(t, sol, linewidth=1,label='numerical') #Solution numérique
plt.plot(tt, exact_sol, color='red',linewidth=1, label='exact') #Vraie solution
plt.xlabel('t', fontsize=18)
plt.ylabel('x', fontsize=18,rotation='horizontal')
plt.legend(loc='upper right')
plt.show()
