EDIT: Esta es la versión corta y simplificada. Mi respuesta original está más abajo, y la motivación, los antecedentes y la discusión de los errores se pueden encontrar allí.
- Encuentre aproximaciones para $\ln(1.00)$ a $\ln(2.00)$ iterando el argumento por $0.01$ . $$\ln(1.00)=0$$ $$\ln(x+0.01)\approx\ln(x)+\frac{1}{600}\left(\frac{1}{x}+\frac{4}{x+0.005}+\frac{1}{x+0.01}\right)\qquad(1)$$
- Encuentre aproximaciones para $\ln(2.01)$ a $\ln(3.00)$ . Si $\ln(x/2)$ ya está tabulado, $$\ln(x)=\ln(x/2)+\ln(2.00)$$ En caso contrario, utilice la ecuación $(1)$ .
- Encuentre aproximaciones para $\ln(3.01)$ a $\ln(5.00)$ . Si $\ln(x/2)$ o $\ln(x/3)$ ya está tabulado, $$\ln(x)=\ln(x/2)+\ln(2.00)\qquad\textrm{or}\qquad\ln(x)=\ln(x/3)+\ln(3.00)$$ En caso contrario, utilice la ecuación $(1)$ .
- Encuentre aproximaciones para $\ln(5.01)$ a $\ln(7.00)$ . Si $\ln(x/2)$ , $\ln(x/3)$ o $\ln(x/5)$ ya está tabulado, $$\ln(x)=\ln(x/2)+\ln(2.00)\qquad\textrm{or}\qquad\ln(x)=\ln(x/3)+\ln(3.00)$$ $$\textrm{or}\qquad\ln(x)=\ln(x/5)+\ln(5.00)$$ En caso contrario, utilice la ecuación $(1)$ .
- Encuentre aproximaciones para $\ln(7.01)$ a $\ln(10.00)$ . Si $\ln(x/2)$ , $\ln(x/3)$ , $\ln(x/5)$ o $\ln(x/7)$ ya está tabulado, $$\ln(x)=\ln(x/2)+\ln(2.00)\qquad\textrm{or}\qquad\ln(x)=\ln(x/3)+\ln(3.00)$$ $$\textrm{or}\qquad\ln(x)=\ln(x/5)+\ln(5.00)\qquad\textrm{or}\qquad\ln(x)=\ln(x/7)+\ln(7.00)$$ En caso contrario, utilice la ecuación $(1)$ .
- Ahora las aproximaciones para $\ln(1.00)$ a $\ln(10.00)$ están tabulados. Añadir $2\ln(10.00)$ para obtener una tabla de $\ln(100), \ln(101), \ldots, \ln(1000)$ . Personalmente, me iría de la mesa con argumentos de $1.00$ a $10.00$ e indicar al lector que añada $\ln(10.00)$ según sea necesario.
Este método utiliza la ecuación $(1)$ aproximadamente $100+50+33+33+27+27+23+23+23\approx340$ tiempos. Eso significa que harás alrededor de $3(340)=1360$ divisiones por números con un máximo de cuatro cifras significativas. Dividirás por $600$ (comparativamente simple) $340$ tiempos. Cuando se utiliza la ecuación $(1)$ , lo haces $3$ adiciones, por un total de unos $1020$ adiciones. Cuando no se utiliza la ecuación $(1)$ , se hace la adición una vez, y esto sucede alrededor de $900-340=560$ tiempos. Todo junto es:
- $1360$ divisiones por números con un máximo de 4 cifras significativas
- $340$ divisiones por $600$
- $1580$ adiciones
- no hay multiplicaciones ni elevaciones de potencias que requieran mucho tiempo, como la mayoría de los otros métodos.
Creo que esto es excelente teniendo en cuenta que va a producir $900$ números con cinco decimales de precisión.
Respuesta original publicada:
He aquí una idea que no tiene nada que ver con las series de potencia. En primer lugar, lee sobre el método Runge-Kutta para aproximar soluciones a ecuaciones diferenciales en http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods . Sólo hay que atenerse al método "común de cuarto orden". La mayoría de los cursos de introducción a las ecuaciones diferenciales cubren el método de Euler, que es un gran concepto, pero normalmente poco práctico por su lentitud. Runge-Kutta funciona un montón más rápido.
$y=\ln(x)$ es la solución de la ecuación diferencial $y'=\frac{1}{x}$ con la condición inicial $y(1)=0$ . Aplicar Runge-Kutta con un tamaño de paso de $0.01$ e iterar novecientas veces desde $1.00$ hasta $10.00$ . Tendrá valores aproximados para $\ln(1.01)$ hasta $\ln(10.00)$ . Luego se puede añadir la aproximación para $\ln(10.00)$ (dos veces) para obtener aproximaciones para $\ln(100)$ a $\ln(1000)$ .
Error:
No conozco ningún teorema para acotar el error con este método, pero los errores suelen ser muy pequeños en la práctica. Usé Excel para hacer todo esto, y el error en la aproximación final para $\ln(10.00)$ fue sólo menos que $2.1\times10^{-11}$ . Si usted hizo todo esto a mano, y luego utilizó algún otro método para encontrar $\ln(10.00)$ con una precisión conocida muy alta, se podría establecer un límite en el error para $\ln(10.00)$ . Entonces la monotonicidad de $\frac{1}{x}$ implicaría que todos los errores en los pasos intermedios fueran aún más pequeños.
Complejidad:
Dada la especificidad de este problema, cada iteración requerirá que hagas tres divisiones decimales por números que tengan como máximo cuatro cifras significativas. (Ten en cuenta que como la ecuación diferencial es de tiempo puro, $k2=k3$ .) Cada iteración tendrá también dos duplicaciones, varias sumas y una división por 6, pero las tres divisiones decimales le llevarán la mayor parte del tiempo. Además, cada uno de estos tres cocientes sólo se utiliza más tarde en sumas, duplicaciones y divisiones por $6$ Así que yo apostaría a que estarías seguro registrando sólo 7 decimales para cada cociente. Mi opinión es que esto te dará los resultados que quieres mucho más rápido que la mayoría de los métodos basados en series de potencias. Al igual que este método, aquellos requieren varias divisiones en cada paso. Pero los métodos de series de potencias también requieren elevar a potencias, y este método no lo hace.
Velocidad mejorada
Para reducir el tiempo de cálculo aproximadamente a la mitad, se podría utilizar algún otro método para encontrar un decimal para $\ln(2)$ con gran precisión, y añadir el uso $\ln(2x)=\ln(x)+\ln(2)$ . En concreto, tras ejecutar Runge-Kutta noventa veces hasta $2.01$ se podría aproximar $\ln(2.02)$ con las aproximaciones que tiene para $\ln(1.01)$ y $\ln(2)$ . Alternar con RK para $\ln(2.03)$ y seguir alternando los métodos. Esto te dejaría de $900$ iteraciones RK hasta $500$ . Al añadir esta modificación a mi hoja de cálculo de Excel se produjo el error final en $\ln(10.00)$ hasta un nivel perfectamente aceptable $7.1\times10^{-11}$ .
0 votos
Mira este hilo aquí para algunos trucos que reducen el trabajo e información de fondo relevante. Esencialmente, no se quiere utilizar una única serie de potencias, sino que se hace la mayor parte del trabajo utilizando interpolaciones adecuadas.
0 votos
The Feynman Lectures on Physics Vol1 Ch22 tiene el mismo espíritu que la pregunta y también una buena perspectiva.
1 votos
En esta columna encontrará algunos cálculos reales: maa.org/editorial/euler/ (tiene un método iterativo para los registros de base-10, y a mitad de la página 3 utiliza (una versión más amigable de) el método del post de @Iasafro). Ten en cuenta que sólo necesitas usar las series para los recíprocos de los enteros, ya que puedes juntar todo lo demás a partir de ellos (y algo de ingenio por tu parte). También quiero añadir que es agradable ver a alguien más que está interesado en estas cosas (cada vez que siento que mis habilidades aritméticas están disminuyendo agrego a mis tablas de logaritmos para practicar).
4 votos
¿En serio estás haciendo esto por diversión? Sé que mis padres tenían que usar tablas de logaritmos cuando no había calculadoras asequibles. ¿Por qué querrías hacer esto a mano hoy en día?
2 votos
@Raphael: Si bien es cierto que calcular las cosas a mano no es tan eficiente cuando se quiere resultados es bueno practica en la aritmética. Por mi experiencia personal, así como por la observación de otros, parece que las bromas sobre las habilidades básicas (aritmética, trigonometría, cálculo, etc.) que se degradan cuanto más se avanza en las matemáticas son demasiado ciertas. Para contrarrestarlo, cada vez que me doy cuenta de que me estoy volviendo descuidado con los números, simplemente saco mi tabla y la añado :) Una pequeña digresión: Otra utilidad de calcular cosas a mano (bueno, quizá no siempre a mano ) es ayudar a los estudiantes de cálculo a entender lo que..
0 votos
...la convergencia significa realmente. Decir " $\sum_{n=0}^{\infty} \frac{1}{n!}$ converge por la prueba ___" es una cosa; mostrarles lo rápido que se insertan ceros después del punto decimal de $\frac{1}{n!}$ para aumentar $n$ es otra. No estoy seguro de Eberhard, pero esas son las dos razones que doy a la gente cuando menciono que tengo mis propias tablas de registro (y trigonométricas).
0 votos
No estoy seguro de que calcular nada (aparte de cosas realmente básicas, tal vez hasta tratar con racionales) a mano sea útil hoy en día. Me parece que el mejor ejercicio sería sentarse y aprender a escribir rápidamente un pequeño programa que haga el cálculo, o aprender a usar
bc
etc. Como informático, probablemente soy parcial en este aspecto.1 votos
@Raphael Como informático, ¿no te interesa saber qué método lo haría más rápido? ¿Si es un humano o un ordenador el que lo hace? La primera solución de Robert toma alrededor de $2250$ multiplicaciones (no está mal). La solución de Iasafro requiere unas 900 divisiones y 450 cubicaciones, y 450 elevaciones a 5. La segunda solución de Robert requiere unas 2700 divisiones, 900 elevaciones al cuadrado y 900 al cubo. La mía requiere 1700 divisiones. Este tipo de comparaciones deberían ser importantes para hacer un algoritmo eficiente. Aunque sólo sea para que las ideas puedan aplicarse a problemas "mayores".
0 votos
Así es, pero el OP declaró explícitamente que quería crear una tabla a mano. No me opongo a encontrar procedimientos eficientes, al contrario, pero cuestiono la necesidad de una tabla y la precisión de hacer cálculos largos a mano.
0 votos
Hoy he estado a punto de tener que hacer esto cuando he olvidado mi calculadora para un examen de química y no he podido pedir una prestada. Afortunadamente, los problemas estaban todos sobrecocinados y no necesité usar nada más allá de la división larga, pero nunca se sabe...
0 votos
¿Has probado alguna vez la regla de cálculo de logaritmos? youtu.be/_diazeq0XS8
0 votos
Otro vídeo sobre Slide Rule. youtu.be/6X4N5vR-O34
0 votos
Otra forma de calcular logaritmos es con unos juegos de ábacos como en el enlace de vídeo aquí. Realmente imprescindible. youtu.be/q62hQVfVGxU El tipo utiliza algunos ábacos asiáticos como el Soroban y el Suanpan.