In [12]:
import numpy as np

In [13]:
import matplotlib.pyplot as plt

In [14]:
%matplotlib inline

In [15]:
from scipy import integrate

Vamos a resolver una ecuación diferencial lineal básica:

$$\dot{y}+y=0$$$$f(y)=\dot{y}=-y$$

In [16]:
def f(y,t):
    
    return - y

In [61]:
y_0 = 1.3
t = np.linspace(0,7)

In [62]:
sol = integrate.odeint(f, y_0, t)

In [63]:
plt.plot(t, sol)


Out[63]:
[<matplotlib.lines.Line2D at 0xb5479cc>]

Luego si el sistema es de orden dos:

$$a\ddot{y}+b\dot{y}+cy=0$$

Reducimos el orden de la siguiente manera:


In [64]:
# Definimos a todos los sistemas de segundo orden
def f_vec(y, t, a, b, c):
    
    return np.array([y[1], - (b / a) * y[1] - (c / a) * y[0]])

In [65]:
y_0_vec = np.array([1., 0.])

In [66]:
sols = integrate.odeint(f_vec, y_0_vec, t, args=(1.,0.,1.))

In [67]:
plt.plot(t, sols[:, 0], label='$y$')
plt.plot(t, sols[:, 1], '--k', label='$\dot{y}$')
plt.legend()


Out[67]:
<matplotlib.legend.Legend at 0xba0166c>

In [68]:
y = sols[:, 0]

In [ ]: