在 Julia 中计算统一的 n 根

问题描述

我想在 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]),但对于纯虚参数,cisexp 稍微高效一些。并且 cispi 稍微更准确,或者至少更有可能在您期望的时候为您提供漂亮的整数,如上所示。