提示:《Python数学编程》练习系列往期笔记:
Day1:《Python数学编程》练习-day001:斐波那契序列
Day2:《Python数学编程》练习-day002:分数操作
Day3:《Python数学编程》练习-day003: 基本数学运算
什么是复数?
这里摘抄自中国物理研究所 陆俊《复数与复数测量学问录》的上一段话:
经过了零、负数和无理数的引入,人类对数的认识从自然数逐渐延拓发展到实数,基本完成了数轴上的点和对自然数进行有限或无限次加减乘除组合运算结果之间的完整且不重复的对应关系,然而,在求解二次或三次方程根等问题的道路上,随着负数的平方根并不对应某个实数这个新情况,一开始被人们当做不自然的东西直接抛弃不管,现在看来是实数存在开方运算不能自我封闭的缺陷,后来通过对-1平方根(通常被记作 i)为虚数单位的重新定义,将数的概念从基本实数拓展到一实一虚的数对构成的复数,终于完成了加减乘除乘方开方及其有限与无限混合运算结果的封闭定义。
提示:这里有一篇比很好的博文《Python复数表示表示和计算》,我放在这里作为补充和学习所用。
1.Python除了支持实数外,还支持复数,相比在数学符号中常用字母i表示虚部,在Python中复数的虚部是由字母 j 或 **J **标识。
例如,数学符号下复数1+2i, 在Python中的表示为:
a = 1 + 2j
print(type(a))
>>> <class 'complex'>
对复数使用type()函数时,Python显示的结果是复数类型的对象。
2.除直接表示外,还可以使用 complex()函数定义复数(复数英文单词是complex number):
a = complex(1, 2)
print(a)
>>> (1+2j)
使用complex()函数对复数定义时,是将复数的实部和虚部作为两个参数传递给了函数。
复数的加减运算也可以用实数相同的方式对复数进行加减运算。
Python代码如下:
a = 1 + 2j
b = complex(3, 4)
c = b - a
d = a + b
print(c, d)
>>> (2+2j) (4+6j)
复数的乘法和除法也可以进行如加法和减法类似的操作。
代码如下:
# a, b见于1.加减运算
e = b * a
f = b / a
print(e, f)
>>> (-5+10j) (2.2-0.4j)
1.模(%)和向下取整除法(//)操作对复数无效。
另外,可以通过real属性和imag属性对复数的实部和虚部进行提取,例如:
f.real
>>> 2.2
f.imag
>>> -0.4
2.复数的实部和虚部均为浮点数,借助实部和虚部,可以通过以下公式计算复数的模(modulus of complex numbers):
x 2 + y 2 \sqrt{x^{2}+y^{2}}\, x2+y2
其 中 , x 表 示 复 数 的 实 部 , y 表 示 虚 部 其中,x表示复数的实部,y表示虚部 其中,x表示复数的实部,y表示虚部
在Python中的计算如下:
mod = (f.real ** 2 + f.imag ** 2) ** 0.5
print(mod)
>>> 2.23606797749979
3.此外,还可以使用abs()函数对复数的模进行计算,而使用实数作为参数调用时,abs()函数返回值是绝对值,对于使用复数作为参数调用时,abs()函数返回的则是复数的模:
abs(f)
>>> 2.23606797749979