Me sorprendió un poco caracterizar la fórmula de De Moivre como una aceleración en el cálculo; veamos si podemos calcular la cantidad de multiplicaciones que está guardando.
Si [math] z [/ math] es un número complejo, entonces podemos escribirlo como [math] r (\ cos \ theta + i \ sin \ theta) [/ math], entonces [math] z ^ n = r ^ n (\ cos \ theta + i \ sin \ theta) ^ n = r ^ n (\ cos n \ theta + i \ sin n \ theta) [/ math].
Multiplicar dos números complejos requiere tres multiplicaciones (ver Multiplicar dos números complejos usando solo tres multiplicaciones de números reales) No creo que la cuadratura pueda reducir esto aún más. Entonces, el cálculo directo a una [matemática] n [/ matemática] que es una potencia de 2 toma multiplicaciones de [matemática] 3 \ log_2 n [/ matemática] a través de la cuadratura repetida. (Para la no potencia de dos, agregue otras 3 multiplicaciones por cada bit adicional en [matemáticas] n [/ matemáticas] que se establece …)
¿Cuántas multiplicaciones se necesitan para convertir [matemáticas] a + bi [/ matemáticas] en [matemáticas] (r, \ theta) [/ matemáticas]? Si tenemos tablas de búsqueda súper eficientes para el arcotangente, entonces todavía se requiere cuadrar [matemáticas] a [/ matemáticas] y [matemáticas] b [/ matemáticas], y dividirlas. Luego tomamos multiplicaciones [math] \ log_2 [/ math] para elevar r a la potencia correcta, y tenemos que multiplicar [math] \ theta [/ math] por [math] n [/ math] también, más otras multiplicaciones después de nuestra búsqueda supuestamente súper rápida [math] \ sin [/ math] y [math] \ cos [/ math].
- ¿Es [math] \ infty ^ \ infty [/ math] una forma indeterminada?
- ¿Es [math] \ frac {a} {b} = \ frac {(a + n)} {(b + N)} [/ math] verdadero?
- ¿Qué tipo de matemática necesitas saber para entender el cálculo?
- ¿Existen otros ‘lenguajes’ basados en la lógica como las matemáticas?
- ¿Qué porcentaje de todas las matemáticas puede aspirar a entender hoy?
Entonces, las multiplicaciones [math] 3 \ log_2 n [/ math] son definitivamente más lentas que las multiplicaciones [math] \ log_2 n + 5 [/ math] + una división + tres funciones trigonométricas de tiempo constante si dejamos [math] n [/ las matemáticas] se vuelven lo suficientemente grandes. Pero si [math] n [/ math] es grande, entonces estamos perdiendo precisión en nuestras funciones trigonométricas rápidas basadas en la búsqueda de tablas. ¿Cuánto cuesta hacerlo con precisión calculando tantos bits de las funciones trigonométricas como necesitemos?
Si usamos un algoritmo como CORDIC – Wikipedia, entonces tenemos que hacer dos multiplicaciones por iteración (más algunos cambios y sumas) y necesitamos tantas iteraciones como bits en [math] r ^ n [/ math]. Este es un impuesto pesado, porque ese número de iteraciones puede estimarse como [math] \ log_2 r ^ n [/ math] [math] = n \ log_2 r [/ math] y [math] O (n) [/ matemáticas] multiplicaciones es mucho peor que [matemáticas] O (\ log n) [/ matemáticas].
Entonces, de Moivre realmente solo nos da una aceleración si estamos satisfechos con que los “pocos” bits superiores sean correctos. (Tal vez hasta 64 usando la implementación incorporada de un procesador Intel.) Si esa es toda la precisión entera que necesitamos, entonces la conversión a punto flotante y viceversa seguido de redondeo también funcionará para los enteros gaussianos. Pero los intentos de calcular suficientes bits de precisión en [matemática] \ sen n \ theta [/ matemática] y [matemática] \ cos n \ theta [/ matemática] frustrarán cualquier intento de obtener una aceleración para grandes [matemática] n [/ matemáticas].