En valores pequeños cercanos a x=1, puedes usar la expansión de Taylor para lnx:
lnx=(x−1)−12(x−1)2+....
¿Existe alguna expansión o aproximación válida para valores grandes (o en el infinito)?
En valores pequeños cercanos a x=1, puedes usar la expansión de Taylor para lnx:
lnx=(x−1)−12(x−1)2+....
¿Existe alguna expansión o aproximación válida para valores grandes (o en el infinito)?
Si el número cuyo logaritmo necesitas es real y positivo, el algoritmo de Borchardt, que es similar en estructura al algoritmo AGM de Gauss, si se inicia con valores iniciales 1 y x, convergerá a (x-1)/Ln(x) para valores grandes de x, aunque se requerirán muchos pasos, cada uno implica una raíz cuadrada, y la convergencia no es cuadrática. A partir de esto, Ln(x) puede calcularse fácilmente. Sin embargo, la convergencia puede acelerarse mediante métodos de extrapolación bien conocidos en la comunidad de cálculo numérico. El algoritmo de Borchardt fue una forma popular de calcular logaritmos por programadores de FORTH en el siglo pasado.
Otro método popular para calcular logaritmos era calcular la función exponencial (inversa de la función logarítmica deseada) de una suposición inicial. La función exponencial es una serie de potencias que converge rápidamente, por lo que se calcula rápidamente. Luego, un procedimiento solucionador ajusta la aproximación para obtener el logaritmo deseado. Si tu número está en punto flotante, puedes extraer una suposición apropiada para el logaritmo a partir de la porción del exponente sesgado de la notación en punto flotante.
No existe una función racional (o polinómica) que haga el trabajo. Para ver esto, supongamos que la potencia del denominador es mayor que la del numerador. Para valores grandes, la función racional se acercará a cero. El logaritmo no lo hace. Supongamos que la potencia del numerador y del denominador son iguales. Entonces, para valores grandes de x, la función racional se acerca a una constante. El logaritmo no lo hace. Y si la potencia del numerador es mayor, la función racional crece al menos linealmente; el logaritmo no lo hace. Por lo tanto, no hay una función racional (o polinómica) que pueda aproximar el logaritmo para valores grandes.
Dicho esto, las funciones racionales llamadas aproximaciones de Pade superan a las series de potencias truncadas. Esto se debe a que la aproximación de Pade, al expandirse en una serie de potencias, coincide con la serie de potencias truncada durante varios términos, y luego incluye términos adicionales de mayor potencia que aproximadamente coinciden con términos de la serie del logaritmo que fueron cortados. Para aprender sobre la aproximación de Pade, consulta un texto sobre fracciones continuas. De lo contrario, si eres perezoso, Wolfram tiene un generador de fracciones continuas en línea.
Se ha aprendido mucho desde la época de Napier y Briggs.
X-1 es una aproximación burda que es buena para valores de x cercanos a 1.
2*(x-1)/(x+1) es una mejor aproximación con un rango más amplio. 6*(x-1)/(1 + 4 * Sqrt(x) + x) es mejor y tiene un rango aún mayor. 90*(x-1)/(7+32 * x^(1/4) + 12 * x^(1/2) + 32 * x^(3/4) + 7 * x) es aún mejor y tiene un rango más amplio, pero nunca excede los 90 para ningún valor real positivo de x.
Algunas aproximaciones son mejores que otras, pero todas fallan para valores suficientemente grandes de x.
(Nota: la raíz cuarta en esa última fórmula se puede encontrar tomando la raíz cuadrada dos veces).
En esta otra pregunta encontré una aproximación de la siguiente manera: ln(x+1)≈ln(x)1−x−1ln(2)
Al diferenciar ambos lados, ya que queda solo un término logarítmico, se puede encontrar la siguiente aproximación: ln(x)≈ln(2) x−1ln(2)(x1ln(2)−1)(x1ln(2)+x)1+x
que funciona bastante bien para x∈[0.1, 10] como se puede ver en Wolfram-Alpha, pero empeora para valores más grandes de x, de cualquier forma, tal vez pueda mejorarse sabiendo cómo se ha hecho.
Para valores más grandes de x, siguiendo esta respuesta, se podría usar esta fórmula:
ln(x)≈x (x1x−1)
Agregado más tarde
Más tarde encontré aquí que la primera aproximación podría mejorarse con una fórmula aún más simple, que funciona bastante bien para x∈[0.02, 50]:
ln(x)≈f1(x)=(x−1)(x+xln(2))x(1+xln(2))
ver su gráfico:
y converge rápidamente al logaritmo usando la función: fn(x)=nf1(x1n)
incluso para enteros pequeños n>1.
Como ejemplo extremo, θ(x)=xf1(x1x) es prácticamente la función logarítmica cuando x>0.65 (en mi humilde opinión: la diferencia máxima es menor que 0.0011).
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.