Método de Euler

Para resolver numericamente un PVI de un sistema de EDO autónomas.


In [1]:
import numpy as np

# importamos bibliotecas para plotear
import matplotlib
import matplotlib.pyplot as plt

# para desplegar los plots en el notebook
%matplotlib inline

# para cómputo simbólico
from sympy import *
import sympy
init_printing()

x, y = symbols('x y')

In [2]:
f = 2*x - y
f


Out[2]:
$$2 x - y$$

In [57]:
g = x + y
g
plt.arrow?

In [56]:
F = lambdify((x,y), f)
G = lambdify((x,y), g)


  File "<string>", line 1
    lambda -5.1629889770999995,7.480258408599998: (-y + 2*x)
           ^
SyntaxError: invalid syntax

In [55]:
def step(x, y, dt, f, g):
    return (x + dt * f(x, y),
             y + dt * g(x, y))

def trayectoria(x0, y0, f, g, dt=0.01, steps=100):
    x = x0
    y = y0
    t = list()
    for n in range(steps):
        t.append((x, y))
        x, y = step(x, y, dt, f, g)
    return t

plt.plot([y[0] for y in trayectoria(5, 3, F, G, 0.1, 10)],
         [y[1] for y in trayectoria(5, 3, F, G, 0.1, 10)])


Out[55]:
[<matplotlib.lines.Line2D at 0x7fdb72f5c080>]