前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Python完全自学教程》免费在线连载3.5

《Python完全自学教程》免费在线连载3.5

作者头像
老齐
发布2022-04-01 10:03:30
4250
发布2022-04-01 10:03:30
举报
文章被收录于专栏:老齐教室

★本文是《Python 完全自学教程》第3章第5节内容。关于本书的完整内容,请参阅:www.itdiffer.com”

3.5 复数

数学中的复数是用虚数单位 创建的一类数,其中 ,通常的形式为 。在 Python 中也能定义复数,但表示虚数单位的字母与数学中的习惯有别。

代码语言:javascript
复制
>>> c = 3 + 4j    # (1)
>>> type(c)
<class 'complex'>

按照复数的数学形式,使用注释(1)创建了 Python 中的复数( Complex ),注意,其中 4j 并不是表示 4 * j 。Python 中的复数与前面所学习的浮点数、整数都是一种对象类型。

如果创建只有一个虚数单位的复数,即数学上的 i ,不能这样做(这是什么原因?读者是否能根据已经学过的知识给予解答):

代码语言:javascript
复制
>>> j
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'j' is not defined

必须要将前面的系数写上,即:

代码语言:javascript
复制
>>> 1j
1j
>>> type(1j)
<class 'complex'>

此外,在 Python 内置函数中有与类型同名的 complex() 函数,也可以用来创建复数对象。

代码语言:javascript
复制
>>> complex(3, 4)
(3+4j)
>>> complex(0, 0)
0j

复数、浮点数、整数,在数学上,它们能够依据算术运算的法则进行运算,在 Python 中也一样。

代码语言:javascript
复制
>>> a = complex(2, 5)
>>> a
(2+5j)
>>> (a + 3.4) * 2
(10.8+10j)
>>> a / 3
(0.6666666666666666+1.6666666666666667j)
>>> a ** 2
(-21+20j)
>>> pow(a, 2)
(-21+20j)

上面的演示中,内置函数 pow() 的参数可以是复数,但不是所有的内置函数都接受复数,请读者特别注意其文档中的说明。在3.3.2节所学习过的 math 模块的函数,都不支持复数。若要对复数使用初等函数,可以用另外一个名为 cmath 的模块(官方文档:https://docs.python.org/3/library/cmath.html )。

代码语言:javascript
复制
>>> import cmath
>>> dir(cmath)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']

dir() 函数列出了 cmath 中的函数和常数名称,这里的函数接受整数、浮点数、复数作为其参数。

代码语言:javascript
复制
>>> cmath.sin(a)
(67.47891523845588-30.879431343588244j)
>>> cmath.sin(1)
(0.8414709848078965+0j)

还可以通过复数对象的 conjugate 方法和 imag, real 属性,分别得到相应的共轭、虚部和实部:

代码语言:javascript
复制
>>> a.imag    # 虚部
5.0
>>> a.real    # 实部
2.0
>>> a.conjugate()    # 共轭
(2-5j)

最后,留个读者思考一个小问题:

代码语言:javascript
复制
>>> abs(-7)
7
>>> abs(3.14)
3.14
>>> abs(3 + 4j)
5.0
>>> abs(3 - 4j)
5.0

内置函数 abs() 的参数如果是浮点数或整数,则返回其绝对值;如果是负数,返回值是什么含义?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.5 复数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档