Ejercicio: 1Eva_IT2017_T2 Tanque esférico-volumen
a. Planteamiento del problema
Si r=1 m y V=0.75 m3,
b. Intervalo de búsqueda de raíz
El tanque vacio tiene h=0 y completamente lleno h= 2r = 2(1) = 2, por lo que el intevalo tiene como extremos:
[0,2]
Verificando que exista cambio de signo en la función:
y verificando al usar la gráfica dentro del intervalo:
Tolerancia
Se indica en el enunciado como 0.01 que es la medición mínima a observar con un flexómetro.
tolera = 0.01
c. Método de Newton-Raphson
d. Método de Punto Fijo
c. Método de Newton-Raphson
El método de Newton-Raphson requiere la derivada de la función:
Tomando como punto inicial de búsqueda el extremo izquierdo del intervalo, genera una división para cero. Por lo que se mueve un poco a la derecha, algo más cercano a la raiz, viendo la gráfica por ejemplo 0.1
x0 = 0.1
iteración 1
i =0
iteración 2
i =1
iteración 3
i =2
Observe que el tramo disminuye en cada iteración , por lo que el método converge, si se siguen haciendo las operaciones se tiene que:
[ xi, xnuevo, tramo] [[1.00000000e-01 1.30560920e+00 1.20560920e+00] [1.30560920e+00 5.06991599e-01 7.98617601e-01] [5.06991599e-01 5.40192334e-01 3.32007350e-02] [5.40192334e-01 5.39518667e-01 6.73667593e-04]] raiz 0.5395186666699257
Instrucciones en Python
para Método de Newton-Raphson
# 1Eva_IT2017_T2 Tanque esférico-volumen import numpy as np import matplotlib.pyplot as plt # INGRESO fx = lambda h: 0.75 - np.pi*(h**2)+(np.pi/3)*h**3 dfx = lambda h: -2*np.pi*h+np.pi*(h**2) # Parámetros de método a = 0 b = 2 tolera = 0.01 x0 = 0.1 iteramax = 100 # parametros de gráfica La = a Lb = b muestras = 21 # PROCEDIMIENTO # Newton-Raphson tabla = [] tramo = abs(2*tolera) xi = x0 while (tramo>=tolera): xnuevo = xi - fx(xi)/dfx(xi) tramo = abs(xnuevo-xi) tabla.append([xi,xnuevo,tramo]) xi = xnuevo tabla = np.array(tabla) # calcula para grafica hi = np.linspace(La,Lb,muestras) fi = fx(hi) gi = dfx(hi) # SALIDA print(' [ xi, xnuevo, tramo]') print(tabla) print('raiz', xnuevo) plt.plot(hi,fi) plt.plot(xi,fx(xi),'ro') plt.axhline(0, color='green') plt.xlabel('h') plt.ylabel('V') plt.title('Método Newton-Raphson') plt.show()
d. Método de Punto Fijo
Del planteamiento del problema en el literal a, se tiene que:
de donde se despeja una h:
con lo que se obtienen las expresiones a usar en el método
El punto inicial de búsqueda debe encontrarse en el intervalo, se toma el mismo valor que x0 en el método de Newton-Raphson
x0 = 0.10
Iteracion 1
Iteracion 2
Iteracion 3
con lo que se cumple el criterio de tolerancia, y se obtiene la raiz de:
raiz = 0.5390
Tabla de resultados, donde se observa que el tramo o error en cada iteración disminuye, por lo que el método converge.
[i,xi,xi+1,tramo] [[1. 0.1 0.4969553 0.3969553 ] [2. 0.4969553 0.5349116 0.03795631] [3. 0.5349116 0.53901404 0.00410243]] raiz 0.5390140355891347 >>>
Instrucciones en Python
para Método de Punto-Fijo, recordamos que el método puede diverger, por lo que se añade el parámetro iteramax
# 1Eva_IT2017_T2 Tanque esférico-volumen import numpy as np import matplotlib.pyplot as plt # INGRESO fx = lambda h: h gx = lambda h: np.sqrt(2.25/(np.pi*(3-h))) a = 0.1 b = 2 tolera = 0.01 iteramax = 100 La = a Lb = b muestras = 21 # PROCEDIMIENTO # Punto Fijo tabla = [] i = 1 # iteración b = gx(a) tramo = abs(b-a) while not(tramo<=tolera or i>=iteramax): tabla.append([i,a,b,tramo]) a = b b = gx(a) tramo = abs(b-a) i = i+1 tabla.append([i,a,b,tramo]) respuesta = b # Validar respuesta if (i>=iteramax): respuesta = np.nan tabla = np.array(tabla) # calcula para grafica hi = np.linspace(La,Lb,muestras) fi = fx(hi) gi = gx(hi) # SALIDA print(' [i, xi, xi+1, tramo]') print(tabla) print('raiz', respuesta) plt.plot(hi,fi, label = 'identidad', color='green') plt.plot(hi,gi, label = 'g(h)', color = 'orange') plt.plot(b,gx(b),'ro') plt.axhline(0, color='green') plt.xlabel('h') plt.ylabel('V') plt.title('Método Punto Fijo') plt.legend() plt.axhline(0, color='green') plt.show()
Otra forma de probar la convergencia es que |g'(x)|<1 que se observa en la una gráfica adicional, lo que limita aún más el intervalo de búsqueda.
Desarrollo en la siguiente clase.