这是关于朱莉娅设计的问题。在Julia中,1/2
给出了0.5
,并且通常整数除法返回一个浮点数,因此4/2
是2.0
。这似乎是合理的。
我想知道为什么同样的推理不适用于sqrt
。也就是说,对我来说,sqrt
总是总是返回Complex
的一致性要求,特别是sqrt(-1)
应该返回im
(或-im
},但这是另一个讨论)。但是,sqrt(-1)
会DomainError
。
或者至少应该有sqrt
的版本返回复杂的根(就像分区一样,你有div
和/
)。
所以,有两个问题:
/
与sqrt
的不一致处理)之间的原因是什么?sqrt
的版本返回复杂的平方根?答案 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
的正确答案,它必须是复杂的类型。