Articulo de referencia

Método de Muller

El método de Muller es un algoritmo para encontrar raíces , un método numérico para resolver ecuaciones de la forma f ( x ) = 0. Fue presentado por primera vez por David E. Mull...

El método de Muller es un algoritmo para encontrar raíces , un método numérico para resolver ecuaciones de la forma f ( x ) = 0. Fue presentado por primera vez por David E. Muller en 1956.

Animación que ilustra el método de Muller aplicado a la función f(x) = cos(x) − x . En cada iteración, se construye una parábola que interpola tres puntos, y una de sus raíces se utiliza para generar la siguiente aproximación.

El método de Muller procede según una relación de recurrencia de tercer orden similar a la relación de recurrencia de segundo orden del método de la secante . Mientras que el método de la secante procede construyendo una línea que pasa por dos puntos en la gráfica de f correspondientes a las dos últimas aproximaciones iterativas y luego usa la raíz de la línea como la siguiente aproximación en cada iteración, por el contrario, el método de Muller usa tres puntos correspondientes a las tres últimas aproximaciones iterativas, construye una parábola que pasa por estos tres puntos y luego usa una raíz de la parábola como la siguiente aproximación en cada iteración.

Derivación

El método de Muller utiliza tres aproximaciones iniciales de la raíz,incógnita0,incógnita1{\displaystyle x_{0},x_{1}}yincógnita2{\displaystyle x_{2}}y determina la siguiente aproximaciónincógnita3{\displaystyle x_{3}}al considerar la intersección del eje x con la parábola a través de(incógnita0,F(incógnita0)){\displaystyle (x_{0},f(x_{0}))},(incógnita1,F(incógnita1)){\displaystyle (x_{1},f(x_{1}))}y(incógnita2,F(incógnita2)){\displaystyle (x_{2},f(x_{2}))}.

Consideremos el polinomio cuadrático PAG(incógnita)=a(incógnitaincógnita2)2+b(incógnitaincógnita2)+do,{\displaystyle P(x)=a(x-x_{2})^{2}+b(x-x_{2})+c,}

que pasa por(incógnita0,F(incógnita0)){\displaystyle (x_{0},f(x_{0}))},(incógnita1,F(incógnita1)){\displaystyle (x_{1},f(x_{1}))}y(incógnita2,F(incógnita2)){\displaystyle (x_{2},f(x_{2}))}Para simplificar la notación, definamos las diferencias.

h0=incógnita1incógnita0,h1=incógnita2incógnita1{\displaystyle h_{0}=x_{1}-x_{0},\quad h_{1}=x_{2}-x_{1}}

y δ0=F(incógnita1)F(incógnita0)h0,δ1=F(incógnita2)F(incógnita1)h1.{\displaystyle \delta _{0}={\frac {f(x_{1})-f(x_{0})}{h_{0}}},\quad \delta _{1}={\frac {f(x_{2})-f(x_{1})}{h_{1}}}.}

Sustituyendo cada uno de los tres puntos(incógnita0,F(incógnita0)){\displaystyle (x_{0},f(x_{0}))},(incógnita1,F(incógnita1)){\displaystyle (x_{1},f(x_{1}))}y(incógnita2,F(incógnita2)){\displaystyle (x_{2},f(x_{2}))}enPAG(incógnita){\displaystyle P(x)}y resolviendo simultáneamente paraa,b{\displaystyle a,b}ydo{\displaystyle c}da

a=δ1δ0h1+h0,b=ah1+δ1,do=F(incógnita2).{\displaystyle a={\frac {\delta _{1}-\delta _{0}}{h_{1}+h_{0}}},\quad b=ah_{1}+\delta _{1},\quad c=f(x_{2}).}

Luego se aplica la fórmula cuadrática aPAG(incógnita){\displaystyle P(x)}determinarincógnita3{\displaystyle x_{3}}como

incógnita3incógnita2=2dob±b24ado.{\displaystyle x_{3}-x_{2}={\frac {-2c}{b\pm {\sqrt {b^{2}-4ac}}}}.}

