Python 基础教程(3rd ed)(11):快速上手:基础知识 1.9.1

阅读数:23 2019 年 10 月 26 日 09:30

Python基础教程(3rd ed)(11):快速上手:基础知识 1.9.1

(模块:cmath和复数)

函数sqrt用于计算平方根。下面来看看向它提供一个负数的情况:

复制代码
>>> from math import sqrt
>>> sqrt(-1)
Traceback (most recent call last):
...
ValueError: math domain error

在有些平台上,结果如下:

复制代码
>>> sqrt(-1)
nan

注意 nan具有特殊含义,指的是“非数值”(not a number)。

如果我们坚持将值域限定为实数,并使用其近似的浮点数实现,就无法计算负数的平方根。负数的平方根为虚数,而由实部和虚部组成的数为复数。Python 标准库提供了一个专门用于处理复数的模块。

复制代码
>>> import cmath
>>> cmath.sqrt(-1)
1j

注意到这里没有使用from ... import ...。如果使用了这种import命令,将无法使用常规函数sqrt。类似这样的名称冲突很隐蔽,因此除非必须使用from版的import命令,否则应坚持使用常规版import命令。

1j是个虚数,虚数都以j(或J)结尾。复数算术运算都基于如下定义:-1的平方根为1j。这里不深入探讨这个主题,只举一个例子来结束对复数的讨论:

复制代码
>>> (1 + 3j) * (9 + 4j)
(-3 + 31j)

从这个示例可知,Python 本身提供了对复数的支持。

注意 Python 没有专门表示虚数的类型,而将虚数视为实部为零的复数。

评论

发布