1/2给出0.5,但sqrt(-1)给出DomainError

时间:2016-03-30 14:40:08

标签: julia

这是关于朱莉娅设计的问题。在Julia中,1/2给出了0.5,并且通常整数除法返回一个浮点数,因此4/22.0。这似乎是合理的。

我想知道为什么同样的推理不适用于sqrt。也就是说,对我来说,sqrt 总是总是返回Complex的一致性要求,特别是sqrt(-1)应该返回im(或-im },但这是另一个讨论)。但是,sqrt(-1)DomainError

或者至少应该有sqrt的版本返回复杂的根(就像分区一样,你有div/)。

所以,有两个问题:

  1. 这个设计决定(/sqrt的不一致处理)之间的原因是什么?
  2. 是否有sqrt的版本返回复杂的平方根?

2 个答案:

答案 0 :(得分:7)

你应该阅读文档:)

sqrt(-1)

错误:DomainError:如果使用复杂参数调用,sqrt将仅返回复杂结果。尝试sqrt(complex(x))。  在sqrt at math.jl:146

所以你需要的是因为im被定义为sqrt(-1)并且你需要sqrt(-1)你可以这样做..

 sqrt(complex(im^2))

或只是:

sqrt(complex(-1))

答案 1 :(得分:1)

它实际上在complex numbers

的文档中
julia> sqrt(-1)
ERROR: DomainError:
sqrt will only return a complex result if called with a complex argument. Try sqrt(complex(x)).
in sqrt at math.jl:146

julia> sqrt(-1 + 0im)
0.0 + 1.0im

或者,或者:

julia> sqrt(complex(-1))
0.0 + 1.0im

简而言之,为了得到负数sqrt的正确答案,它必须是复杂的类型。