Ejercicio: 2Eva2018TI_T4 Dragado acceso marítimo
a) La matriz para remover sedimentos se determina como la diferencia entre la profundidad y la matriz de batimetría.
Considere el signo de la profundidad para obtener el resultado:
matriz remover sedimentos:
[[ 4.21 0. 0.96 0. 3.76 3.09]
[ 2.15 0.11 2.05 3.77 0. 3.07]
[ 0. 1.14 1.65 0. 1.62 1.35]
[ 3.7 0. 0.59 2.33 0. 4.23]
[ 0. 1.38 3.53 4.49 1.98 1.4 ]
[ 0. 0.77 0.32 1.06 4.24 3.54]]
se obtiene con la instrucciones:
# 2da Evaluación I Término 2018
# Tema 4. canal acceso a Puertos de Guayaquil
import numpy as np
# INGRESO
profcanal = 11
xi = np.array([ 0., 50., 100., 150., 200., 250.])
yi = np.array([ 0., 100., 200., 300., 400., 500.])
batimetria = [[ -6.79,-12.03,-10.04,-11.60, -7.24,-7.91],
[ -8.85,-10.89, -8.95, -7.23,-11.42,-7.93],
[-11.90, -9.86, -9.35,-12.05, -9.38,-9.65],
[ -7.30,-11.55,-10.41, -8.67,-11.84,-6.77],
[-12.17, -9.62, -7.47, -6.51, -9.02,-9.60],
[-11.90,-10.23,-10.68, -9.94, -6.76,-7.46]]
batimetria = np.array(batimetria)
# PROCEDIMIENTO
[n,m] = np.shape(batimetria)
# Matriz remover sedimentos
remover = batimetria + profcanal
for i in range(0,n,1):
for j in range(0,m,1):
if remover[i,j]<0:
remover[i,j]=0
# SALIDA
print('matriz remover sedimentos: ')
print(remover)
b) el volumen se calcula usando el algoritmo de Simpson primero por un eje, y luego con el resultado se continúa con el otro eje,
Considere que existen 6 puntos, o 5 tramos integrar en cada eje.
- Al usar Simpson de 1/3 que usan tramos pares, faltaría integrar el último tramo.
- En el caso de Simpson de 3/8 se requieren tramos múltiplos de 3, por lo que faltaría un tramo para volver a usar la fórmula.
La solución por filas se implementa usando una combinación de Simpson 3/8 para los puntos entre remover[i, 0:(2+1)] y Simpson 1/3 para los puntos entre remover[i, 3:(4+1)].
Luego se completa el integral del otro eje con el resultado anterior, aplicando el mismo método.
Se obtuvieron los siguientes resultados:
Integral en eje x:
[435.1 346.5 287.44 255.58 590.54 440.52]
Volumen: 199161.11111111115
que se obtiene usando las instrucciones a continuación de las anteriores:
# literal b) ---------------------------
def simpson13(fi,h):
s13 = (h/3)*(fi[0] + 4*fi[1] + fi[2])
return(s13)
def simpson38(fi,h):
s38 = (3*h/8)*(fi[0] + 3*fi[1] + 3*fi[2]+ fi[3])
return(s38)
Integralx = np.zeros(n,dtype = float)
for i in range(0,n,1):
hx = xi[1]-xi[0]
fi = remover[i, 0:(0+4)]
s38 = simpson38(fi,hx)
fi = remover[i, 3:(3+3)]
s13 = simpson13(fi,hx)
Integralx[i] = s38 + s13
hy = yi[1] - yi[0]
fj = Integralx[0:(0+4)]
s38 = simpson38(fj,hy)
fj = Integralx[3:(3+3)]
s13 = simpson13(fj,hy)
volumen = s38 + s13
# Salida
np.set_printoptions(precision=2)
print('Integral en eje x: ')
print(Integralx)
print('Volumen: ', volumen)
Para el examen escrito, se requieren realizar al menos 3 iteraciones/ filas para encontrar el integral.