Ayer se me ocurrió al azar resolver $xe^x = c$ mediante iteración funcional (IF) tras manipular la ecuación de forma " $x = \cdots$ " que proporciona la tasa de convergencia "más rápida" independientemente de la estimación de partida.
Descubrí por ensayo y error guiado por la intuición que la ecuación $x = ( c x^r e^{-x} )^\frac{1}{r+1}$ donde $r = \ln(c)$ funciona excepcionalmente bien para grandes $c$ siempre que la estimación inicial sea positiva.
En cambio, la aproximación Newton-Raphson (NR) (sobre $x e^x - c = 0$ ) funciona mal si la estimación inicial está demasiado lejos. Conozco los detalles de este comportamiento (véase https://math.stackexchange.com/a/800070 ), pero no sé mucho sobre FI, así que no entiendo muy bien cómo encontrar una ecuación adecuada para garantizar una convergencia "rápida".
Después de eso, descubrí que la ecuación $x = (x+1)/(e^x/c+1)$ da una FI aún mejor, que supera tanto a mi primera FI como a la NR.
Primera pregunta es, por qué es tan buena esta IF (Kibble ya ha hecho esta parte, así que no tienes que mencionarla de nuevo si respondes a mi pregunta), y cómo encontrar una IF tan rápida de forma sistemática?
Después de eso, descubrí que NR-log (es decir, NR en $x + \ln(x) - \ln(c) = 0$ ) converge mucho más rápido que mi FI mejorado, pero sólo si la estimación inicial no es demasiado grande, de lo contrario genera una estimación siguiente negativa y se bloquea en la siguiente iteración.
Segunda pregunta es, ¿existe una técnica genérica que para cualquier ecuación en $x$ da una FI para resolver esa ecuación para positivo $x$ que converge "rápidamente" a la raíz para cualquier punto de partida positivo? Mi FI mejorada casi lo hace, pero no tengo ni idea de cómo hacerlo para otras ecuaciones en general, ni sé si existe una 'mejor' que la mía.
Aquí digo "rápido" y "mejor", pero en realidad no sé cómo especificar con precisión cuáles deben ser estas nociones, así que siéntete libre de especificar las tuyas propias siempre que tengan sentido.
Mi intuición
Al principio excluí estos porque mi pregunta ya es bastante larga, pero aquí está la intuición detrás de mis IF. Primero estaba pensando que tal vez hay un método genérico si tenemos una función estrictamente creciente $f$ tal que $f(0) < 0$ y queremos encontrar $y > 0$ tal que $f(y) = 0$ . Mi intuición era que para asegurar la convergencia cuadrática queremos encontrar una función $g$ de forma que la ecuación original sea equivalente a $x = g(x)$ y dónde:
-
$g$ está limitada en $\mathbb{R}_{\ge 0}$ .
-
$|g'| < 1$ .
-
$g'(y) = 0$ .
Mis dos IF cumplen las dos primeras condiciones, pero sólo la mejorada cumple la tercera. No sé qué criterios mejores hay.
Detalles adicionales
Sin embargo, si buscamos un algoritmo eficiente para calcular $W(c)$ en particular, a continuación, utilizando NR-log con estimación inicial $\ln(c+1)$ da una convergencia cuadrática uniforme sobre todos $c > 0$ que es increíble. En cambio, NR necesita $(ln(ln(c)))$ pasos para llegar a la convergencia cuadrática uniforme, mientras que (mi mejorado) FI tarda $(ln(c))$ pasos. Pero tanto NR como FI tienen convergencia cuadrática uniforme si en su lugar utilizamos la estimación de partida $\ln(c+1)-\ln(\ln(c+1)+1)$ así que no puedo decir cuál es mejor. (NR-log sólo tiene convergencia lineal uniforme si utilizamos esta estimación inicial debido a la pequeña $c$ .)