Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News Sign UpSign In
| Download

Jupyter notebook champ.ipynb

Views: 199
Kernel: SageMath (stable)

Équations différentielles et champs de vecteurs

On définit la fonction d'une équation différentielle autonôme y'=f(y). La deuxième fonction ne sert que parce qu'il faut rentrer dans le solveur plus bas une fonction qui prend un vecteur et rend un vecteur (même si ce vecteur n'a qu'une coordonnée).

def f(x):return x*x def F(t,y):return[f(y[0])]

Voir la feuille sur la chute des pierres pour comprendre comment marche la résolution.

U=ode_solver() U.function=F
U.ode_solve(y_0=[1], t_span=[0,10], num_points=100)

On trace le champ de vecteurs (1,f(v))

u,v = var('u v') monchamp=plot_vector_field((1,f(v)), (u,-3,3),(v,-2,2))
monchamp.show()
/ext/sage/sage-8.1/local/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment. warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
Image in a Jupyter notebook
monchamp.save('x2.pdf')

On recommence avec un système différentiel à deux variables.

def g(x,y): return[y,(cos(x)-2)*sin(x)] def G(t,y): return g(y[0],y[1])
V=ode_solver() V.function=G
V.ode_solve(y_0=[-3,1], t_span=[0,10], num_points=100)

On trace le champ de vecteurs correspondant.

autrechamp=Graphics() autrechamp+=plot_vector_field(g(u,v), (u,-3,16),(v,-2,3))
a=V.interpolate_solution() b=V.interpolate_solution(i=1) seq=[(a(0.1*i),b(0.1*i)) for i in range(100)]

On rajoute sur le même dessin la solution juste calculée.

autrechamp+=list_plot(seq,plotjoined=True,rgbcolor=(1,0,0))
autrechamp.show()
Image in a Jupyter notebook

On rajoute encore une solution avec d'autres paramètres initiaux.

V.ode_solve(y_0=[-2,0], t_span=[0,10], num_points=100)
a=V.interpolate_solution() b=V.interpolate_solution(i=1) seq=[(a(0.1*i),b(0.1*i)) for i in range(100)]
autrechamp+=list_plot(seq,plotjoined=True,rgbcolor=(1,0,0))
autrechamp.show()
Image in a Jupyter notebook
autrechamp.save('sincos.pdf')