在 Julia 中计算单位的 n 根
Calculating n-roots of unity in Julia
我希望在 Julia 中有一个基于 $n$ 的算法,这样它就可以生成 n 个单位根。
(1,w^{1}, w^{2}, ..., w^{n-1}。这样对于每个 1\leq i\leq n,我们有那 (w^{i})^{n}-1=0 )
非常感谢您的合作,
julia> roots(n) = map(cispi, range(0, 2, length=n+1)[1:end-1])
roots (generic function with 1 method)
julia> roots(8)
8-element Vector{ComplexF64}:
1.0 + 0.0im
0.7071067811865476 + 0.7071067811865476im
0.0 + 1.0im
-0.7071067811865476 + 0.7071067811865476im
-1.0 + 0.0im
-0.7071067811865476 - 0.7071067811865476im
0.0 - 1.0im
0.7071067811865476 - 0.7071067811865476im
你可以写成roots_exp(n) = exp.(im .* range(0, 2pi, length=n+1)[1:end-1])
,但是对于纯虚构的论证,cis
比exp
稍微更有效率。并且 cispi
稍微更准确一些,或者至少更有可能在您期望的时候为您提供漂亮的整数,如上所示。
我希望在 Julia 中有一个基于 $n$ 的算法,这样它就可以生成 n 个单位根。
(1,w^{1}, w^{2}, ..., w^{n-1}。这样对于每个 1\leq i\leq n,我们有那 (w^{i})^{n}-1=0 )
非常感谢您的合作,
julia> roots(n) = map(cispi, range(0, 2, length=n+1)[1:end-1])
roots (generic function with 1 method)
julia> roots(8)
8-element Vector{ComplexF64}:
1.0 + 0.0im
0.7071067811865476 + 0.7071067811865476im
0.0 + 1.0im
-0.7071067811865476 + 0.7071067811865476im
-1.0 + 0.0im
-0.7071067811865476 - 0.7071067811865476im
0.0 - 1.0im
0.7071067811865476 - 0.7071067811865476im
你可以写成roots_exp(n) = exp.(im .* range(0, 2pi, length=n+1)[1:end-1])
,但是对于纯虚构的论证,cis
比exp
稍微更有效率。并且 cispi
稍微更准确一些,或者至少更有可能在您期望的时候为您提供漂亮的整数,如上所示。