No conozco ninguna forma de mejorar una aproximación cercana del logaritmo como lo haces con la raíz cuadrada en Newton-Raphson a menos que tengas la función inversa del logaritmo. Ten en cuenta que la exponencial es fácil de evaluar para argumentos pequeños porque es una serie de potencias que converge rápidamente.
Si tienes un logaritmo exacto de un número z que está cerca de x, calcula w=x/z. westará cerca de 1. Y es rápido y fácil calcular el logaritmo natural de números cercanos a 1.
Crudo: utiliza ln(w)=w−1
Menos crudo: a1=(1+w)/2, y aproxima ln(w)=(w−1)/a1. Esto parece una integración trapezoidal de 1 a w de dt/t. Podrías hacerlo mejor con la regla de Simpson y otros métodos de integración numérica, pero no es hacia donde quiero dirigirte.
Mejor: g1=√w, y aproxima ln(w)=(w−1)/g1
Continuando, podemos obtener mejores divisores. a2=(a1+g1)/2,g2=√a2∗g1, etc. Esto no tiene convergencia cuadrática como el algoritmo Gauss AGM, pero puede ser acelerado por el mismo método utilizado en el integrador trapezoidal acelerado de Romberg de la calculadora HP. Consulta Carlson, "Un algoritmo para calcular logaritmos y arcotangentes", Matemáticas de la Computación, abril de 1972. Solo se necesitan unas pocas iteraciones para una gran precisión. Esto me lo enseñó Nate Grossman de la UCLA en una reunión del Forth Interest Group en el siglo pasado. (Otro de sus métodos favoritos era Newton-Raphson en la exponencial.)
Una gran parte de nuestra tecnología numérica implica estrategias para evitar operaciones "lentas" en la computadora: multiplicación, inverso, raíz cuadrada, etc. Algún día estas serán incorporadas en el hardware y tomarán solo un ciclo de máquina. Se abrirán nuevos mundos de computación de alta velocidad. Hasta entonces, el cálculo rápido de logaritmos es una infraestructura fundamental para el procesamiento numérico y un campo rico para seguir explorando.
Esto no es exactamente lo que querías, pero espero que sea útil.
0 votos
Sin la exponenciación o los logaritmos, es difícil siquiera decir qué tan cercano está y0y0 a logxlogx. Esto me hace pensar que será difícil, si no imposible, crear un algoritmo iterativo que no aproxime de alguna forma el error ϵϵ. Tomar series de potencias truncadas de dichas funciones puede o no contar como una respuesta, sin embargo.
0 votos
@AlexR - ¿Y si puedes calcular el logaritmo entero, es decir, el entero más cercano?
0 votos
@nbubis ¿Se supone que ff debe ser una función polinómica/racional? No está claro en tu pregunta lo que significa "usando solo adición y multiplicación": si puedes usar diferentes operaciones dependiendo de xx, entonces sí, puedes calcular una serie de Taylor para exp(y0)exp(y0). Si no puedes variar las operaciones basadas en xx, entonces estás efectivamente restringiendo que ff sea un polinomio fijo.
0 votos
@ErickWong - Esperaré una respuesta basada en el valor de xx siempre y cuando no se requieran sumas de loglog o exponentes, excepto un logaritmo entero.
0 votos
@nbubis No estoy seguro de que esto responda a mi pregunta. ¿Estás diciendo que estaría bien que ff comprenda algo así como "expandir la serie de Taylor para exp(y)exp(y) a ⌈x⌉⌈x⌉ términos, luego, en función de qué tan grande sea en comparación con xx, sumar o restar alguna expresión"? El valor de ⌈x⌉⌈x⌉ puede ser excesivo, pero destaca lo que quiero decir con dependencia de xx. Si es así, seguramente puedes usar algún tipo de iteración de Newton-Raphson con un exp aproximado adecuado en lugar de un exp exacto.
0 votos
@ErickWong - No. No estoy pidiendo un valor preciso para logxlogx, solo uno que lo aproxime mejor que la estimación actual.
0 votos
@nbubis Supongo que "No" significa que mi valor propuesto de ff no está permitido. ¿Cuáles son entonces las restricciones sobre ff? ¿Es una función polinómica/racional de xx e $y?
0 votos
@ErickWong - Una función racional de x,yx,y, sí.