Está en la página 1de 13

Métodos numéricos

Francisco Madrid Moreno - Javi Muñoz Hernández - Jacobo Sureda Sánchez - Carlos Espinosa Vergara - Guille Castaño López
Descripción del método iterativo de Newton-Raphson

El método de Newton-Raphson es un procedimiento algorítmico que permite hallar raíces


de funciones, es un método abierto e iterativo que suele converger rápidamente y es muy
útil para calcular raíces cuadradas y raíces cuadradas de orden superior, aunque el método
tiene desventajas en algunos casos, por ejemplo, si hay múltiples raíces, en este caso habría
que aplicar diferentes soluciones para encontrar la raíz sin abandonar el método.

Se sabe por el teorema de Taylor que para un Xo ∈ (a, b) tal que su derivada es distinta de
cero, y si se cumple que tanto la función como la derivada son continuas en el intervalo
(a,b), entonces buscamos el punto donde f(X1) sea igual a 0 y por lo tanto podremos
concluir de forma general que:
También podemos realizar un análisis geométrico del método
Newton-Raphson como se muestra en la siguiente gráfica:
¿Cabe esperar que el método funcione para todas las funciones?

A pesar de que en general el método Newton-Raphson funcione, existen tres


casos en los que esto no se cumple, uno de ellos surge en las raíces simples,
por ejemplo, en la siguiente función:

Si aplicamos este método, podemos observar que, aunque sí converge el


método a la raíz 1, esta lo hace de manera muy lenta y n sería igual a
infinito, x=1.000.
Otro caso donde este método es nulo es en una pendiente 0 donde la
derivada es igual a 0, esto causaría dentro de la fórmula de Newton-
Raphson una división entre 0, algo que no podemos operar. Como es
en el caso de la función:

La derivada de esta función nos daría 0 por lo que fallaría el método.


Además, en las raíces múltiples, se hace referencia a un punto donde
una función es tangencial al eje x. Una raíz es doble porque un valor de x
hace que dos términos de la ecuación sean 0, gráficamente, la curva toca
en forma tangencial al eje x y en una triple ocurriría lo mismo, pero para
tres, esto haría que el método perdiera su convergencia cuadrática y
fuese lineal de constante asintótica de convergencia 1-1/m, siendo m la
multiplicidad de la raíz.

Las raíces múltiples hacen que no solo ƒ′(x), sino también ƒ′(x) se
aproxime a 0 en la raíz, lo que provocaría una división entre 0. Existe
una forma simple de evitar este problema, fue propuesta por Ralston y
Rabinowitz en 1978, se basa en que ƒ(x) alcance un valor 0 antes que
ƒ′(x). De esta manera, los cálculos se pueden terminar antes de que ƒ′(x)
llegue a 0.
Condiciones ideales

Por lo que las condiciones ideales para que el método funcionase


de manera satisfactoria serán aquellas en las que la derivada de
la función no de 0, de esa manera no tendríamos en el
denominador un 0 y sí podríamos dividir.
#include<stdio.h>
#include<conio.h> int funcion_ (float x0, float funcion[], float derivada[], float grado){
#include<stdlib.h>
#include<math.h>
#define POLINOMIO 100 float raiz, triang, x1, f, d, s;
int i;
int funcion_ (float x0, float funcion[], float derivada[], float grado);

int main (){ for(i=0, f=0; i<grado; i++){


f= funcion[i]*x0 + f;
float x0, funcion[POLINOMIO], derivada[POLINOMIO], raiz, triang, x1, f, d, s;
int grado, i, g;
}
char j; if (f==0)
raiz= x0;
do{
printf("\nIntroduzca el grado del polinomio deseado: ");
scanf("%d", &grado); else
for(i=0, d=0; i<grado-1; i++){
for (i=0, g=grado; i<=grado+1; i++, g--){
if (i==grado) d= derivada[i]*x0 + d;
printf("\nIntroduzca la %d%c 'x' del polinomio deseado (x): ", i+1, 248); }
else if (i>grado)
printf("\nIntroduzca el termino independiente del polinomio deseado: ");
else if (d==0)
printf("\nIntroduzca la %d%c 'x' del polinomio deseado (x^%d): ", i+1, 248, g); printf("\nError");
scanf("%f", &funcion[i]);
} raiz= 0;
for (i=0, g=grado; i<=grado; i++, g--){ if (d!=0)
if (i==grado-1)
printf("\nIntroduzca la %d%c 'x' de la derivada de f(x) (x): ", i+1, 248); triang= f/d;
else if (i==grado) x1= x0 - triang;
printf("\nIntroduzca el termino independiente del polinomio deseado: ");
else
printf("\nIntroduzca la %d%c 'x' de la derivada de f(x) (x^%d): ", i+1, 248, (g-1)-i); for(i=0, s=0; i<grado; i++){
scanf("%f", &derivada[i]); s= derivada[i]*x1 + s;
}
}
printf("\nIntroduzca la x0: ");
scanf("%f", &x0); if (s==0)
raiz= funcion_ (x0, funcion, derivada, grado); raiz= x1;
printf("\nLa raiz es: %f", raiz);

printf("\nPulse la tecla 'r' para repetir y cualquier otra para terminar: ");
else
j= getche(); printf("\nError");
raiz=0;
}while (j== 'r');
return raiz;
}
return 0;
}
CONCLUSIONES

El método de Newton es muy eficiente y rápido a la hora de encontrar raíces


de una ecuación ya que presenta convergencia cuadrática, pero existen
algunas excepciones en las cuales el comportamiento de la convergencia es
totalmente diferente al cuadrático, esto sin tener en consideración algunos
casos ya mencionados en los cuales el método necesita un análisis especial.
Ahora bien el problema de la convergencia del método ocurre cuando la
ecuación tiene múltiples raíces y el procedimiento a seguir es modificar el
algoritmo aplicando una nueva fórmula, garantizando así la eficacia y
capacidad del método.
• [1] Tjalling J. Ypma, Historical
development of the Newton-Raphson
method, SIAM Review 37 (4), 531–551,
1995.

• [2] Chapra, S. and Canale, R. (2007).


BIBLIOGRAFIA Métodos numéricos para ingenieros (5a. ed.).
Distrito Federal: McGraw-Hill
Interamericana.

• [3] Burden, R., Faires, D. and Burden, A.


(2017). Análisis numérico (10a. ed.). Distrito
Federal: CENGAGE Learning

También podría gustarte