python - python中复数的立方根
问题描述
如何在python中计算复数的立方根?目前,我发现这样做的唯一方法是根据这个答案,但我正在尝试import
从我的代码中删除任何和所有语句。
当前方法,在此处转载:
import math
def cuberoot( z ):
z = complex(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. for n in range(1,4) ]
return [ resMag*(math.cos(a) + math.sin(a)*1j) for a in resArg ]
解决方案
计算一并乘以 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]
测试:
>>> cuberoot(-2 + 3j)
[(1.1532283040274223+1.0106429470939737j),
(-1.4518566183526649+0.49340353410400484j),
(0.2986283143252425-1.5040464811979786j)]
>>> for z in cuberoot(-2 + 3j):
print(z**3, abs(z**3 - (-2 + 3j)))
(-1.999999999999999+3j) 1.1102230246251565e-15
(-1.999999999999999+3j) 1.1102230246251565e-15
(-1.9999999999999982+2.9999999999999996j) 1.831026719408895e-15
对你做同样的事情不太准确:
(-1.999999999999996+3.000000000000002j) 4.572178254219406e-15
(-1.9999999999999933+3.000000000000004j) 7.768388458966724e-15
(-1.9999999999999956+3.0000000000000013j) 4.636427468134552e-15
推荐阅读
- macos - 重新启动我的 Mac 时 Chrome 会自动启动
- database - UML 类图多重性和 ER 图基数
- javascript - 如何从关联模型中获取对象?
- sas - 使用 SAS 宏创建动态数据集名称
- javascript - 复杂 Firestore 查询的替代方案
- forms - 什么是 copyWith,我如何在 Flutter 中使用它,它的用例是什么?
- spring - [qaf]使用testng xml运行黄瓜测试用例时如何与spring集成
- c# - 在 C#.net 中打印时应用程序冻结
- java - Junit / Java为void创建测试方法并出现异常
- android - 对于 Flutter,Expanded 和 GridView 有意外填充