我是 Julia 的初学者,正在使用它来计算复数的幂作为我运行的更大科学任务中的子程序
array = [1im^(i-j) for i in 1:5, j in 1:5]
但我得到以下信息DomainError:
DomainError with -1:
Cannot raise an integer x to a negative power -1.
Convert input to float.
Run Code Online (Sandbox Code Playgroud)
特别是,当我运行 for 循环并打印每个 的值时(i,j),同样的错误发生在 (i=2,j=1) 处。如果有人可以帮助我,我将不胜感激。我的代码似乎有什么问题?我怎样才能克服这个错误?
先感谢您。
像这样使用浮点数作为基础(这是错误消息建议您执行的操作):
julia> [(1.0im)^(i-j) for i in 1:5, j in 1:5]
5×5 Matrix{ComplexF64}:
1.0+0.0im 0.0-1.0im -1.0-0.0im -0.0+1.0im 1.0+0.0im
0.0+1.0im 1.0+0.0im 0.0-1.0im -1.0-0.0im -0.0+1.0im
-1.0+0.0im 0.0+1.0im 1.0+0.0im 0.0-1.0im -1.0-0.0im
-0.0-1.0im -1.0+0.0im 0.0+1.0im 1.0+0.0im 0.0-1.0im
1.0-0.0im -0.0-1.0im -1.0+0.0im 0.0+1.0im 1.0+0.0im
Run Code Online (Sandbox Code Playgroud)
或者像这样
julia> [float(im)^(i-j) for i in 1:5, j in 1:5]
5×5 Matrix{ComplexF64}:
1.0+0.0im 0.0-1.0im -1.0-0.0im -0.0+1.0im 1.0+0.0im
0.0+1.0im 1.0+0.0im 0.0-1.0im -1.0-0.0im -0.0+1.0im
-1.0+0.0im 0.0+1.0im 1.0+0.0im 0.0-1.0im -1.0-0.0im
-0.0-1.0im -1.0+0.0im 0.0+1.0im 1.0+0.0im 0.0-1.0im
1.0-0.0im -0.0-1.0im -1.0+0.0im 0.0+1.0im 1.0+0.0im
Run Code Online (Sandbox Code Playgroud)
错误来自此定义:
^(z::Complex{<:Integer}, n::Integer) = power_by_squaring(z,n) # DomainError for n<0
Run Code Online (Sandbox Code Playgroud)