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

bec*_*cko 2 julia

这是关于朱莉娅设计的问题.在Julia中,1/2给出0.5,并且通常整数除法返回一个Float,所以4/22.0.这看似合理.

我想知道为什么没有适用同样的推理sqrt.也就是说,对我来说sqrt应该始终返回的一致性要求,Complex特别是sqrt(-1)应该返回im(或者-im,这是另一个讨论).但是,sqrt(-1)给出DomainError.

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

那么,有两个问题:

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

Mar*_*kic 7

你应该阅读文档:)

sqrt(-1)
Run Code Online (Sandbox Code Playgroud)

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

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

 sqrt(complex(im^2))
Run Code Online (Sandbox Code Playgroud)

要不就 :

sqrt(complex(-1))
Run Code Online (Sandbox Code Playgroud)

  • 甚至不是文档 - 它出现在错误消息中. (4认同)