Me gustaría saber específicamente cómo una calculadora de bolsillo (calculadoras TI también se aplican) calcula el $e^{0.1}$, y qué métodos o algoritmos de las calculadoras de bolsillo de uso con el fin de producir su respuesta.
Respuestas
¿Demasiados anuncios?Me sorprendería si ellos realmente utilizado en series de Taylor. Por ejemplo, los básicos de 80 x 87 "exponencial" la instrucción es F2XM1 que computa $2^x-1$$0 \le x \le 0.5$. No creo que la aplicación está documentado, pero si yo fuera la programación de este, yo podría usar un minimax polinómica o racional aproximación: el siguiente polinomio de grado $9$ aproxima $2^x - 1$ en este intervalo con la máxima de error de aproximadamente el $1.57 \times 10^{-17}$:
-0.15639e-16+(.69314718055995154416+(.24022650695869054994+
(0.55504108675285271942e-1+(0.96181289721472527028e-2
+(0.13333568212100120656e-2+(0.15403075872034576440e-3
+(0.15265399313676342402e-4+(0.13003468358428470167e-5
+0.12113766044841794408e-6*x)*x)*x)*x)*x)*x)*x)*x)*x
Por el contrario, el polinomio de Maclaurin de la misma titulación máximo error acerca de las $7.11 \times 10^{-12}$ en este intervalo.
Usado comúnmente conjunto de algoritmos que se conoce como CORDIC: Coordinar la Rotación de la Computadora DIgital. Básicamente, se utiliza un montón de bitshifts, suma, resta y buscar las tablas. Bueno para los casos donde no se dispone de multiplicadores de hardware y lo que no.
También puede truncar la serie así.
Una cosa interesante es que a menudo se puede hacer algo de matemáticas e identificar chip que se utiliza en una calculadora. Creo www.datamath.org tiene alguna información sobre esto, pero no puedo encontrarlo.
Edit: Aquí está!
La última respuesta sólo puede ser dada por el fabricante de la calculadora, pero hay varias estrategias:
- El valor puede ser calculado a través de la expansión de la serie.
- El valor puede ser interpolados a partir de una tabla almacena.
- El valor puede ser reducido al valor de una más grande o más pequeño argumento por operaciones básicas; por ejemplo,$e^{2x} = (e^x)^2 = e^x\times e^x$.
En la práctica, una combinación es probable que se utilicen. Para valores grandes (donde la convergencia de la serie es lenta), el valor probablemente será reducido a pequeños argumentos. Probablemente la calculadora también se han almacenado los valores de los argumentos más allá de que el desbordamiento o subdesbordamiento se produce, para los que el cálculo puede ser omitido y un error (desbordamiento) o $0$ (para el subdesbordamiento) pueden ser devueltos directamente. Para valores pequeños, Probablemente, la serie va a ser utilizado directamente, ya que converge rápidamente. No obstante, podría también ser un rango de valores de una tabla de búsqueda es más eficiente (que la tabla de búsqueda sería entonces también ser la "zona de aterrizaje" para el gran argumento de reducción). La interpolación, a continuación, probablemente vuelva a utilizar la expansión de la serie de la diferencia, el uso de $e^{x+\delta}=e^xe^\delta$ donde $x$ es el valor tabulado y $\delta$ es la diferencia.
Como un ejemplo concreto, el calulator podría utilizar la siguiente estrategia:
- Almacenar una tabla de $e^n$$n=1$$100$.
- Para $\left|x\right| \le \frac12$, el uso de la serie directamente. Para $\frac<x\le100.5$, el uso de la serie para calcular el factor de al entero más cercano. Para el correspondiente argumento negativo, calcular la inversa.
- Para valores más altos de $x$, pero por debajo del límite de desbordamiento, el uso de la recursividad y el mencionado exponencial de las relaciones para calcular el valor de la iteración. Uno relativamente eficiente método para ir a través de los bits de los restantes sumando, cuadrado para cada dígito, y multiplicar por $e$ por cada $1$. Pero dada la mesa, probablemente más eficiente iteraciones se podría hacer (por ejemplo, tomar la energía 64th por repetir la escuadra, y se multiplica por el valor del argumento representado por el correspondiente de 6 bits, lectura de la tabla).
Por supuesto, el actual algoritmo elegido depende de lo rápido que el procesador (que es, lo mucho que la ineficiencia se puede dar el lujo), la cantidad de memoria que tiene disponible (es decir, cómo una gran mesa se puede dar el lujo de la tienda) y la precisión de la calculadora calcula (más precisión significa que más de la serie de términos para calcular, y las grandes entradas de la tabla).
Tenga en cuenta que $e^{x}=\sum_{n=0}^{\infty} \frac{x^{n}}{n!}$ así que si quieres una aproximación de $e^{x}$ sólo puede truncar la serie.
$$e^{x}\approx \sum_{n=0}^{N} \frac{x^{n}}{n!}.$$
Después de una rápida búsqueda, parece que la serie probablemente no son (generalmente) la mejor manera de ir. Ver la aceptación respuesta aquí: http://stackoverflow.com/questions/15350856/which-method-to-implement-exp-function-in-c