// MÉTODO DE INTEGRACIÓN DE EULER

// EJEMPLO: dx /dt = - 1/tau * x   siendo x la variable dependiente y tau un parámetro

// esta es una ecuación que tiene solución analítica: x(t) = x(0) exp(-t/tau)

tau = 5
x0 = 4

t = 0:20
x1 = x0*exp(-t/tau)

// Euler "explícito" : f(x(k)) = - 1/tau * x(k)
// x(k+1) = x(k) - delta t / tau * x(k)

Dt = 1
for k = 1:20; x2(1) = x0
x2(k+1) = (1 - Dt / tau) * x2(k)

// Euler "implícito" : f(x(k+1)) = - 1/tau * x(k+1)
// x(k+1) = x(k) - delta t / tau * x(k+1)

x3(1) = x0;
x3(k+1) = 1 / (1 + Dt/tau) * x3(k)

end
clf
plot2d(t,[x1' x2 x3])
xlabel ('t')
ylabel ('x')
legend (['exacta','explícito','implícito'])

pause
clf

// para Euler "explícito"  x(k+1) = (1 + Dt/tau)^(k+1) * x(0)
// por lo tanto es estable si   abs( 1 - Dt/tau ) < 1

// pero particularmente oscilará si   tau < Dt < 2 tau
Dt = 8
for k = 1:20; x4(1) = x
x4(k+1) = (1 - Dt / tau) * x4(k)
end

plot(t,x4)
xlabel ('t')
ylabel ('x')
