Aula EDO


In [2]:
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

In [13]:
# Definir constantes
R = 1
L = 1
C = 1
t = np.linspace(0, 20, 100)

delta = t[1] - t[0]

# Condicoes iniciais
q0 = 1
I0 = 0

def dq(t, q, I):
    return I

def dI(t, q, I):
    return - (R*I + q/C) / L

In [14]:
q_analytical = np.e**(-t/2) * np.cos(3**.5 * t / 2)

In [20]:
# Método de Euler
q_euler = np.zeros(len(t))
I = np.zeros(len(t))

q_euler[0] = q0
I[0] = I0

for i in range(1, len(t)):
    q_euler[i] = q_euler[i-1] + delta * dq(t[i-1], q_euler[i-1], I[i-1])
    I[i] = I[i-1] + delta * dI(t[i-1], q_euler[i-1], I[i-1])

In [ ]:
#Metodo de Euler Modificado
q_emod = np.zeros(len(t))
I = np.zeros(len(t))

q_emod[0] = q0
I = I0

for i in range(1, len(t)):
    k1 = delta * dq(t[i-1], q_emod[i-1], I[i-1])
    l1 = delta * dI(t[i-1], q_emod[i-1], I[i-1])
    
    k2 = delta * dq(t[i-1], )

In [21]:
plt.plot(t, q_analytical)
plt.plot(t, q_euler)


Out[21]:
[<matplotlib.lines.Line2D at 0x105011c50>]

In [ ]: