2018_IIT Semana 10 – Diferenciación Numérica

1. Lecturas

1.1 Diferenciación Numérica

http://blog.espol.edu.ec/matg1013/diferenciacion-numerica/

1.2 EDO con Taylor

http://blog.espol.edu.ec/matg1013/8-1-edo-con-taylor/

2. Ejercicios

2.1 Deflexión de mástil

http://blog.espol.edu.ec/matg1013/2eva_it2015_t2-deflexion-de-mastil/

Desarrollado incialmente integrando la función y luego integrando las muestras
Comparar el desarrollo usando la aproximación de Taylor

Instrucciones en Python

# 2Eva_IT2015_T2 Deflexión de mástil
import numpy as np
import matplotlib.pyplot as plt

# cuadratura de Gauss de dos puntos
def integraCuadGauss2p(funcionx,a,b):
    x0 = -1/np.sqrt(3)
    x1 = -x0
    xa = (b+a)/2 + (b-a)/2*(x0)
    xb = (b+a)/2 + (b-a)/2*(x1)
    area = ((b-a)/2)*(funcionx(xa) + funcionx(xb))
    return(area)

def integrasimpson13_puntos(xi,yi):
    h = (xi[1]-xi[0])
    area = (h/3)*(yi[0]+4*yi[1]+yi[2])
    return(area)

# INGRESO
F = 60
L = 30
E= 1.28e8
I = 0.05
x0 = 0
y0 = 0
tramos = 30

d2y = lambda x: (F/(2*E*I))*((L-x)**2)

# PROCEDIMIENTO
muestras = tramos +1
xi = np.linspace(x0,L,muestras)
d2yi =  d2y(xi)

# integrando una vez
dyi = np.zeros(muestras,dtype=float)
integrad2y = 0
for i in range(1,muestras,1):
    dI = integraCuadGauss2p(d2y,xi[i-1],xi[i])
    integrad2y = integrad2y + dI
    dyi[i] = integrad2y

# integrando por segunda vez
yi = []
xis = []
hasta = muestras-1
impar = muestras%2
if impar==0:
    hasta = muestras-1
integrady = 0
for i in range(0,hasta,2):
    dI = integrasimpson13_puntos(xi[i:i+3],dyi[i:i+3])
    integrady = integrady + dI
    yi.append(integrady)
    xis.append(xi[i])
if impar ==1:
    dI = integrasimpson13_puntos(xi[i:],dyi[i:])
    integrady = integrady + dI
    yi.append(integrady)
    xis.append(xi[i+2])
    
if impar==0:
    h = xi[muestras-1]-xi[muestras-2]
    dI = h*(dyi[muestras-1]+dyi[muestras-2])/2
    integrady = integrady + dI
    yi.append(integrady)
    xis.append(xi[muestras-1])

yi = np.array(yi)
xis = np.array(xis)

# resolviendo por Taylor
d1y = lambda x: -(F/(2*E*I))*((L-x)**3)/3 -(-(F/(2*E*I))*((L-0)**3)/3)
estimado = np.zeros(shape=(muestras,2),dtype = float)
# incluye el punto inicial
estimado[0] = [x0,y0]
h = L/tramos
x = x0
y = y0
for i in range(1,muestras,1):
    y = y + h*d1y(x) + ((h**2)/2)*d2y(x)
    x = x+h
    estimado[i] = [x,y]
    
# SALIDA
print('integrando: ')
print(yi)
print('con Taylor: ')
print(estimado)
# Grafica
plt.plot(xi,d2yi, label='d2y')
plt.plot(xi,dyi, label='d1y')
plt.plot(xis,yi, label='y')
plt.plot(estimado[:,0],estimado[:,1], label='y Taylor')
plt.legend()
plt.show()

Solución propuesta usando Runge-Kutta

http://blog.espol.edu.ec/matg1013/s2eva_it2015_t2-deflexion-de-mastil/