Ejercicio: 1Eva2019TII_T4 Concentración de químico
formula a usar:
C = C_{ent} ( 1 - e^{-0.04t})+C_{0} e^{-0.03t}Se sustituyen los valores dados con:
C0 = 4, Cent = 10, C = 0.93 Cent.
igualando a cero para forma estandarizada del algoritmo,
10( 1 - e^{-0.04t}) + 4 e^{-0.03t} - 9.3 = 0 0.7 - 10 e^{-0.04t} + 4 e^{-0.03t} = 0se usas las funciones f(t) y f'(t) para el método de Newton-Raphson,
f(t) = 0.7 - 10 e^{-0.04t} + 4 e^{-0.03t} f'(t) = - 10(-0.04) e^{-0.04t} + 4(-0.03) e^{-0.03t} f'(t) = 0.4 e^{-0.04t} - 0.12 e^{-0.03t}con lo que se pueden realizar los cálculos de forma iterativa.
t_{i+1} = t_i -\frac{f(t_i)}{f'(t_i)}De no disponer de la gráfica de f(t), y se desconoce el valor inicial para t0 se usa 0. Como no se indica la tolerancia, se estima en 10-4
Iteración 1
t0 = 0
f(0) = 0.7 - 10 e^{-0.04(0)} + 4 e^{-0.03(0)} = 5.3 f'(0) = 0.4 e^{-0.04(0)} - 0.12 e^{-0.03(0)} = -0.28 t_{1} = 0 -\frac{5.3}{-0.28} = 18.92 error = |18.92-0| = 18.92Iteración 2
f(18.92) = 0.7 - 10 e^{-0.04(18.92)} + 4 e^{-0.03(18.92)} = -1.72308 f'(18.92) = 0.4 e^{-0.04(18.92)} - 0.12 e^{-0.03(18.92)} = 0.119593 t_{2} = 18.92 -\frac{-1.723087}{0.119593} = 33.3365 error = |33.3365 - 18.92| = 14.4079Iteración 3
f(33.3365) = 0.7 - 10 e^{-0.04(33.3365)} + 4 e^{-0.03(33.3365)} = -0.4642 f'(33.3365) = 0.4 e^{-0.04(33.3365)} - 0.12 e^{-0.03(33.3365)} = 0.06128 t_{3} = 33.3365 -\frac{-0.46427}{-5.8013} = 40.912 error = |40.912 - 33.3365| = 7.5755Observando que los errores disminuyen entre cada iteración, se encuentra que el método converge.
y se forma la siguiente tabla:
['xi' , 'xnuevo', 'error']
[ 0. 18.9286 18.9286]
[18.9286 33.3365 14.4079]
[33.3365 40.912 7.5755]
[40.912 42.654 1.742]
[42.654 42.7316 0.0776]
[4.2732e+01 4.2732e+01 1.4632e-04]
raiz en: 42.731721341402796
Observando la gráfica de la función puede observar el resultado:

Algoritmo en Python
# 1Eva_IIT2019_T4
# Método de Newton-Raphson
import numpy as np
import matplotlib.pyplot as plt
# INGRESO
fx = lambda t: 0.7-10*np.exp(-0.04*t)+4*np.exp(-0.03*t)
dfx = lambda t:0.40*np.exp(-0.04*t)-0.12*np.exp(-0.03*t)
x0 = 0
tolera = 0.001
a = 0
b = 60
muestras = 21
# PROCEDIMIENTO
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)
n=len(tabla)
# para la gráfica
xk = np.linspace(a,b,muestras)
fk = fx(xk)
# SALIDA
print(['xi', 'xnuevo', 'error'])
np.set_printoptions(precision = 4)
for i in range(0,n,1):
print(tabla[i])
print('raiz en: ', xi)
# grafica
plt.plot(xk,fk)
plt.axhline(0, color='black')
plt.xlabel('t')
plt.ylabel('f(t)')
plt.show()