Método Punto Fijo: Calcular profundidad de un tanque

Método Newton-Raphson: Calcular constante de nacimientos.

PROBLEMA: Para determinar la constante de nacimientos de una población se necesita calcular l en la siguiente ecuación:
$$1.546\times { 10 }^{ 6 }={ 10 }^{ 6 }{ e }^{ \lambda  }+\frac { 0.435\times { 10 }^{ 6 } }{ \lambda  } \left( { e }^{ \lambda  }-1 \right)$$
Use el método de Newton-Raphson para determinar l con una aproximación de 10-8.

(Ejercicio 2.50, tomado del libro Métodos Numéricos Aplicados a la Ingeniería. 2ed. De Antonio Nieves y Federico C. Domínguez. Editorial CECSA. México 2006. Página 127.)

SOLUCIÓN
Análisis de la situación

En primer lugar, por comodidad cambiare a l por x. 

Podemos notar que en la ecuación dada cada termino posee un factor de 106, esto nos permite poderla dividir en 106 a ambos lados de la igualdad, con lo cual se obtiene una ecuación equivalente, es decir
$$1.546={ e }^{ x }+\frac { 0.435 }{ x } \left( { e }^{ x }-1 \right)$$
Para determinar la constante de natalidad usando el método de Newton-Raphson necesitamos tener una función de una variable, esto indica que necesitamos crear una función a partir de nuestra ecuación equivalente, una forma de hacerlo sería pasar la información del lado derecho de la ecuación al lado izquierdo así
$$1.546-{ e }^{ x }-\frac { 0.435 }{ x } \left( { e }^{ x }-1 \right)=0$$
De donde f(x) sería
$$f(x)=1.546-{ e }^{ x }-\frac { 0.435 }{ x } \left( { e }^{ x }-1 \right)$$
Listo ya tenemos la función.

Hablemos ahora un poco de la constante que queremos determinar.

Esta constante debe satisfacer nuestra ecuación equivalente, es decir, se debe cumplir la igualdad
$$1.546={ e }^{ x }+\frac { 0.435 }{ x } \left( { e }^{ x }-1 \right)$$
Dicho de otro modo, si la evaluamos en f(x) debería resultar cero. Por lo tanto, si graficáramos a f(x), los valores para la constate de nacimientos serian todos aquellos que sean interpectos con el eje horizontal.

Ahora sí, ya tenemos la función que usaremos en la aplicación del método de Newton-Raphson.

  
Aplicación del Método de Newton-Raphson

Para aplicar el método de Newton-Raphson es necesario que tengamos a la mano la función y un valor inicial. La función la tenemos y ¿el valor inicial?

Una forma de obtener el valor inicial seria apoyándonos en la gráfica de f(x). Veamos la gráfica de f(x):


Gráfica 1

Al observar la Grafica1 vemos que hay un intercepto con el eje horizontal en el intervalo de [0,0.5]. Por lo tanto, un valor inicial podría ser 0.1.

El código en Matlab que usaremos para determinar la constante de nacimientos será:

fun=input('Ingrese funcion: ','s');
syms x;
f=inline(fun);
df=inline(diff(sym(fun)));
xi=input('Ingrese valor inicial: ');
e=input('Ingrese porcentaje de error: ');

xa=xi-(f(xi)/df(xi));
ea=abs((xa-xi)/xa)*100;

while(ea>e)
    xi=xa;
    xa=xi-(f(xi)/df(xi));
    ea=abs((xa-xi)/xa)*100;   
end
fprintf('La raiz aproximada es: %12.10f\n',xa);

El cual he llamado NewtonRaphson.m.

Bueno, ya tenemos todo lo que necesitamos para determinar la constante de nacimientos.
Ejecutemos el código e ingresemos la información pedida:

>> NewtonRaphson
Ingrese funcion: 1.546-exp(x)-(0.435/x)*(exp(x)-1)
Ingrese valor inicial: 0.1
Ingrese porcentaje de error: 10^(-8)
La raiz aproximada es: 0.0874690247

Por lo tanto, la constante de nacimientos es 0.0874690247.

Para todos los amantes de Python, dejare a continuación el código del Método de Newton-Raphson escrito en este lenguaje:

from sympy import *

fun = input('Ingrese la funcion f(x): ')
x0 = float(input('Ingrese el valor inicial: '))
tol = float(input('Ingrese la tolerancia: '))

x=Symbol('x')
fx = sympify(fun)
df = diff(fx,x)
newRoot = lambda x:x-fx.subs('x',x)/df.subs('x',x)

f = lambda x:fx.subs('x',x)

x1 = newRoot(x0)
e = abs((x1-x0)/x1)*100

while tol<e:
    if(f(x1)==0):
        e = 0
    else:
        x0 = x1
        x1 = newRoot(x0)
        e = abs((x1-x0)/x1)*100

print('La raiz aproximada es: ',x1)

Bien, hemos llegado al final de esta entrada, espero les sirva de ayuda a todos los interesados en el Método de Newton-Raphson. 

Comentarios

  1. disculpa, como se logra graficar la ecuación, es decir, como despejas la original para hacerla función?

    ResponderEliminar

Publicar un comentario