python中复数的立方根

python中复数的立方根,python,math,complex-numbers,Python,Math,Complex Numbers,在python中如何计算复数的立方根?目前,我找到的唯一方法是根据答案,但我正在尝试从代码中删除所有import语句 当前方法,此处复制: 导入数学 def cuberoot(z): z=复数(z) x=z.real y=z.imag mag=abs(z) arg=math.atan2(y,x) resMag=mag**(1/3) resArg=[(arg+2*math.pi*n)/3.对于范围(1,4)中的n) 返回[resMag*(数学cos(a)+数学sin(a)*1j)表示重新存储中的

在python中如何计算复数的立方根?目前,我找到的唯一方法是根据答案,但我正在尝试从代码中删除所有
import
语句


当前方法,此处复制:

导入数学
def cuberoot(z):
z=复数(z)
x=z.real
y=z.imag
mag=abs(z)
arg=math.atan2(y,x)
resMag=mag**(1/3)
resArg=[(arg+2*math.pi*n)/3.对于范围(1,4)中的n)
返回[resMag*(数学cos(a)+数学sin(a)*1j)表示重新存储中的a]

Python内置的
复合体
可以处理开箱即用的根目录查找:

def cube_root(v):
    if not isinstance(v, complex):
        v = complex(v, 0)
    return v ** (1.0 / 3.0)
示例:

cube_root(-3)
(0.7211247851537043+1.2490247664834064j)

cube_root(complex(1, -2))
(1.2196165079717578-0.47171126778938893j)

您在上面复制的函数是获取所有三个根的一种方法。

Python内置的
complex
可以处理从盒子中找到一个根的问题:

def cube_root(v):
    if not isinstance(v, complex):
        v = complex(v, 0)
    return v ** (1.0 / 3.0)
示例:

cube_root(-3)
(0.7211247851537043+1.2490247664834064j)

cube_root(complex(1, -2))
(1.2196165079717578-0.47171126778938893j)

您在上面复制的函数是获得所有三个根的一种方法。

计算一并与1的立方根相乘

cuberoots_of_1 = 1, complex(-.5, .75**.5), complex(-.5, -.75**.5)

def cuberoot(z):
    cuberoot = complex(z)**(1/3)
    return [cuberoot * cr1 for cr1 in cuberoots_of_1]
测试:

对您的进行同样的操作不太准确:

(-1.999999999999996+3.000000000000002j) 4.572178254219406e-15
(-1.9999999999999933+3.000000000000004j) 7.768388458966724e-15
(-1.9999999999999956+3.0000000000000013j) 4.636427468134552e-15

计算1并乘以1的立方根

cuberoots_of_1 = 1, complex(-.5, .75**.5), complex(-.5, -.75**.5)

def cuberoot(z):
    cuberoot = complex(z)**(1/3)
    return [cuberoot * cr1 for cr1 in cuberoots_of_1]
测试:

对您的进行同样的操作不太准确:

(-1.999999999999996+3.000000000000002j) 4.572178254219406e-15
(-1.9999999999999933+3.000000000000004j) 7.768388458966724e-15
(-1.9999999999999956+3.0000000000000013j) 4.636427468134552e-15

这里是一种使用旋转因子
i^(2/3)
的方法


这里是一种使用旋转因子
i^(2/3)
的方法


这听起来更像是一个数学问题,而不是编程问题。一旦找到了不使用任何函数计算立方根的公式,只需用Python编写代码即可。是一个更适合询问公式的地方。@hilberts_Digging_问题这大概就是他返回3个数字列表的原因。在不导入
数学
cmath
模块的情况下,如何将复数传递给函数?@hilberts_Digging_问题是,这就是为什么会返回一个列表
math=\uuuu import\uuuu('math')
…现在您没有任何导入语句:这听起来更像是一个数学问题,而不是编程问题。一旦找到了不使用任何函数计算立方根的公式,只需用Python编写代码即可。是一个更适合询问公式的地方。@hilberts_Digging_问题这大概就是他返回3个数字列表的原因。在不导入
数学
cmath
模块的情况下,如何将复数传递给函数?@hilberts_Digging_问题是,这就是为什么会有一个返回的列表
math=\uuu import\uuuu('math')
…现在您没有任何导入语句:如响应中所述,这不适用于负数。@克莱姆森注意到,答案显式地将
v
转换为复杂,因此链接中的问题不适用。这不适用于负数,正如回复中所述。@Clemson注意到,答案明确地将
v
转换为复杂,因此链接中的问题不适用。