En aras de la notación, supongamos que (es decir, que es una función vectorial que toma un vector como entrada y salida a un vector del mismo tamaño). Hay dos preocupaciones: coste computacional y la precisión numérica.F: Rnorte→ Rnorte
Calculando la derivada (la matriz jacobiana, J ( x ) , o ( ∇ f ( x ) ) T , o lo que se prefiere) usando diferencias finitas va a requerir n evaluaciones de la función. Si pudiera calcular la derivada usando la aritmética de coma flotante directamente desde la definición, tendría que calcular el cociente de diferenciaD f(x )J( x )( ∇ f( x ) )Tnorte
D f( x ) eyo= limvarepsilon → 0F( x + ε eyo) - f( x )ε
para cada , suponiendo que no hace ningún tipo de "finito inteligente diferenciación" (como Curtis-Powell-Reid), porque usted sabe (o puede detectar) el patrón de escasez de D f . Si n es grande, que podría ser una gran cantidad de evaluaciones de la función. Si tiene una expresión analítica para D f , entonces calcularla podría ser más barato. Automático (también conocido como algorítmico) métodos de diferenciación también se puede utilizar en algunos casos para calcular D f en aproximadamente 3 a 5 veces el coste de una evaluación de la función.i = 1 , ... , nD fnorteD fre f
También hay preocupaciones numéricas. Obviamente, en una computadora, no podemos tomar el límite de un escalar a medida que va a cero, por lo que cuando aproximamos , realmente estamos eligiendo ε para que sea "pequeño" y calculandore fε
re f( x ) eyo≈ f( x + ε eyo) - f(x )ε,
donde significa que es una aproximación, y esperamos que sea una muy buena aproximación. Calcular esta aproximación en aritmética de coma flotante es difícil porque si elige ε demasiado grande, su aproximación podría ser mala, pero si elige ε demasiado pequeña, podría haber un error de redondeo significativo. Estos efectos se tratan en el artículo de Wikipedia sobre la diferenciación numérica en detalle superficial; más referencias detalladas se pueden encontrar dentro del artículo.≈εε
Si el error en el Jacobiano matriz no es demasiado grande, iteraciones de Newton-Raphson se convergen. Para un análisis teórico detallado, véase el capítulo 25 de precisión y estabilidad de Numerical Algoritmos por Nick Higham , o el artículo de Françoise Tisseur sobre la que se basa.re f
Las bibliotecas suelen tener cuidado de estos detalles algorítmicos para usted, y por lo general, las implementaciones de la biblioteca del algoritmo de Newton-Raphson (o sus variantes) convergerán bastante bien, pero de vez en cuando, no será un problema que causa algunos problemas debido a los inconvenientes encima. En el caso escalar , que haría uso de método de Brent , debido a su robustez y buena velocidad de convergencia en la práctica.( n = 1 )