#!/usr/bin/python3 # # Un deuxième pour la méthode d'Euler: un objet ralenti par le frottement # Constantes physiques: alpha = 1. beta = 2. v0 = 3. # Constantes numériques: T = 8. # intervalle de temps N = 1000 # nombre de pas à calculer h = T / N # pas d'incrément # La fonction du membre de droite de l'EDO def f(v, t): return -alpha * v - beta * v**2 # Importer les bibliothèques from euler import euler import numpy as np import matplotlib.pyplot as plt # Calculer la solution t = np.linspace(0, T, N+1) solution = euler(f, v0, h, N) # Affichage plt.plot(t, solution, label=r"solution numérique") # tracer la solution plt.plot(t, v0 * np.exp(-alpha*t), 'r--', label="approximation de petite vitesse") plt.plot(t, v0 / (1 + beta * v0 * t), 'g--',label="approximation de grande vitesse") plt.xlabel("$t$") plt.ylabel("$v(t)$") plt.legend() plt.figure() # Nouvelle figure pour tracer l'erreur numérique plt.plot(t, solution - alpha * v0 / (np.exp(alpha * t) * (alpha + beta * v0) - beta * v0)) plt.xlabel("$t$") plt.ylabel("$v(t)$") plt.show()