Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Parcial Unidad 5
1.0.1 Clasificar las siguientes ecuaciones diferenciales
Ordinaria t s 2 1 No
d2 𝑡 d𝑡
𝑠2 2
+𝑠𝑡 =𝑠
d𝑠 d𝑠
Ordinaria y x 3 1 Si
𝑦‴ −5𝑥𝑦′ = 𝑒𝑥 +1
Ordinaria y x 3 No tiene No
grado
𝑥𝑦‴ +𝑥2 𝑦″ −𝑥𝑦′ +sin(𝑦) = 0
Solución
Reescribiendo la ecuación diferencial
d𝑦
𝑥 + (𝑥 + 1) 𝑦 = 𝑥2 + 2𝑥
d𝑥
1
Normalizando la ecuación diferencial
d𝑦 𝑥 + 1
+ 𝑦 =𝑥+2
d𝑥 𝑥
Se observa que se trata una ecuación diferencial lineal de primer orden, donde
𝑥+1 1
𝑝(𝑥) = = 1 + ; 𝑓(𝑥) = 𝑥 + 2
𝑥 𝑥
por lo que el factor integrante es
1
𝜇 (𝑥) = 𝑒∫(1+ 𝑥 )𝑑𝑥 = 𝑒𝑥+𝐿𝑛𝑥 = 𝑒𝑥 𝑒𝐿𝑛𝑥 = 𝑥𝑒𝑥
Permitiendo resolver la siguiente relación
′
(𝜇𝑦) = 𝜇𝑓 = 𝑥𝑒𝑥 (𝑥 + 2) ∫ 𝑑 (𝜇𝑦) = ∫ 𝑥2 𝑒𝑥 𝑑𝑥 + 2 ∫ 𝑥𝑒𝑥 𝑑𝑥
2
1.0.3 Resolver la ecuación diferenciaal mediante el polinomio de Taylor
Resolver la ecuación diferencial
1
𝑦′ =
(5 + 𝑥) 𝑦
4
con la condición incial 𝑦(0) = 2, aproximándola a través de un polinomio de Taylor de quinto grado
Solución
La solución de esta ecuación diferencial es 𝑦(𝑥), misma que puede ser representada por la expresión
𝑦″ (𝑥0 ) ‴
2 𝑦 (𝑥0 ) 3 𝑦(𝑛) (𝑥0 ) 𝑛
𝑦(𝑥) = 𝑃𝑛 = 𝑦 (𝑥0 )+𝑦′ (𝑥0 ) (𝑥 − 𝑥0 )+ (𝑥 − 𝑥0 ) + (𝑥 − 𝑥0 ) +⋯+ (𝑥 − 𝑥0 ) .
2! 3! 𝑛!
Con las condiciones iniciales, tenemos el primer término del Polinomio de Taylor,
𝑥0 = 0; 𝑦 (𝑥0 ) = 2.
Posteriormente, de la ecuación diferencial podemos encontrar a 𝑦′ (𝑥0 ) del segundo término del
Polinomio de Taylor
1 1
𝑦′ (𝑥0 ) = (5 + 𝑥0 ) 𝑦0 = (5 + 0) (2) = 2.5
4 4
Para poder determinar a 𝑦″ (𝑥0 ) es necesario considerar que 𝑦′ = 41 (5 + 𝑥) 𝑦, por lo que derivando
a 𝑦′ y evaluando en 𝑥0 , se encuentra a 𝑦″ (𝑥0 ) del tercer término del Polinomio de Taylor,
d ′ d 1
𝑦″ (𝑥0 ) = (𝑦 ) ∣ = [ (5 + 𝑥) 𝑦(𝑥)] ∣
d𝑥 𝑥=𝑥
d𝑥 4 𝑥=𝑥
0 0
1 1 1 1
= [ (5 + 𝑥) 𝑦′ (𝑥) + 𝑦(𝑥)] ∣ = (5 + 𝑥0 ) 𝑦′ (𝑥0 ) + 𝑦(𝑥0 )
4 4 𝑥=𝑥
4 4
0
1 1
= (5 + 0) (2.5) + (2) = 3.625
4 4
d ″ d 1 1
𝑦‴ (𝑥0 ) = (𝑦 ) ∣ = [ (5 + 𝑥) 𝑦′ (𝑥) + 𝑦(𝑥)] ∣
d𝑥 𝑥=𝑥
d𝑥 4 4 𝑥=𝑥
0 0
1 1
= [ (5 + 𝑥) 𝑦″ (𝑥) + 𝑦′ (𝑥)] ∣
4 2 𝑥=𝑥 0
1 1 1 1
= (5 + 𝑥0 ) 𝑦″ (𝑥0 ) + 𝑦′ (𝑥0 ) = (5 + 0) (3.625) + (2.5)
4 2 4 2
= 5.78125
3
Continuando con este procedimiento, la aproximación de la ecuación diferencial mediante un poli-
nomio de Taylor de quinto grado, se tiene
def P_T(x):
return 2+2.5*x+1.813*x**2+0.964*x**3+0.414*x**4+0.152*x**5 #polinomio de␣
↪Taylor de 5to grado
def sol(x):
return 2*math.exp(0.25*(5*x+0.5*x**2)) #solución analítica de la ecuación␣
↪diferencial
x=np.zeros(n)
y=np.zeros(n)
ys=np.zeros(n)
x[0]=0
y[0]=2
ys[0]=2
x y_aprox y_exact
0.000 2.00000 2.00000
0.250 2.75514 2.75512
0.500 3.85438 3.85510
0.750 5.46856 5.47920
1.000 7.84300 7.91015
4
1.0.4 Método de Euler
Resolver la ecuación diferencial
1
𝑦′ = (5 + 𝑥) 𝑦
4
con la condición incial 𝑦(0) = 2, aproximándola a través del método de Euler en el intervalo de
0 ≤ 𝑥 ≤ 1 con ℎ = 0.25.
𝑦𝑖+1 = 𝑦𝑖 + ℎ𝑓(𝑥𝑖 , 𝑦𝑖 )𝑖 = 0, 1, 2, ...
def f(x,y):
return (1/4)*(5+x)*y
def sol(x):
return 2*math.exp(0.25*(5*x+0.5*x**2)) #solución analítica de la ecuación␣
↪diferencial
5
x=np.zeros(n)
y=np.zeros(n)
ys=np.zeros(n)
x[0]=0
y[0]=2
ys[0]=2
print('{:^12} {:^10} {:^9}'.format(' x ', 'y_aprox', 'y_exact'))
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[0], y[0], ys[0]))
for i in range(1,n):
x[i]=x[i-1]+h
y[i]=y[i-1]+h*f(x[i-1],y[i-1])
ys[i]=sol(x[i])
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[i], y[i], ys[i]))
plt.scatter(x,y, color='black') #puntos para la solución aproximada
plt.plot(x,ys, "red") #línea continua para la solución analítica
x y_aprox y_exact
0.000 2.00000 2.00000
0.250 2.62500 2.75512
0.500 3.48633 3.85510
0.750 4.68475 5.47920
1.000 6.36834 7.91015
6
1.0.5 Método de Euler modificado
Resolver la ecuación diferencial
1
𝑦′ =
(5 + 𝑥) 𝑦
4
con la condición incial 𝑦(0) = 2, aproximándola a través del método de Euler modificado en el
intervalo de 0 ≤ 𝑥 ≤ 1 con ℎ = 0.25.
ℎ
𝑦𝑖+1𝑝 = 𝑦𝑖 + ℎ𝑓(𝑥𝑖 , 𝑦𝑖 )𝑦𝑖+1𝑐 = 𝑦𝑖 + [𝑓 (𝑥𝑖 , 𝑦𝑖 ) + 𝑓 (𝑥𝑖+1 , 𝑦𝑖+1𝑝 )] 𝑖 = 0, 1, 2, ...
2
def f(x,y):
return (1/4)*(5+x)*y
def sol(x):
return 2*math.exp(0.25*(5*x+0.5*x**2)) #solución analítica de la ecuación␣
↪diferencial
x=np.zeros(n)
yp=np.zeros(n)
yc=np.zeros(n)
ys=np.zeros(n)
x[0]=0
yc[0]=2
ys[0]=2
print('{:^12} {:^10} {:^9}'.format(' x ', 'y_aprox', 'y_exact'))
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[0], yc[0], ys[0]))
for i in range(1,n):
x[i]=x[i-1]+h
yp[i]=yc[i-1]+h*f(x[i-1],yc[i-1])
yc[i]=yc[i-1]+(h/2)*(f(x[i-1],yc[i-1])+f(x[i],yp[i]))
ys[i]=sol(x[i])
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[i], yc[i], ys[i]))
plt.scatter(x,yc, color='black') #puntos para la solución aproximada
plt.plot(x,ys, "red") #línea continua para la solución analítica
x y_aprox y_exact
0.000 2.00000 2.00000
7
0.250 2.74316 2.75512
0.500 3.81940 3.85510
0.750 5.39807 5.47920
1.000 7.74392 7.91015
def f(x,y):
8
return (1/4)*(5+x)*y
def sol(x):
return 2*math.exp(0.25*(5*x+0.5*x**2)) #solución analítica de la ecuación␣
↪diferencial
x=np.zeros(n)
k1=np.zeros(n)
k2=np.zeros(n)
y=np.zeros(n)
ys=np.zeros(n)
x[0]=0
y[0]=2
ys[0]=2
print('{:^12} {:^10} {:^9}'.format(' x ', 'y_aprox', 'y_exact'))
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[0], y[0], ys[0]))
for i in range(1,n):
x[i]=x[i-1]+h
k1[i]=h*f(x[i-1],y[i-1])
k2[i]=h*f(x[i-1]+h,y[i-1]+k1[i])
y[i]=y[i-1]+(1/2)*(k1[i]+k2[i])
ys[i]=sol(x[i])
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[i], y[i], ys[i]))
plt.scatter(x,y, color='black') #puntos para la solución aproximada
plt.plot(x,ys, "red") #línea continua para la solución analítica
x y_aprox y_exact
0.000 2.00000 2.00000
0.250 2.74316 2.75512
0.500 3.81940 3.85510
0.750 5.39807 5.47920
1.000 7.74392 7.91015
9
1.0.7 Método de Runge-Kutta de 4to orden
Resolver la ecuación diferencial
1
𝑦′ =(5 + 𝑥) 𝑦
4
con la condición incial 𝑦(0) = 2, aproximándola a través del método de Runge-Kutta de cuarto
orden en el intervalo de 0 ≤ 𝑥 ≤ 1 con ℎ = 0.25.
ℎ 𝑘 ℎ 𝑘
𝑘1 = ℎ𝑓 (𝑥𝑖 , 𝑦𝑖 ) 𝑘2 = ℎ𝑓 (𝑥𝑖 + , 𝑦 + 1 ) 𝑘3 = ℎ𝑓 (𝑥𝑖 + , 𝑦𝑖 + 2 ) 𝑘4 = ℎ𝑓 (𝑥𝑖 + ℎ, 𝑦𝑖 + 𝑘3 )
2 𝑖 2 2 2
def f(x,y):
return (1/4)*(5+x)*y
def sol(x):
return 2*math.exp(0.25*(5*x+0.5*x**2)) #solución analítica de la ecuación␣
↪diferencial
10
x=np.zeros(n)
k1=np.zeros(n)
k2=np.zeros(n)
k3=np.zeros(n)
k4=np.zeros(n)
y=np.zeros(n)
ys=np.zeros(n)
x[0]=0
y[0]=2
ys[0]=2
print('{:^12} {:^10} {:^9}'.format(' x ', 'y_aprox', 'y_exact'))
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[0], y[0], ys[0]))
for i in range(1,n):
x[i]=x[i-1]+h
k1[i]=h*f(x[i-1],y[i-1])
k2[i]=h*f(x[i-1]+(h/2),y[i-1]+(k1[i]/2))
k3[i]=h*f(x[i-1]+(h/2),y[i-1]+(k2[i]/2))
k4[i]=h*f(x[i-1]+h,y[i-1]+k3[i])
y[i]=y[i-1]+(1/6)*(k1[i]+2*k2[i]+2*k3[i]+k4[i])
ys[i]=sol(x[i])
print('{:10.3f} {:10.5f} {:10.5f}'.format(x[i], y[i], ys[i]))
plt.scatter(x,y, color='black') #puntos para la solución aproximada
plt.plot(x,ys, "red") #línea continua para la solución analítica
x y_aprox y_exact
0.000 2.00000 2.00000
0.250 2.75506 2.75512
0.500 3.85491 3.85510
0.750 5.47875 5.47920
1.000 7.90917 7.91015
11
1.0.8 Sistemas de ecuaciones diferenciales
Resolver el siguiente sistema de ecuaciones diferenciales
𝑦′ = 4𝑥 − 𝑦 + 1𝑧 ′ = 2𝑧 − 𝑦
utilizando el método de Runge-Kutta de cuarto orden, para las condiciones iniciales: 𝑦(0) = 𝑧(0) =
1, en el intervalo de 0 ≤ 𝑥 ≤ 1 con ℎ = 0.2.
[42]: import numpy as np
import math
import matplotlib.pyplot as plt
def f(x,y,z):
return 4*x-y+1
def g(x,y,z):
return 2*z-y
def soly(x):
return -3+4*x+4*math.exp(-x) #solución analítica de y
def solz(x):
return -(1/2)+2*x+(4/3)*math.exp(-x)+(1/6)*math.exp(2*x) #solución␣
↪analítica de z
12
n=6 #aquí se puede jugar con el número de puntos a evaluar
h=(1/(n-1))
x=np.zeros(n)
k1_y=np.zeros(n)
k2_y=np.zeros(n)
k3_y=np.zeros(n)
k4_y=np.zeros(n)
y=np.zeros(n)
k1_z=np.zeros(n)
k2_z=np.zeros(n)
k3_z=np.zeros(n)
k4_z=np.zeros(n)
z=np.zeros(n)
ys=np.zeros(n)
zs=np.zeros(n)
x[0]=0
y[0]=1
z[0]=1
ys[0]=1
zs[0]=1
print('{:^12} {:^10} {:^10} {:^10} {:^10}'.format(' x ', 'y_aprox', 'y_exact',␣
↪'z_aprox', 'z_exact'))
for i in range(1,n):
x[i]=x[i-1]+h
k1_y[i]=h*f(x[i-1],y[i-1],z[i-1])
k2_y[i]=h*f(x[i-1]+(h/2),y[i-1]+(k1_y[i]/2),z[i-1]+(k1_y[i]/2))
k3_y[i]=h*f(x[i-1]+(h/2),y[i-1]+(k2_y[i]/2),z[i-1]+(k2_y[i]/2))
k4_y[i]=h*f(x[i-1]+h,y[i-1]+k3_y[i],z[i-1]+k3_y[i])
y[i]=y[i-1]+(1/6)*(k1_y[i]+2*k2_y[i]+2*k3_y[i]+k4_y[i])
k1_z[i]=h*g(x[i-1],y[i-1],z[i-1])
k2_z[i]=h*g(x[i-1]+(h/2),y[i-1]+(k1_z[i]/2),z[i-1]+(k1_z[i]/2))
k3_z[i]=h*g(x[i-1]+(h/2),y[i-1]+(k2_z[i]/2),z[i-1]+(k2_z[i]/2))
k4_z[i]=h*g(x[i-1]+h,y[i-1]+k3_z[i],z[i-1]+k3_z[i])
z[i]=z[i-1]+(1/6)*(k1_z[i]+2*k2_z[i]+2*k3_z[i]+k4_z[i])
ys[i]=soly(x[i])
zs[i]=solz(x[i])
print('{:10.3f} {:10.5f} {:10.5f} {:10.5f} {:10.5f}'.format(x[i], y[i],␣
↪ys[i], z[i], zs[i]))
13
plt.plot(x,zs, "red") #línea continua para la solución analítica de z
14