Laboratorio #2
Métodos Numéricos
Búsqueda de Raíces y solución de sistemas de ecuaciones
Método de Newton Raphson:
Es un método utilizado para encontrar raíces que usa la aproximación en Serie de Taylor a primer orden en un valor
inicial aproximado de la raíz. El método no siempre converge, eso depende de la forma de la función, la cual debe ser
suave.
f (x i )
x i+1=x i + '
f ( x i)
Donde x i es la aproximación anterior en el ciclo iterativo. Por lo tanto, el método puede no divergir.
Figura 1. Método de Newton Raphson (convergente, se ilustran dos iteraciones).
Método de Punto Fijo:
Es un método de búsqueda de raíces en el que se toma a la ecuación f ( x )=0 y se rescribe de forma g ( x )=x . El
criterio de convergencia exige que la derivada de la función g(x ) tenga un valor menor a la unidad. Esto, debido a que
el error es proporcional al cuadrado de la derivada de la función g(x ).
x i+1=g (xi )
Este método no convergerá cuando |g' ( x )<1|
Figura 2. diferentes formas en que se comporta el método de punto fijo.
ACTIVIDADES
1. Utilice el siguiente código, que utiliza el método de Newton Raphson para encontrar una raíz de
−x
f ( x )=e −ln ( x )
function y=f(x) // Esta función define la función original
y=exp(-x)-log(x);
endfunction
function y=df(x) // Esta función define la derivada de la función original.
y=-exp(-x)-1/x; //Calcula la derivada en un punto dado
endfunction
function x=newtonraphson(x0, tol); // Esta función implementa el método de Newton-Raphson para encontrar
la raíz de la función. Utiliza una aproximación inicial (x0) y una tolerancia (tol) como parámetros de entrada.
Itera hasta que el error relativo sea menor que la tolerancia.
i=1;
ea(1)=100;
x(1)=x0;
while abs(ea(i))>=tol; // Este bucle se ejecuta mientras el error absoluto sea mayor o igual que la tolerancia
especificada.
x(i+1)=x(i)-f(x(i))/df(x(i)); // Actualiza la nueva aproximación usando el método de Newton-Raphson.
ea(i+1)=abs((x(i+1)-x(i))/x(i+1)*100); // Calcula el error absoluto relativo en cada iteración.
i=i+1;
end
printf(' i \t X(i) Error aprox (i) \n');
for j=1:i; // Bucle que imprime los valores de (x) y el error en cada iteración.
printf('%2d \t %11.7f \t %7.3f \n',j-1,x(j),ea(j));
end
endfunction
Explique qué realiza cada línea del código mostrado.
Use el programa para encontrar la solución para un valor inicial de x 0=2.
Ilustre gráficamente cómo el método se aproxima a la solución.
Use el método para encontrar las raíces de y=e−x −sin ( x )−0.05 x . Grafique para saber cuántas raíces
puede encontrar y con qué valores iniciales.
2. Realice un código por el método de punto fijo para encontrar la raíz. Guíese del código que usa NR y
modifíquelo a conveniencia.
Encuentre la solución de las siguientes ecuaciones:
a) x 3−x +1=0
b) e x =sin x
c) ln ( 1+ x )=x 3
d) e x =4 x 3
Asegúrese de que el método converja en cada caso, de no ser así, encuentre la forma adecuada de g(x ).
Encuentre la solución de x 2−x−2=0 utilizando las siguientes propuestas:
Donde a es una constante no nula. ¿cuál de las iteraciones va a converger a los dos ceros? En el cuarto
problema, varíe el valor de a e indique qué implica en la convergencia. EXPLORE.