CoCalc Public FilesEquaDiff-Champs-Euler.sagewsOpen with one click!
Author: Juan Carlos Bustamante
Views : 47
Compute Environment: Ubuntu 18.04 (Deprecated)

Exemple (n.6, p 236)

On considère l'équation différentielle x2y+xy=1x^2 y' + xy =1

  • Vérifier qu'une fonction donnée est solution (fait en classe)
  • Tracer plusieurs courbes
  • Solution particulière vérifiant y(1)=2y(1) = 2
  • Solution particulière vérifiant y(2)=1y(2) = 1.
var('x,y') ListeCourbes = [plot( (log(abs(x)) + c)/x, (x,-3,3), color="red", thickness = 0.5) for c in range(-5,5)] Courbe = plot((log(x)+2-log(2))/x, (x,0,3), color="blue", thickness=2) show(sum(ListeCourbes)+Courbe, ymin=-5, ymax=5)
(x\displaystyle x, y\displaystyle y)
plot_slope_field((1-x*y)/x^2, (x,0,3), (y,-5,3), color = "grey")

Un petit bout de code pour implémenter la méthode d'Euler

var('x,y') def F(x,y) : return (1-x*y)/x^2 #Définition de la fonction N=10 #Le nombre de points h=1/N #Le pas, mais en fait ces deux quantités n'ont aucune raison d'être liées x0 = 2 #L'abscisse du point de départ y0 = 1 #L'ordonnée du point de départ X = [x0 + j*h for j in range(N)] # Les abscisses des points Y = [y0] for j in range(N) : Y = Y + [Y[-1]+h*F(X[j],Y[-1])] #La boucle pour calculer les ordonnées
(x, y)
Points = [(X[j], Y[j]) for j in range(N)] #Création de la liste de points L = line(Points, color="blue") #Création de la ligne à partir de la liste points C = plot((log(x) + 2 - log(2))/x, (x,2,3), color="red") #La vraie solution, en rouge show(C+L, ymin=-2, ymax = 2)