Ejercicio: 2Eva_IT2012_T1_MN Longitud de teleférico
Los datos tomados para el problema son:
x = [0.00, 0.25, 0.50, 0.75, 1.00]
f(x) = [25.0, 22.0, 32.0, 51.0, 75.0]
Se debe considerar que los datos tienen tamaño de paso (h) del mismo valor.
Literal a)
Fórmulas de orden 2, a partir de:
http://blog.espol.edu.ec/analisisnumerico/formulas-de-diferenciacion-por-diferencias-divididas/
considere que el término del Error O(h2), perdió una unidad del exponente en el proceso, por lo que las fórmulas de orden 2 tienen un error del mismo orden.
Se puede usar por ejemplo:
Para los términos x en el intervalo [0,0.50] hacia adelante
f'(x_i) = \frac{-f(x_{i+2})+4f(x_{i+1})-3f(x_i)}{2h} + O(h^2)
Para el término x con 0.75, centradas:
f'(x_i) = \frac{f(x_{i+1})-f(x_{i-1})}{2h} + O(h^2)
y para el término x con 1.0, hacia atras:
f'(x_i) = \frac{3f(x_{i})-4f(x_{i-1})+f(x_{i-2})}{2h}
+ O(h^2)
Luego se aplica el resultado en la fórmula:
g(x) = \sqrt{1+[f'(x)]^2}
L = \int_a^b g(x) \delta x .
Literal b)
Use las fórmulas de integración numérica acorde a los intervalos. Evite repetir intervalos, que es el error más común.
Por ejemplo, se puede calcular el integral de g(x) aplicando dos veces Simpson de 1/3, que sería la más fácil de aplicar dado los h iguales.
Otra opción es Simpson de 3/8 añadido un trapecio, otra forma es solo con trapecios en todo el intervalo.
Como ejemplo de cálculo usando un algoritmo en Python se muestra que:
f'(x): [-38. 22. 66. 86. 106.]
g(x): [ 38.0131 22.0227 66.0075 86.0058 106.0047]
L con S13: 59.01226169578733
L con trapecios: 61.511260218050175
los cálculos fueron realizados a partir de la funciones desarrolladas durante la clase. Por lo que se muestran 3 de ellas en el algoritmo.
import numpy as np
import matplotlib.pyplot as plt
# Funciones para integrar realizadas en clase
def itrapecio (datos,dt):
n=len(datos)
integral=0
for i in range(0,n-1,1):
area=dt*(datos[i]+datos[i+1])/2
integral=integral + area
return(integral)
def isimpson13(f,h):
n = len(f)
integral = 0
for i in range(0,n-2,2):
area = (h/3)*(f[i]+4*f[i+1]+f[i+2])
integral = integral + area
return(integral)
def isimpson38 (f,h):
n=len(f)
integral=0
for i in range(0,n-3,3):
area=(3*h/8)*(f[i]+3*f[i+1]+3*f[i+2] +f[i+3] )
integral=integral + area
return(integral)
# INGRESO
x = np.array( [0.0,0.25,0.50,0.75,1.00])
fx= np.array([ 25.0, 22.0, 32.0, 51.0, 75.0])
# PROCEDIMIENTO
n = len(fx)
dx = x[1]-x[0]
# Diferenciales
dy = np.zeros(n)
for i in range(0,n-2,1):
dy[i] = (-fx[i+2]+4*fx[i+1]-3*fx[i])/(2*dx)
# Diferenciales penúltimo
i = n-2
dy[i] = (fx[i+1]-fx[i-1])/(2*dx)
# Diferenciales último
i = n-1
dy[i] = (3*fx[i]-4*fx[i-1]+fx[i-2])/(2*dx)
# Función gx
gx = np.sqrt(1+(dy**2))
# Integral
integral = isimpson13(gx,dx)
integrartr = itrapecio(gx,dx)
# SALIDA
print('f\'(x):', dy)
print(' g(x):', gx)
print("L con S13: ", integral )
print("L con trapecios: ", integrartr )
plt.plot(x,fx)
plt.show()
La gráfica del cable es: