Definición

El método de Newton (conocido también como el método de Newton-Raphson o el método de Newton-Fourier) es un algoritmo basado en la derivada que permite encontrar aproximaciones de los ceros o raíces de una función real derivable, o inclusive aproximar valores como \(\sqrt{3}\), \(\sqrt[4]{3}\), \(\sqrt[5]{247}\), \(\pi\) encontrando de manera aproximada las raíces de las ecuaciones \(x^2-3=0\), \(x^4-3=0\), \(x^5-247=0\), \(cos(x)+1=0\) respectivamente.

Formalmente

Sea \(f\) una función derivable definida en un intervalo real \([a,b]\) y sea \(f(r)=0\), es decir, sea \(r\) una raiz real de \(f\). Si \(x_n\) es una aproximación a \(r\), entonces la siguiente aproximación \(x_{n+1}\) esta dada por:

\[x_{n+1} = x_n-\frac{f(x_n)}{f'(x_n)}, \quad f'(x_n)\neq0\]

Motivación

Aunque existen fórmulas para hallar las raíces de ecuaciones de tercer y cuarto grado, dichas formulas son muy complicadas y nada prácticas.

A esto se le suma el Teorema de Abel-Ruffini, el cual enuncia que no es posible escontrar soluciones de la ecuación general \[ a_nx^n + a_{n-1}x^{n-1} +\dots+ a_{1}x + a_0 = 0 \] de grado superior o igual a cinco, aplicando únicamente un número finito de sumas, restas, multiplicaciones, divisiones y extracción de raíces a los coeficientes de la ecuación. Esto significa que, en general, sólo se pueden hallar aproximaciones para los ceros de funciones de grado mayor que cuatro aplicando métodos numéricos.

Descripción del método

Sea \(f: [a,b] \rightarrow \mathbb{R}\) una función derivable

  1. Se elige \(x_0\) en el eje de las x, asumiendo que está cerca de la solución de \(f(x)=0\) (raíz buscada).

  2. Calculamos la ecuación punto pendiente de la recta tangente a la función en \((x_0, f(x_0))\), a saber \(y-f(x_0) = f'(x_0)(x-x_0)\) \((1)\) .

  3. Esta recta debe intersecar al eje de las x, en un punto más cercano a la raíz buscada; en el punto \((x_1,0)\).

  4. El punto \((x_1,0)\) satisface la ecuación \((1)\) y sustituyendo, queda: \[0-f(x_0) = f'(x_0)(x-x_0)\quad(2)\]

  5. Si \(f'(x_0) \neq 0\), entonces despejando \(x_1\) en \((2)\) se obtiene \[x_1 = x_0-\frac{f(x_0)}{f'(x_0)}\].

  6. Repetimos el procedimiento anterior para \(x_0\), pero ahora comenzando con \(x_1\), en cuyo caso se obtiene \(x_2 = x_1-\frac{f(x_1)}{f'(x_1)}\). De forma que \(x_2\) está más cerca de la raíz buscada que \(x_1\).

  7. Iterando cada vez con el número obtenido, se construye una secuencia: \(x_0, x_1, x-2,\dots, x_n,\dots\) de números cada vez más próximos a la raíz, tales que:

\[x_{n+1} = x_n-\frac{f(x_n)}{f'(x_n)} \quad(3)\] En resumen y de forma menos teórica el procedimiento es el siguiente:

  1. Observando la gráfica de la función se estima un valor adecado para la primera aproximación \(x_1\).

  2. Sustituyendo la primera aproximación en (3), se obtiene una segunda aproximación \(x_2\). Luego se calcula \(x_3\) sustituyendo en (3) la segunda aproximación \(x_2\); y así sucesivamente hasta que se llegue a la igualdad \(x_{n+1} =x_n\)

Ejemplo

Veamos cual es la apróximación para el \(x^3-4x^4-2\) por el método de Newton.

Solución:

Sea \(f(x) = x^3-4x^2-2\), luego \(f'(x) = 3x^2-8x\).

Fijandose en la gráfica se decide que el punto inicial \(x_0\) sea 4.

Luego, el método nos dice que

Primera iteración

\[ x_1 = x_0-\frac{x_0^3-4x_0^2-2}{3x_0^2-8x_0} = 4-\frac{(4)^3-4(4)^2-2}{3(4)^2-8(4)} = 4 - \frac{2}{16} = 4.125\] Segunda iteración

\[ x_2 = x_1-\frac{x_1^3-4x_1^2-2}{3x_1^2-8x_1} = 4.125 -\frac{(4.125)^3-4(4.125)^2-2}{3(4.125)^2-8(4.125)} = 4.125 - \frac{0.1279}{18.0469} = 4.117965 \approx 4.118\]

Tercera iteración

\[ x_3 = x_2-\frac{x_2^3-4x_2^2-2}{3x_2^2-8x_2} = 4.118 -\frac{(4.118)^3-4(4.118)^2-2}{3(4.118)^2-8(4.118)} = 4.118 - \frac{0.001}{17.9298} = 4.1179\] Cuarta iteración

\[ x_4 = x_3-\frac{x_3^3-4x_3^2-2}{3x_3^2-8x_3} = 4.1179 -\frac{(4.1179)^3-4(4.1179)^2-2}{3(4.1179)^2-8(4.1179)} = 4.1179 - \frac{0.0008}{17.9281} = 4.1179\] Como \(x_4 = x_3\) se dice entonces que se encontró la raíz, es decir 4.1179.

Código en R

El código para el ejemplo anterior sería.

expresion <- expression (x^3 - 4*x^2 -2) # escribimos el polinomio
derivada <- D(expresion, "x") # Derivada del polinomio
 
x <- 0  # Cualquier valor diferente de aprox
aprox <- 4 # valor puntoinicial

while ( x != aprox) {
  
  x <- aprox # Se le asigna el valor aproximado a x.

reemplazoexpresion <- eval(expresion) #Reemplaza el valor de x en "expresión"

reemplazoderiv <- eval(derivada) #Reemplaza el valor de x en "derivada"

#newton

aprox <- x - (reemplazoexpresion/reemplazoderiv) #Ecuación método de Newton

print(x)
}
## [1] 4
## [1] 4.125
## [1] 4.117965
## [1] 4.117942
## [1] 4.117942
## Grafica
expresiong <- function(x)(x^3 - 4*x^2 -2)
curve(expresiong,-1,5,101, ylim = c(-12,4))
abline(0,0,col="green")

Bibliografia