Professional Documents
Culture Documents
Numerical Analisys Methods: Newton-Raphson and Secant.
Numerical Analisys Methods: Newton-Raphson and Secant.
Método de Newton-Raphson
Es un método que se utiliza para calcular los ceros de una función real de variable real. Aunque no sea siempre
el mejor método para un problema dado, su simplicidad formal y su rapidez de convergencia hacen que con
frecuencia, sea el primer algoritmo a considerar para esta tarea.
El método de Newton-Raphson se basa en el desarrollo de Taylor de la función cuya raíz se quiere calcular.
Consideremos la ecuación 𝑓(𝑥) = 0, y supongamos que posee una y sólo una solución 𝛼 ∈ [𝑎, 𝑏].
Suponiendo que 𝑓′(𝑥) no se anula en [𝑎, 𝑏], y que la diferencia 𝛼 − 𝑥0 es muy pequeña, el método de
Newton-Raphson consiste en despreciar el sumando en (𝛼 − 𝑥0)2 2 del desarrollo anterior, quedándonos
con la aproximación:
𝑓(𝑥0 ) + (𝛼 − 𝑥0 ) 𝑓′𝑥0 ) ≅ 0
y despejando 𝛼 resulta:
𝑓(𝑥0 )
𝛼 ≅ 𝑥0 − = 𝑥1
𝑓′(𝑥0 )
Esto constituye la base para el método de Newton, que empieza con una aproximación inicial 𝑥0 y genera la
sucesión {𝑝𝑛 }∞ 𝑛 = 0, mediante
𝑓 (𝑥𝑛−1 )
𝑥𝑛 = 𝑥𝑛−1 − , 𝑝𝑎𝑟𝑎 𝑛 ≥ 1.
𝑓 ′(𝑥𝑛−1 )
Figura 1. Al empezar con la
aproximación inicial 𝑥0 , la
aproximación 𝑥1 es la intersección
con el eje x de la recta tangente a
la gráfica de 𝑓 en (𝑥0 , f(𝑥0 )).
La aproximación 𝑥2 es la
intersección con el eje x de la recta
tangente a la gráfica 𝑓 en
(𝑥1 ,f(𝑥1 )) y así sucesivamente.
Figura 1.
Convergencia con el método de Newton
La derivación del método de Newton por medio de la serie de Taylor señala la importancia de una aproximación
precisa. La suposición crucial es que el término relacionado con (𝑝 − 𝑝0 )2 es, en comparación con |𝑝 − 𝑝0 |,
tan pequeño que se puede eliminar. Esto será falso a menos que 𝑝0 sea una buena aproximación para 𝑝. Sólo
así el método convergerá en la raíz, a excepción de algunos casos.
Teorema:
Sea 𝑓 ∈ 𝐶 2 > [𝑎, 𝑏]. Si 𝑝 ∈ (𝑎, 𝑏) es tal que 𝑓 (𝑝) = 0 y 𝑓 ′ (𝑝) ≠ 0, entonces existe una 𝛿 > 0
tal que el método de Newton genera una sucesión {𝑝𝑛 }∞ 𝑛=1 que converge a 𝑝 para cualquier
aproximación inicial 𝑝0 ∈ [𝑝 − 𝛿, 𝑝 + 𝛿].
Este teorema establece que, de acuerdo con suposiciones razonables, el método de Newton converge, siempre
que se seleccione una aproximación inicial suficientemente exacta. También implica que la constante 𝑘 que
acota la derivada de 𝑔 y, por consiguiente, indica que la velocidad de convergencia del método disminuye a 0,
conforme el procedimiento continúa. Este resultado es importante para la teoría del método de Newton, pero
casi nunca se aplica en la práctica porque no nos dice cómo determinar δ. En una aplicación práctica, se
selecciona una aproximación inicial y se generan aproximaciones sucesivas con el método de Newton. Ya sea
que éstos converjan rápidamente a la raíz o será claro que la convergencia es poco probable.
Método de la secante
Es una variante del método de Newton-Raphson en la que el cálculo de la derivada se sustituye por una
aproximación. Por definición,
𝑓(𝑥) − 𝑓(𝑝𝑛−1 )
𝑓 ′ (𝑝𝑛−1 ) = lim
𝑥 → 𝑝𝑛−1 𝑥 − 𝑝𝑛−1
Si 𝑝𝑛−2 está cerca de 𝑝𝑛−1 , entonces
𝑓(𝑝𝑛−2 ) − 𝑓(𝑝𝑛−1 ) 𝑓(𝑝𝑛−1 ) − 𝑓(𝑝𝑛−2 )
𝑓′(𝑝𝑛−1 ) ≈ =
𝑝𝑛−2 − 𝑝𝑛−1 𝑝𝑛−1 − 𝑝𝑛−2
Usando esa aproximación para 𝑓′(𝑝𝑛−1 ) en la fórmula de Newton se obtiene
𝑓(𝑝𝑛−1 )(𝑝𝑛−1 − 𝑝𝑛−2 )
𝑝𝑛 = 𝑝𝑛−1 −
𝑓(𝑝𝑛−1 ) − 𝑓(𝑝𝑛−2 )
Figura 2.
Código Fuente
function [NR] = NewtonRaphson(e,ite) function [S] = secante(e,p0,p1,ite)
i = i + 1; elseif e == 2
p0 = p; while i <= ite
end q0 = p0^7 - p0^2 - 3*p0 - 1;
q1 = p1^7 - p1^2 - 3*p1 - 1;
elseif e == 2
fx = x^7 - x^2 - 3*x - 1; p = p1 - ((q1*(p0 - p1))/(q0 - q1));
S(i,1) = p;
while i <= ite
fp0=subs(fx,p0); if (abs(p - p1)) < tol
z=diff(fx); return
dp0=subs(z,p0); end
p = p0 - (fp0 / dp0); i = i + 1;
p0 = p1;
NR(i,1) = p; p1 = p;
if abs(p - p0) < tol end
return; end
end
i = i + 1; N=zeros(15,3);
p0 = p;
end e = input('\nNúmero de ejercicio: ');
end
end p0 = input('\nPunto inicial: ');
p1 = input('\nPunto final: ');
ite = 15;
N(:,3)=secante(e,p0,p1,ite);
N(:,2)=NewtonRaphson(e,ite);
N(:,1) = 1:1:ite;
T=array2table(N,'VariableNames',{'iteraciones','New
ton-Raphson','Secante'});
disp(T);
Ejecución del Código