temp
Out[53]: -0.7037246201969727
type(temp)
Out[54]: float
type(-0.7037246201969727)
Out[55]: float
temp**(1.0/3)
Out[56]: (0.4447380144139145+0.7703088370221993j)
-0.7037246201969727**(1.0/3)
Out[57]: -0.8894760288278287
1、如图,为什么temp(1.0/3)求出来的结果是复数,而-0.7037246201969727(1.0/3)求出来的结果没有问题。该怎么解决
2、如果用算术库的话该怎么写呢,用math.pow()总是报错,求帮忙解决
这是一个数学问题,只不过Python原生支持复数罢了。
从复分析上来讲,开方运算本来就是一个多值函数。
以你给出的temp为例,因为是开三次方,所以有三个根,一个实根,两个共轭复根:
直角坐标可能看不明白这三个值的关系,让我们表示成极坐标形式:
很容易看出,这三个根的关系是:模相等,幅角分别相差2π/3。
经过上面的一番观察,可以发现,实根可以直接用任意复根的模(或模的相反数)表示。
用Python标准库来表示这个过程,就是这样的: