Método de Newton-Raphson para
sistemas de ecuaciones no lineales

Supongamos que el sistema f(x) = 0 tiene una solución s, donde f = ((((Subscript[f, 1]), (Subscript[f, 2]), ..., (Subscript[f, n])))^T) y x = ((((Subscript[x, 1]), (Subscript[x, 2]), ..., (Subscript[x, n])))^T), y que f es suficientemente derivable. Sea (Subscript[x, k]) una aproximación de s. Considerando el desarrollo de Taylor de f  alrededor de (Subscript[x, k]), tenemos que

f(x) = f((Subscript[x, k]))+\(TraditionalForm
      \`\(\(J\_f\)(x\_k)\) \((x - x\_k)\) + 
        O( ∥ x - x\_k\( ∥ \^2\))\),

donde (Subscript[J, f])((Subscript[x, k])) denota la matriz jacobiana de f en (Subscript[x, k]). Recordemos que la matriz jacobinana de f en un punto p está definida de la siguiente manera:

(Subscript[J, f])(p)=(({{∂ ((Subscript[f, 1])/∂) (Subscript[x, 1]) (p), ..., ∂ ((Subscript[f, 1])/∂) (Subscript[x, n]) (p)}, {..., ..., ...}, {∂ ((Subscript[f, n])/∂) (Subscript[x, 1]) (p), ..., ∂ ((Subscript[f, n])/∂) (Subscript[x, n]) (p)}})).

Si tomamos x = s, entonces

\(TraditionalForm
      \`0 ≃ f(x\_k) + \(\(J\_f\)(x\_k)\) \((s - x\_k)\)\).

A partir de este resultado podemos proner calcular la iteración k + 1-ésima como

(Subscript[x, k + 1]) = (Subscript[x, k]) + (Subscript[s, k])

con

 (Subscript[J, f])((Subscript[x, k])) (Subscript[s, k]) = -f((Subscript[x, k])).
 
 Calculado (Subscript[s, k]), llegamos al siguiente procedimiento iterativo:
 
 \(TraditionalForm
      \`x\_\(k + 1\) = x\_k - \(\(\(J\_f\)(x\_k)\)\^\(-1\)\) \(f(x\_k)\)\).
 
 Se trata del método del Newton-Raphson.
 
 Se supone implícitamente que la matriz jacobiana es regular en cada (Subscript[x, k]).\(TraditionalForm\`
\)

Se tiene el siguiente resultado de convergencia:

Supongamos que f(s) = 0, que en algún entorno abierto de s, donde f está definida y es continua, todas las derivadas parciales segundas de f está definidas y son continuas, y que la matriz jacobiana (Subscript[J, f])(s) de f en s es no singular. Entonces, la sucesión ((Subscript[x, k])) definida por el método de Newton-Raphson converge a la solución s  supuesto que se parte de (Subscript[x, 0]) suficientemente próximo a s. Además, la convergencia es al menos cuadrática.

Un primer ejemplo

Apliquemos el método al siguiente ejemplo:

calcular aproximadamente la raíz del sistema de ecuaciones lineales

		  (((x^2) + (y^2))/2) - x + (7/24) = 0,
x y - y +(1/9) = 0,
contenida en el intervalo  [0, 0.4]×[0, 0.4], iterando cinco veces el Método de Newton-Raphson, partiendo del punto (0, 0).

Comenzamos relizando la entrada de la función.

Clear["Global`*"]

\(\(
f[x_] := {
        1\/2\ \((
              x[[1]]\^2 - 
                x[[2]]\^2)\) - 
          x[[1]] + 7\/24, 
        x[[1]]\ 
            x[[2]] - 
          x[[2]] + 1\/9}\)\)

En primer lugar definimos el número de iteraciones deseado y la aproximación inicial.

\(niter = 5; 
a[0] = {0, 0}; \)

A continuación, realizamos de manera simbólica el cálculo de la matriz jacobiana de f en un punto cualquiera x:

j[x_]
         := {{(∂_r) f[{r, s}][[1
                ]], 
            (∂_s) f[{r, s}][[1
                ]]}, 
          
              {
            (∂_r) f[{r, s}][[2
                ]], 
            (∂_s) f[{r, s}][[2
                ]]}} /. 
        
                {
          r -> x[[1]], 
          s -> x[[2]]}

Seguidamente aplicamos el método de Newton-Raphson considerando como criterios de parada el número de iteraciones fijado o bien que la diferencia entre dos aproximaciones sucesivas sea menor que una valor de tolerancia dado:

\(tolerancia = 10^\((\(-10\))\); 
iter = 1; 

    For[i = 1, i ≤ niter, \(i++\), 
      
\ \ \ \ \ \ \ 
      If[\@\(f[a[i - 1]].f[a[i - 1]]\) < tolerancia, Break[]]; 
      
\ \ \ \ \ \ \ 
      u[i] = LinearSolve[j[a[i - 1]], \(-f[a[i - 1]]\)]; 
      
\ \ \ \ \ \ \ a[i] = a[i - 1] + u[i]; iter = i]\)

En la variable iter ha quedado almacenado el número real de iteracionres realizadas ya que, en el caso de que haya finalizado el algoritmo por haberse verificado el criterio de tolerancia, éste es menor que el número de iteraciones fijado inicialmente. A continuación se muestran las aproximaciones obtenidas en las iteraciones efectuadas.

Print["Número de iteraciones realizadas:  ",  iter]TableForm[
      Transpose[
        
Table[
          SetPrecision[a[i][[j]], 
            10], {j, 1, 2}, 
          
           {i, 0, iter}]]]

La solución dada por FindRoot es

s = 
      SetPrecision[FindRoot[f[{x, y}] == {0., 0.}, {x, 0.}, {y, 0.}], 
        10]

sol = {x /. s[[ 1  ]], y /. s[[ 2  ]]}

Por último, los errores cometidos en cada una de las interaciones relizadas del método de Newton, respecto de la solución dada por FindRoot, son  los siguientes:

TableForm[
      Table[SetPrecision[(Sqrt[(a[i] - sol).(a[i] - sol)]), 10], {i, 0, 
          iter}]]

Ejercicios

1.-  Consideremos el sistema de ecuaciones no lineales
		4 ((x )^2) +  (y^2)  -  4 =  0, 
      
x  +  y  -  sen(x - y)  =  0, 
del que se sabe que tiene una raíz próxima al punto (1, 0). Aplique 10 iteraciones del método de Newton-Raphson partiendo de ese punto para obtener una aproximación de la misma.

2.- Considere el sistema de ecuaciones
		((x )^2) +  x (y^3)  =  9, 
      
3 (x^2) y  -  (y^3)  =  4.
Parta de los puntos (1, 2) y (-2, 2.5) para obtener aproximaciones de raíces del mismo mediante el método de Newton-Raphson.