單位的第n個根是多項式方程x^n = 1
的解。 n = 2^k
是否有一個很好的已知算法,對於某些k
(即n是2的冪)?2的冪的統一的精確根源?
有許多用於計算統一的第n個根的算法。例如,這是一個Python實現,使用Numpy的「根」函數返回一個根數組。
import numpy as np;
def omegas(n):
#make the n-degree polynomial and solve for its roots
poly = [0]*(n+1)
poly[0] = -1; #constant
poly[-1] = 1; #highest degree
return np.roots(poly)
您也可以使用三角函數:
import numpy as np
import cmath
def trig_omegas(n):
return np.array([cmath.rect(1,x*np.pi) for x in range(n)])
但精度給我留下缺憾。這就是n = 4的答案:
array([-1.+0.j, 0.+1.j, -0.-1.j, 1.+0.j])
#or, in counterclockwise order
array([ 1.+0.j, 0.+1.j, -1.+0.j, -0.-1.j])
而這是上述功能的結果。
>>> omegas(4)
array([ -1.00000000e+00+0.j, 8.32667268e-17+1.j, 8.32667268e-17-1.j,
1.00000000e+00+0.j])
>>> trig_omegas(4)
array([ 1. +0.00000000e+00j, -1. +1.22464680e-16j, 1. -2.44929360e-16j,
-1. +3.67394040e-16j])
尾部零表示最後有一個小錯誤。 omegas(4)的第一個入口實際上比-1小一點。
OMEGAS(4)[0] (-1.0000000000000004 + 0J)
有沒有更好的方式來獲得的2權力的統一的根源是什麼?
這些根是可以修復的,所以你可以用平方根表示它們。你需要所有的「2^n」根嗎?或者只是最小正角度的那個?這個小錯誤真的很糟嗎? – Teepeemm
讓我們說是的,爲了這個問題,我需要所有的「2^k」。我們還要說,我希望數值與浮點數一樣準確。平方根的總和可能會失去準確性。 – leewz
用半角公式,也許你可以導出2 **( - n)pi的sin和cos的精確表達式? –