You are on page 1of 3

PATA return np.vstack((X,Y)).

T
CÓDIGO
1) import numpy as np
CÓDIGO BASE import matplotlib.pyplot as plt
#runge kutta cuarto orden
import numpy as np f = lambda x,y : (1+x)*np.sqrt(y)
def RK4(f,a,b,Yo,N):
"Resolver el PVI: y=f(x,y), y(a)=Yo" a=6
"en el intervalo (a,b)" b = 10
"N: número de pasos" h=0.1
Yo = 1
X = np.zeros(N+1) N = int( (b-a)/h )
Y = np.zeros(N+1) Ss = RK4(f,a,b,Yo,N)
Ss
X[0] = a
Y[0] = Yo GRÁFICO
import matplotlib.pyplot as plt
h = (b - a)/N
for i in range(N): plt.plot(Ss[:,0],Ss[:,1])
k1 = f(X[i],Y[i])
k2 = f(X[i] + h/2, Y[i] + k1*h/2)
k3 = f(X[i] + h/2, Y[i] + k2*h/2)
k4 = f(X[i] + h , Y[i] + k3*h)
Y[i+1] = Y[i] + (k1 + 2*k2 + 2*k3 + k4)*h/6
X[i+1] = X[i] + h
T[0] = a
X[0] = Xo
Y[0] = Yo

h = (b - a)/N
for i in range(N):
X[i+1] = X[i] + h*f(T[i],X[i],Y[i])
Y[i+1] = Y[i] + h*g(T[i],X[i],Y[i])
T[i+1] = T[i] + h

return np.vstack((T,X,Y)).T
CÓDIGO
f = lambda t,x,y : -2*x + 5*np.exp(-t)
g = lambda t,x,y : -0.5*x*(y**2)
2)
a=0
Código base
b=2
# euler para dos ecuaciones
Xo = 1
import numpy as np
Yo = 1
def Euler2(f,g,a,b,Xo,Yo,N):
h= 0.1
"Resolver el PVI: y=f(x,y), y(a)=Yo"
N = int( (b-a)/h )
"en el intervalo (a,b)"
S = Euler2(f,g,a,b,Xo,Yo,N)
"N: número de pasos"
S
X = np.zeros(N+1)
Y = np.zeros(N+1)
T = np.zeros(N+1)
GRAFICO
plt.plot(S[:,0],S[:,1],S[:,0],S[:,2])

You might also like