def root_arith(x, n):
assert x >= 0
assert isinstance(n, int) and n >= 1
return x ** (1 / n)
实数的完整根如下。对于偶数n,仅返回正根值。这是一个经典:
def root_real(x, n):
assert isinstance(n, int) and n >= 1
if n % 2 != 0 and x < 0:
return -((-x) ** (1 / n))
assert x >= 0
return x ** (1 / n)
实数的实根是一个多值函数。对于奇数n有一个值,对于偶数n有两个值:
def root_real(x, n):
assert isinstance(n, int) and n >= 1
if n % 2 == 0:
if x < 0:
return ()
if x == 0:
return 0,
y = x ** (1 / n)
return y, -y
if x < 0:
return -((-x) ** (1 / n)),
return x ** (1 / n),
对于复数,n 次方根有n 个复数值:
import cmath
def root_complex(x, n):
assert isinstance(n, int) and n >= 1
mag, phi = cmath.polar(x)
mn = mag ** (1 / n)
pn = phi / n
return tuple(cmath.rect(mn, pn + i * 2 * cmath.pi / n) for i in range(n))
对于奇数n ,任何x都存在唯一的根。
对于偶数n ,根仅对非负x ≥ 0有定义。在这种情况下,甚至有两个根,只是符号不同。
为了避免所有微妙之处,我们定义一个仅适用于非负x的算术根,并且始终返回一个非负值:
实数的完整根如下。对于偶数n,仅返回正根值。这是一个经典:
实数的实根是一个多值函数。对于奇数n有一个值,对于偶数n有两个值:
对于复数,n 次方根有n 个复数值:
运行