首页 > 解决方案 > 计算复数的能力时出现 Julia 错误

问题描述

我是 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.

特别是,当我运行 for 循环并打印 each 的值(i,j)时,在 (i=2,j=1) 处会发生相同的错误。如果有人可以帮助我,我将不胜感激。我的代码似乎有什么问题?我该如何克服这个错误?

先感谢您。

标签: julia

解决方案


像这样使用浮点数作为基础(这是错误消息建议您执行的操作):

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

或者像这样

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

错误来自此定义:

^(z::Complex{<:Integer}, n::Integer) = power_by_squaring(z,n) # DomainError for n<0

推荐阅读