U1videos Polinomio de Taylor con Python
2Eva_IIT2019_T4 Integrar con Cuadratura de Gauss
2da Evaluación II Término 2019-2020. 28/Enero/2020. MATG1013
Tema 3. (25 Puntos) Considere la función f con regla de correspondencia:
f(x) = x ln(x)Se desea aproximar el valor del integral I en el intervalo [1,4]
I = \int_a^b f(x) dxa) Use el método de Cuadratura de Gauss con 2 términos para aproximar el valor de I en el intervalo [1,4]
Usando el método compuesto de Simpson:
I = I_s - \frac{(b-a)}{180}h^4 f^{(4)} (\xi) ; \xi \in[a,b]Donde Is es el valor aproximado de I y h la longitud de cada intervalo.
b) Determine el mínimo número de subintervalos que permita alcanzar una tolerancia de 0.0001. NO considere errores de redondeo.
Rúbrica: literal a (10 puntos), literal b (15 puntos)
s2Eva_IIT2019_T4 Integrar con Cuadratura de Gauss
Ejercicio: 2Eva_IIT2019_T4 Integrar con Cuadratura de Gauss
f(x) = x ln(x)1 ≤x≤4
se requiere:
I = \int_1^4 x ln(x) dxliteral a. Usando el método de Cuadratura de Gauss con 2 términos
x_a = \frac{b+a}{2} + \frac{b-a}{2}x_0 = \frac{4+1}{2} + \frac{4-1}{2}\Big(\frac{-1}{\sqrt{3}} \Big)xa =1.6339745962155612
x_b = \frac{b+a}{2} + \frac{b-a}{2}x_1 = \frac{4+1}{2} + \frac{4-1}{2}\Big(\frac{1}{\sqrt{3}} \Big)xb =3.366025403784439
I \cong \frac{b-a}{2}(f(x_a) + f(x_b)) I \cong \frac{4-1}{2}(x_a ln(x_a) + x_b ln(x_b))I = 7.33164251999249
literal b. De la fórmula , despejar el valor del error<0.0001
\Big|\frac{(b-a)}{180}h^4 f^{(4)} (\xi)\Big| <0.0001; \xi \in[a,b] h^4 <0.0001\frac{180}{(4-1)}\frac{1}{f^{(4)} (\xi)} h^4 < 0.006\frac{1}{f^{(4)} (\xi)} h <\Big(0.006\frac{1}{f^{(4)} (\xi)}\Big)^{1/4}obteniendo la 4ta derivada de la función:
f(x) = x ln(x) f'(x) = ln(x) + x\Big(\frac{1}{x} \Big) = ln(x) +1 f''(x) = \frac{1}{x} f'''(x) = -\frac{1}{x^2} f^{(4)}(x) = 2\frac{1}{x^3}se tiene que:
h <\Big(0.006\frac{1}{f^{(4)} (\xi)}\Big)^{1/4} h <\Big(0.006\frac{1}{2\frac{1}{\xi^3}}\Big)^{1/4} h <\Big(0.003\xi^3\Big)^{1/4} h <(0.003)^{1/4}\xi^{3/4}en el peor de los casos, se toma el valor menor de ξ =1
h <(0.003)^{1/4} h<0.2340347319320716
s2Eva_IIT2019_T3 EDP elíptica, placa en (1,1)
Ejercicio: 2Eva_IIT2019_T3 EDP elíptica, placa en (1,1)
dada la ecuación del problema:
\frac{\delta ^2 u}{\delta x^2} + \frac{\delta ^2 u}{\delta y^2} = \frac{x}{y} + \frac{y}{x}1 < x < 2
1 < y < 2
Se convierte a la versión discreta usando diferencias divididas centradas:
\frac{u[i-1,j]-2u[i,j]+u[i+1,j]}{\Delta x^2} + + \frac{u[i,j-1]-2u[i,j]+u[i,j+1]}{\Delta y^2} = \frac{x_i}{y_j} + \frac{y_j}{x_i}
Se agrupan los términos Δx, Δy semejante a formar un λ al multiplicar todo por Δy2
\frac{\Delta y^2}{\Delta x^2}\Big(u[i-1,j]-2u[i,j]+u[i+1,j] \Big) + + \frac{\Delta y^2}{\Delta y^2}\Big(u[i,j-1]-2u[i,j]+u[i,j+1]\Big) = =\Delta y^2\Big( \frac{x_i}{y_j} + \frac{y_j}{x_i}\Big)los tamaños de paso en ambos ejes son de igual valor, se simplifica la ecuación
\lambda= \frac{\Delta y^2}{\Delta x^2} = 1u[i-1,j]-2u[i,j]+u[i+1,j] + + u[i,j-1]-2u[i,j]+u[i,j+1] = =\Delta y^2\Big( \frac{x_i}{y_j} + \frac{y_j}{x_i}\Big)
u[i-1,j]-4u[i,j]+u[i+1,j] + + u[i,j-1]+u[i,j+1] =\Delta y^2\Big( \frac{x_i}{y_j} + \frac{y_j}{x_i}\Big)
Iteraciones
que permite plantear las ecuaciones para cada punto en posición [i,j]
i=1, j=1
u[0,1]-4u[1,1]+u[2,1] + + u[1,0]+u[1,2] =(0.25)^2\Big( \frac{0.25}{0.25} + \frac{0.25}{0.25}\Big) 0.25ln(0.25)-4u[1,1]+u[2,1] + + 0.25ln(0.25)+u[1,2] = 0.125 -4u[1,1]+u[2,1] +u[1,2] = 0.125 - 2(0.25)ln(0.25) -4u[1,1]+u[2,1] +u[1,2] = 0.8181i=2, j=1
u[1,1]-4u[2,1]+u[3,1]+ +0.5 ln(0.5)+u[2,2]=0.15625 u[1,1]-4u[2,1]+u[3,1]+u[2,2]=0.15625-0.5 ln(0.5) u[1,1]-4u[2,1]+u[3,1]+u[2,2]=0.8493i=3, j=1
u[2,1]-4u[3,1]+u[4,1] + + u[3,0]+u[3,2] =(0.25)^2\Big( \frac{0.75}{0.25} + \frac{0.25}{0.75}\Big) u[2,1]-4u[3,1]+u[4,1]+u[3,2] = 0.20833333-0.75 ln(0.75) u[2,1]-4u[3,1]+u[4,1]+u[3,2] =0.4240Tarea: continuar con el ejercicio hasta plantear todo el sistema de ecuaciones.
A = np.array([ [-4, 1, 0, 1, 0, 0, 0, 0, 0], [ 1,-4, 1, 0, 1, 0, 0, 0, 0], [ 0, 1,-4, 0, 0, 1, 0, 0, 0], [ 1, 0, 0,-4, 1, 0, 1, 0, 0], [ 0, 1, 0, 1,-4, 1, 0, 1, 0], [ 0, 0, 1, 0, 1,-4, 0, 0, 1], [ 0, 0, 0, 1, 0, 0,-4, 1, 0], [ 0, 0, 0, 0, 1, 0, 1,-4, 1], [ 0, 0, 0, 0, 0, 1, 0, 1,-4]]) B = np.array( [0.125 - 2(0.25)ln(0.25), 0.15625 - 0.5ln(0.5), 0.20833 - 0.75 ln(0.75), ...]) B = [0.8181, 0.8493, 0.4240, ...]
Algoritmo con Python
Con valores para la matriz solución:
iteraciones: 15 error entre iteraciones: 6.772297286980838e-05 solución para u: [[0. 0.2789294 0.6081976 0.9793276 1.3862943] [0.2789294 0.6978116 1.1792239 1.7127402 2.2907268] [0.6081976 1.1792239 1.8252746 2.5338403 3.2958368] [0.9793276 1.7127402 2.5338403 3.4280053 4.3846703] [1.3862943 2.2907268 3.2958368 4.3846703 5.5451774]] >>>
y algoritmo detallado:
# 2Eva_IIT2019_T2 EDO, problema de valor inicial # método iterativo import numpy as np # INGRESO # longitud en x a = 1 b = 2 # longitud en y c = 1 d = 2 # tamaño de paso dx = 0.25 dy = 0.25 # funciones en los bordes de la placa abajo = lambda x,y: x*np.log(x) arriba = lambda x,y: x*np.log(4*(x**2)) izquierda = lambda x,y: y*np.log(y) derecha = lambda x,y: 2*y*np.log(2*y) # función de la ecuación fxy = lambda x,y: x/y + y/x # control de iteraciones maxitera = 100 tolera = 0.0001 # PROCEDIMIENTO # tamaño de la matriz n = int((b-a)/dx)+1 m = int((d-c)/dy)+1 # vectores con valore de ejes xi = np.linspace(a,b,n) yj = np.linspace(c,d,m) # matriz de puntos muestra u = np.zeros(shape=(n,m),dtype=float) # valores en los bordes u[:,0] = abajo(xi,yj[0]) u[:,m-1] = arriba(xi,yj[m-1]) u[0,:] = izquierda(xi[0],yj) u[n-1,:] = derecha(xi[n-1],yj) # valores interiores la mitad en intervalo x, # mitad en intervalo y, para menos iteraciones mx = int(n/2) my = int(m/2) promedio = (u[mx,0]+u[mx,m-1]+u[0,my]+u[n-1,my])/4 u[1:n-1,1:m-1] = promedio # método iterativo itera = 0 converge = 0 while not(itera>=maxitera or converge==1): itera = itera +1 # copia u para calcular errores entre iteraciones nueva = np.copy(u) for i in range(1,n-1): for j in range(1,m-1): # usar fórmula desarrollada para algoritmo fij = (dy**2)*fxy(xi[i],yj[j]) u[i,j]=(u[i-1,j]+u[i+1,j]+u[i,j-1]+u[i,j+1]-fij)/4 diferencia = nueva-u erroru = np.linalg.norm(np.abs(diferencia)) if (erroru<tolera): converge=1 # SALIDA print('iteraciones: ',itera) print('error entre iteraciones: ',erroru) print('solución para u: ') print(u) # Gráfica import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D # matrices de ejes para la gráfica 3D X, Y = np.meshgrid(xi, yj) U = np.transpose(u) # ajuste de índices fila es x figura = plt.figure() grafica = Axes3D(figura) grafica.plot_surface(X, Y, U, rstride=1, cstride=1, cmap=cm.Reds) plt.title('EDP elíptica') plt.xlabel('x') plt.ylabel('y') plt.show()
2Eva_IIT2019_T3 EDP elíptica, placa en (1,1)
2da Evaluación II Término 2019-2020. 28/Enero/2020. MATG1013
Tema 3. (30 Puntos) Para la ecuación diferencial parcial elíptica mostrada:
\frac{\partial ^2 u}{\partial x^2} + \frac{\partial ^2 u}{\partial y^2} = \frac{x}{y} + \frac{y}{x}1 < x < 2
1 < y < 2
Y con las siguientes condicines de frontera:
u(x,1)= x \ln (x), u(x,2) = x \ln (4x^{2}),1 \lt x \lt 2 u(1,y)= y \ln(y), u(2,y) = 2y \ln (2y), 1 \lt y \lt 2Considere los valores hx=hy=0.25
Realice la aproximación numérica para la solución.
Para resolver el sistema de ecuaciones utilice el método de Gauss-Seidel para dos iteraciones.
Rúbrica: Plantear la malla (5 puntos), calcular los bordes (3 puntos), plantear las segundas derivadas (7 puntos), plantear las ecuaciones (10 puntos), aproximar la solución (5 puntos)
2Eva_IIT2019_T2 EDO, problema de valor inicial
2da Evaluación II Término 2019-2020. 28/Enero/2020. MATG1013
Tema 2. (25 Puntos) Considere el problema de valor inicial:
y'(t) = f(t,y) = \frac{y}{2t^3}0 ≤ t ≤ 1
y(0.5) = 1.5
a) Escriba la ecuación recursiva que permite aplicar el método de Taylor de orden de error p=2
b) Aproxime el valor de la solución para t= 0.6, 0.7, 0.8 usando el método de Runge-Kutta de orden 2.
Rúbrica: literal a (10 puntos), literal b, tres iteraciones (15 puntos)
s2Eva_IIT2019_T2 EDO, problema de valor inicial
Ejercicio: 2Eva_IIT2019_T2 EDO, problema de valor inicial
la ecuación del problema planteado es:
y'(t) = f(t,y) = \frac{y}{2t^3}0 ≤ t ≤ 1
y(0.5) = 1.5
literal a
La solución empieza usando la Serie de Taylor por ejemplo para tres términos:
y_{i+1} = y_{i} + h y'_i + \frac{h^2}{2!} y''_i x_{i+1} = x_{i} + h E = \frac{h^3}{3!} y'''(z) = O(h^3)Se observa que se tiene el valor inicial y la primera derivada, si usamos tres términos se puede usar la segunda derivada.
y'(t) = f(t,y) = \frac{y}{2t^3} y''(t) = f'(t,y) = \frac{y'}{2t^3} + y \Big(\frac{-3}{2t^4}\Big) y''(t) = \frac{1}{2t^3}\Big( \frac{y}{2t^3} \Big) - \frac{3y}{2t^4} y''(t) = \frac{y}{4t^6} -\frac{3y}{2t^4}por lo que la ecuación de Taylor a usar queda de la siguiente forma:
y_{i+1} = y_{i} + h y'_i + \frac{h^2}{2!} y''_i y_{i+1} = y_{i} + h\frac{y}{2t^3}+\frac{h^2}{2} \Big( \frac{y}{4t^6} -\frac{3y}{2t^4}\Big)que es la ecuacion que se usará con un error de O(h3)
Reemplazando los valores en la fórmula se obtiene la siguiente tabla:
estimado [ti, yi, d1yi, d2yi] [[ 0.5 1.5 6. -12. ] [ 0.6 2.04 4.7222 -12.68004115] [ 0.7 2.4488 3.5697 -10.09510219] [ 0.8 2.7553 2.6907 -7.46259891] [ 0.9 2.9870 2.0487 -5.42399041] [ 1. 3.1648 0. 0. ]]
cuya gráfica es:
literal b
Para desarrollar Runge-Kutta de 2do orden se dispone de los siguientes datos:
y'(t) = f(t,y) = \frac{y}{2t^3}t0 = 0.5, y0 = 1.5, h = 0.1
pasos del algoritmo,
K_1 = h * y'(t_i) K_2 = h * y'(t_i+h, y_i + K_1) y_{i+1} = y_i + \frac{K_1+K_2}{2} t_i = t_i + h</p> <p>iteración 1: i = 0
K_1 = 0.1 * y'(0.5) = 0.6 K_2 = 0.1 * y'(0.5+0.1, 1.5 + 0.6) = 0.4861 y_{1} = 1.5 + \frac{0.6+0.4861}{2} = 2.0430 t_1 = 0.5 + 0.1 = 0.6</p> <p>iteración 2: i = 1
K_1 = 0.1 * y'(0.6) = 0.4729 K_2 = 0.1 * y'(0.6+0.1, 2.0430 + 0.4729) = 0.3667 y_{1} = 2.0430 + \frac{0.4729+0.3667}{2} = 2.4629 t_1 = 0.6 + 0.1 = 0.7</p> <p>iteración 3: i = 2
K_1 = 0.1 * y'(0.7) = 0.3590 K_2 = 0.1 * y'(0.7+0.1, 2.4629 + 0.3590) = 0.3667 y_{1} = 2.4629 + \frac{0.3590+0.3667}{2} = 2.7802 t_1 = 0.7 + 0.1 = 0.8</p> <p>obteniendo la siguiente tabla:
estimado [ti, yi, K1, K2] [[0.5 1.5 0. 0. ] [0.6 2.0430 0.6 0.4861] [0.7 2.4629 0.4729 0.3667] [0.8 2.7802 0.3590 0.2755] [0.9 3.0206 0.2715 0.2093] [1. 3.2048 0.2071 0.1613]] Diferencias entre Taylor y Runge-Kutta2 [ 0. -0.0030 -0.0140 -0.0248 -0.0335 -0.0400]
Algoritmo en Python
# EDO. Método de Taylor 3 términos # Runge-Kutta de 2 Orden # 2Eva_IIT2019_T2 EDO, problema de valor inicial import numpy as np # Funciones desarrolladas en clase def edo_taylor3t(d1y,d2y,x0,y0,h,muestras): tamano = muestras + 1 estimado = np.zeros(shape=(tamano,4),dtype=float) # incluye el punto [x0,y0] estimado[0] = [x0,y0,0,0] x = x0 y = y0 for i in range(1,tamano,1): estimado[i-1,2:]= [d1y(x,y),d2y(x,y)] y = y + h*d1y(x,y) + ((h**2)/2)*d2y(x,y) x = x+h estimado[i,0:2] = [x,y] return(estimado) def rungekutta2(d1y,x0,y0,h,muestras): tamano = muestras + 1 estimado = np.zeros(shape=(tamano,4),dtype=float) # incluye el punto [x0,y0] estimado[0] = [x0,y0,0,0] xi = x0 yi = y0 for i in range(1,tamano,1): K1 = h * d1y(xi,yi) K2 = h * d1y(xi+h, yi + K1) yi = yi + (K1+K2)/2 xi = xi + h estimado[i] = [xi,yi,K1,K2] return(estimado) # PROGRAMA PRUEBA # INGRESO # d1y = y', d2y = y'' d1y = lambda t,y: y/(2*t**3) d2y = lambda t,y: y/(4*t**6)-(3/2)*y/(t**4) t0 = 0.5 y0 = 1.5 h = 0.1 muestras = 5 # PROCEDIMIENTO # Edo con Taylor puntos = edo_taylor3t(d1y,d2y,t0,y0,h,muestras) ti = puntos[:,0] yi = puntos[:,1] # Runge-Kutta puntosRK2 = rungekutta2(d1y,t0,y0,h,muestras) # ti = puntosRK2[:,0] # lo mismo del anterior yiRK2 = puntosRK2[:,1] # diferencias diferencia = yi-yiRK2 # SALIDA print('estimado[ti, yi, d1yi, d2yi]') print(puntos) print('estimado[ti, yi, K1, K2]') print(puntosRK2) print('Diferencias entre Taylor y Runge-Kutta2') print(diferencia) # Gráfica import matplotlib.pyplot as plt plt.plot(ti[0],yi[0],'o', color='r', label ='[t0,y0]') plt.plot(ti[1:],yi[1:],'o', color='g', label ='y con Taylor 3 términos') plt.plot(ti[1:],yiRK2[1:],'o', color='m', label ='y Runge-Kutta 2 Orden') plt.title('EDO: Solución numérica') plt.xlabel('t') plt.ylabel('y') plt.legend() plt.grid() plt.show())
2Eva_IIT2019_T1 Canteras y urbanizaciones
2da Evaluación II Término 2019-2020. 28/Enero/2020. MATG1013
Tema 1. (20 Puntos) En el conflicto presentado entre las urbanizaciones y canteras en vía a la costa, se menciona que se ha afectado al ecosistema al disminuir la vegetación en la zona.
Una forma de observar el cambio en la zona es medir el área ocupada por cada actor.
Para la observación considere que la superficie ocupada por las urbanizaciones y canteras se describe con los siguientes datos de frontera:
xi | 55 | 85 | 195 | 305 | 390 | 780 | 1170 |
f(xi) | 752 | 825 | 886 | 1130 | 1086 | 1391 | 1219 |
xi | 55 | … | 705 | 705 | 850 | 850 | 1010 | 1170 |
f(xi) | 260 | … | 260 | 550 | 741 | 855 | 855 | 1055 |
xi | 720 | 800 | 890 | 890 | 1170 | 1220 |
g(xi) | 527 | 630 | 630 | 760 | 760 | 533 |
xi | 720 | … | 1220 |
g(xi) | 0 | … | 0 |
Nota: Observe que los tamaños de paso no son todos regulares
Usando el método del trapecio, determine:
a) El área de operación de la cantera
b) El área ocupada por la urbanización
c) ¿Se puede mejorar la precición del cálculo de las áreas, sin quitar o aumentar datos? Justifique su respuesta e indique cómo y dónde.
Rúbrica: literal a (5 puntos), literal b(5 puntos), literal c: cómo (5 puntos), dónde(5 puntos)
Referencia: Google Maps Enero 2019.
Dos bosques cercados por el crecimiento de Guayaquil. 27- Julio-2014.
https://www.eluniverso.com/noticias/2014/07/27/nota/3282036/dos-bosques-cercados-urbe-que-crece
La remediación ambiental en vía a la costa tomará giro legal. 02-Enero-2020.
https://www.expreso.ec/guayaquil/remediacion-ambiental-via-costa-tomara-giro-legal-2518.html
s2Eva_IIT2019_T1 Canteras y urbanizaciones
Ejercicio: 2Eva_IIT2019_T1 Canteras y urbanizaciones
Literal a. área de cantera
xi | 55 | 85 | 195 | 305 | 390 | 780 | 1170 |
f(xi) | 752 | 825 | 886 | 1130 | 1086 | 1391 | 1219 |
Para proceder se calculan los tamaños de paso, h, en cada intervalo:
dxi | 30 | 110 | 110 | 85 | 390 | 390 | ___ |
que tiene como resultado: Ics = 1342435.0
xi | 55 | … | 705 | 705 | 850 | 850 | 1010 | 1170 |
f(xi) | 260 | … | 260 | 550 | 741 | 855 | 855 | 1055 |
Para proceder se calculan los tamaños de paso, h, en cada intervalo:
dxi | 650 | … | 0.0 | 145 | 0.0 | 160 | 160 | ____ |
Se observa que existen rectángulos en los intervalos, por lo que se simplifica la fórmula.
Ici = (650)(260) + \frac{145}{2}(741+550) + + (160)(855) + \frac{160}{2}(1055+855)cuyo resultado es: Ici =552197.5
El área correspondiente a la cantera es:
Icantera = Ics -Ici =1342435.0 – 552197.5 = 790237.5
Literal b. área de urbanización
la frontera inferior está referenciada a la eje x con g(x)=0, por lo que solo es necesario realizar el integral para la frontera superior. El valor de la integral de la frontera inferior de la urbanización es cero.
xi | 720 | 800 | 890 | 890 | 1170 | 1220 |
g(xi) | 527 | 630 | 630 | 760 | 760 | 533 |
dxi | 80 | 90 | 0.0 | 280 | 50 | ____ |
El valor del área de la urbanización es:
Iu = Ius – Iui = 348105.0 – 0 = 348105.0
literal c
Se pude mejora la precisión para los intervalos donde el tamaño de paso es igual, sin necesidad de aumentar o quitar puntos.
Observando los tramaños de paso en cada sección se sugiere usar el método de Simpson de 1/3 donde existen dos tamaños de paso iguales y de forma consecutiva.
Cantera – frontera superior: en el intervalo xi= [85,195,305] donde h es= 110
Cantera – frontera inferior: en el intervalo xi = [850,110,1170] donde h es= 160
Algoritmo con Python
Para trapecios en todos los intervalos. Considera que si es un rectángulo, la fórmula del trapecio también funciona.
# 2Eva_IIT2019_T1 Canteras y urbanizaciones import numpy as np import matplotlib.pyplot as plt # Funciones para integrar realizadas en clase def itrapecio (xi,fi): n=len(fi) integral=0 for i in range(0,n-1,1): h = xi[i+1]-xi[i] darea = (h/2)*(fi[i]+fi[i+1]) integral = integral + darea return(integral) # INGRESO # Canteras - frontera superior xcs = [ 55., 85, 195, 305, 390, 780, 1170] ycs = [ 752., 825, 886, 1130, 1086, 1391, 1219] # Canteras - frontera inferior xci = [ 55., 705, 705, 850, 850, 1010, 1170] yci = [260., 260, 550, 741, 855, 855, 1055] # Urbanización - frontera superior xus = [720., 800, 890, 890, 1170, 1220] yus = [527., 630, 630, 760, 760, 533] # Urbanización - frontera inferior xui = [720., 1220] yui = [ 0., 0] # PROCEDIMIENTO # Area de cantera Ics = itrapecio(xcs,ycs) Ici = itrapecio(xci,yci) Icantera = Ics-Ici # Area de urbanización Iurb = itrapecio(xus,yus) # SALIDA print('Area canteras: ',Icantera) print('Area urbanización: ', Iurb) # Gráfica canteras plt.plot(xcs,ycs,color='brown') plt.plot(xci,yci,color='brown') plt.plot([xci[0],xcs[0]],[yci[0],ycs[0]],color='brown') plt.plot([xci[-1],xcs[-1]],[yci[-1],ycs[-1]],color='brown') # Gráfica urbanizaciones plt.plot(xus,yus, color='green') plt.plot(xui,yui, color='green') plt.plot([xui[0],xus[0]],[yui[0],yus[0]], color='green') plt.plot([xui[-1],xus[-1]],[yui[-1],yus[-1]], color='green') plt.show()