Sagemath:`a=-1.0;(a) ^(1/3)`返回一个复数

Sagemath:`a=-1.0;(a) ^(1/3)`返回一个复数,math,sage,Math,Sage,运行以下代码段: a = -1.0 show(a^(1/3)) 给我一个(意外的)结果: 但是,运行以下命令: show(-1.0^(1/3)) 给我预期的结果−1.00000000000000 这是预期的行为吗?我是否误解了我所要求的计算?第一个版本计算-1的主立方根,这是一个复数 在第二个版本中,表达式-1.0^(1/3)相当于-(1.0^(1/3)),因为一元求反运算符的优先级低于求幂运算;因此它计算1的立方根,然后求反。第二个版本相当于-(1.0^(1/3)),因为一元减号的优先级低

运行以下代码段:

a = -1.0
show(a^(1/3))
给我一个(意外的)结果:

但是,运行以下命令:

show(-1.0^(1/3))
给我预期的结果
−1.00000000000000


这是预期的行为吗?我是否误解了我所要求的计算?

第一个版本计算-1的主立方根,这是一个复数


在第二个版本中,表达式
-1.0^(1/3)
相当于
-(1.0^(1/3))
,因为一元求反运算符的优先级低于求幂运算;因此它计算1的立方根,然后求反。

第二个版本相当于
-(1.0^(1/3))
,因为一元减号的优先级低于求幂。第一个结果实际上是正确的(或者说,三个正确答案中的一个)。数字-1有三个立方根,这是其中的一个。另请参阅。Wolfram Alpha返回第一个的值,这是多维数据集根的值。最简单的检查是简单地将得到的答案进行多维数据集。
show(-1.0^(1/3))