El signo que precede al término radical se elige para que coincida con el signo deb{\displaystyle b}para asegurar que la siguiente iteración sea la más cercana aincógnita2{\displaystyle x_{2}}, donación

incógnita3=incógnita22dob+firmar(b)b24ado.{\displaystyle x_{3}=x_{2}-{\frac {2c}{b+\operatorname {sign} (b){\sqrt {b^{2}-4ac}}}}.}

Una vezincógnita3{\displaystyle x_{3}}Una vez determinado el resultado, el proceso se repite. Cabe destacar que, debido a la expresión radical en el denominador, las iteraciones pueden ser complejas incluso cuando las anteriores son todas reales. Esto contrasta con otros algoritmos de búsqueda de raíces, como el método de la secante , el método de la secante generalizada de Sidi o el método de Newton , cuyas iteraciones seguirán siendo reales si se parte de números reales. Tener iteraciones complejas puede ser una ventaja (si se buscan raíces complejas) o una desventaja (si se sabe que todas las raíces son reales), según el problema.

El método se puede adoptar fácilmente para escenarios, como la detección de colisiones, donde no interesa la raíz más cercana, sino la más pequeña, reemplazandofirmar(b){\displaystyle \operatorname {sign} (b)}confirmar(a){\displaystyle \operatorname {sign} (-a)}:

incógnita3=incógnita22dobfirmar(a)b24ado.{\displaystyle x_{3}=x_{2}-{\frac {2c}{b-\operatorname {sign} (a){\sqrt {b^{2}-4ac}}}}.}

Algoritmo

El siguiente pseudocódigo describe el método de Muller para aproximar una raíz de la ecuación f(x) = 0. Devuelve una estimación.incógnita3{\displaystyle x_{3}}que satisface|incógnita3incógnita2|<ε{\displaystyle |x_{3}-x_{2}|<\varepsilon }, dóndeε{\displaystyle \varepsilon }es una tolerancia especificada por el usuario.

entrada: función f , aproximaciones iniciales x0 , x1 , x2 , tolerancia ε , iteraciones máximas Nmax para n = 0 a Nmax hacer h0x1x0 h1x2x1 δ0 ← ( f ( x1 ) − f ( x0 )) / h0 δ1 ← ( f ( x2 ) − f ( x1 )) / h1 a ← ( δ1δ0 ) / ( h1 + h0 ) ba · h1 + δ1 cf ( x2 ) si b ≥ 0 entonces denominadorb + sqrt( b ² − 4· a · c ) sino denominador ← b − sqrt( b ² − 4· a · c ) fin si x3x2 − 2· c / denominador si | x3x2 | < ε entonces devolver x3 fin si x0x1 x1x2 x2x3 fin para devolver x3

Ejemplo

Supongamos que buscamos una solución del polinomio

F(incógnita)=incógnita3incógnita+7.{\displaystyle f(x)=-x^{3}-x+7\,.}

Aplicación del método de Muller con estimaciones inicialesincógnita0=1{\displaystyle x_{0}=1},incógnita1=2{\displaystyle x_{1}=2}yincógnita2=3{\displaystyle x_{2}=3}y una tolerancia de109{\displaystyle 10^{-9}}proporciona las siguientes aproximaciones:

Con la tolerancia requerida, el método de Muller genera la solución.1.7392038612200968{\displaystyle 1.7392038612200968}en la sexta iteración.

Al modificar las estimaciones iniciales, el método de Muller también puede generar soluciones complejas. Aplicando el método de Muller nuevamente pero con estimaciones inicialesincógnita0=1{\displaystyle x_{0}=-1},incógnita1=2{\displaystyle x_{1}=-2}yincógnita2=3{\displaystyle x_{2}=-3}y una tolerancia de109{\displaystyle 10^{-9}}proporciona las siguientes aproximaciones:

Con la tolerancia requerida, el método de Muller genera la solución compleja.0,86960193060849981.8079332269621338i{\displaystyle -0.8696019306084998-1.8079332269621338i}en la octava iteración.

Velocidad de convergencia

Para funciones bien comportadas, el orden de convergencia del método de Muller es aproximadamente 1,839, que coincide exactamente con la constante de Tribonacci . Esto se puede comparar con aproximadamente 1,618, que coincide exactamente con la proporción áurea , para el método de la secante , y con exactamente 2 para el método de Newton . Por lo tanto, el método de la secante avanza menos por iteración que el método de Muller, mientras que el método de Newton avanza más.

Más precisamente, si ξ denota una sola raíz de f (de modo que f (ξ) = 0 y f ' (ξ) ≠ 0), f es tres veces continuamente diferenciable, y las estimaciones iniciales x 0 , x 1 , y x 2 se toman suficientemente cerca de ξ, entonces las iteraciones satisfacen

límitek|incógnitakξ||incógnitak1ξ|μ=|F(ξ)6F(ξ)|(μ1)/2,{\displaystyle \lim _{k\to \infty }{\frac {|x_{k}-\xi |}{|x_{k-1}-\xi |^{\mu }}}=\left|{\frac {f'''(\xi )}{6f'(\xi )}}\right|^{(\mu -1)/2},}

donde μ ≈ 1,84 es la solución positiva deincógnita3incógnita2incógnita1=0{\displaystyle x^{3}-x^{2}-x-1=0}, la ecuación que define la constante de Tribonacci.

El método de Muller ajusta una parábola, es decir, un polinomio de segundo orden , a los últimos tres puntos obtenidos f ( x k -1 ), f ( x k -2 ) y f ( x k -3 ) en cada iteración. Se puede generalizar esto y ajustar un polinomio p k,m ( x ) de grado m a los últimos m +1 puntos en la k -ésima iteración. Nuestra parábola y k se escribe como p k ,2 en esta notación. El grado m debe ser 1 o mayor. La siguiente aproximación x k es ahora una de las raíces de p k,m , es decir, una de las soluciones de p k,m ( x )=0. Tomando m =1 obtenemos el método de la secante, mientras que m =2 da el método de Muller.

Muller calculó que la secuencia { x k } generada de esta manera converge a la raíz ξ con un orden μ m donde μ m es la solución positiva deincógnitametro+1incógnitametroincógnitametro1incógnita1=0{\displaystyle x^{m+1}-x^{m}-x^{m-1}-\dots -x-1=0}.

A medida que m tiende a infinito, la solución positiva de la ecuación tiende a 2. Sin embargo, el método es mucho más difícil para m > 2 que para m = 1 o m = 2, ya que es mucho más complicado determinar las raíces de un polinomio de grado 3 o superior. Otro problema es que no parece haber ninguna indicación sobre cuál de las raíces de p k,m elegir como la siguiente aproximación x k para m > 2.

Estas dificultades se superan con el método de la secante generalizada de Sidi , que también emplea el polinomio p k,m . En lugar de intentar resolver p k,m ( x )=0, la siguiente aproximación x k se calcula con la ayuda de la derivada de p k,m en x k -1 en este método.

Véase también

Referencias

  • Atkinson, Kendall E. (1989). Introducción al análisis numérico , 2.ª edición, Sección 2.4. John Wiley & Sons, Nueva York. ISBN 0-471-50023-2.
  • Burden, RL y Faires, JD Análisis numérico , 4ª edición, páginas 77 y siguientes.
  • Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). «Sección 9.5.2. Método de Muller» . Numerical Recipes: The Art of Scientific Computing (3.ª  ed.). Nueva York: Cambridge University Press. ISBN 978-0-521-88068-8.

Lecturas adicionales

  • Una variante de acotación con convergencia global: Costabile, F.; Gualtieri, MI; Luceri, R. (marzo de 2006). "Una modificación del método de Muller". Calcolo . 43 (1): 39– 50. doi : 10.1007/s10092-006-0113-9 . S2CID 124772103 .