美文网首页
Python程序设计——复数运算(包括极坐标转换)

Python程序设计——复数运算(包括极坐标转换)

作者: 闪烁的量子 | 来源:发表于2020-02-17 11:33 被阅读0次

笔者本身是电气工程及其自动化专业出身,在平时的工作学习过程中,经常需要进行复数的运算以及矩阵相关的运算,但是奈何我实在是用不习惯matlab,一方面,matlab软件动辄十几个G这么大;另一方面,并且在嵌入式系统或者树莓派之类的系统上,更是不可能安装matlab这样的软件,因此,笔者便着手于Python语言的科学计算能力的探索。

复数运算

在数学上,形如a + bi 或者在工程上形如 a + bj的数叫做复数,a称为实部,b称为虚部。
在python语言中,遵循工程上的定义形式,直接在python文本中输入

x = 1 + 1j

不需要额外引入任何库文件,直接这样输入就实现了复数变量的定义

print(type(x))
print(x)

通过print方法我们输出变量x的数据类型和x变量的值

<class 'complex'>
(1+1j)

输出结果如上图所示,不难发现,变量x属于python中的复数类型。特别值得注意的是

1、虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起构成一个复数
2、复数由实数部分和虚数部分构成
3、表示虚数的语法:re+im j
4、实数部分和虚数部分都是浮点数
5、虚数部分必须有后缀j或J

这样我们就可以把复数当作普通的数值进行运算了。
但是很多时候,我们可能需要求得某个复数的共轭复数或者模值甚至是转换为极坐标形式。

求共轭复数

对于python内置的complex类来说,可以通过调用conjugate()方法求得某个复数的共轭复数

x = 1 + 1j
y = x.conjugate()
print(y)

这样我们就可以得到

(1-1j)

符合我们的预期

求复数模值

通过调用python内置的complex类里面的__abs__()方法,可以得到某个复数的模值

x = 1 + 1j
y = x.__abs__()
print(y)

这样我们就得到了模值

1.4142135623730951

将复数进行标准形式与极坐标模式的互换

目前在python内置的complex类型中,没有办法直接通过调用方法进行互换,因此我们需要引入cmath标准库。

from cmath import *

引入完cmath标准库之后,就可以调用rect()方法和polar()方法,前者是将一个极坐标形式的复数转换为标准形式的复数;后者是将一个标准形式的复数转换为极坐标形式的复数

x = 1 + 1j
a = polar(x)
print(a)

上面的代码可以将变量x转换为极坐标形式的复数,其输出结果如下所示:

(1.4142135623730951, 0.7853981633974483)

返回值是一个元组类型,第一项是模值,第二项是相角,相角采用的是弧度制,这一点需要特别注意!

接下来我们尝试将极坐标形式的复数转换为标准形式的复数,因此我们需要调用rect()方法,这个方法需要接收两个参数,第一个参数是幅值,第二个参数是相角,这里面的相角也是弧度制,例如下面的代码将上面例子中的极坐标形式的变量a转换为标准形式的复数

x = 1 + 1j
a = polar(x)  # 转换为极坐标形式
b = rect(a[0], a[1])  # 转换为标准形式
print(b)  # 输出变量b的值
print(type(b))  # 输出变量b的类型

输出结果如下所示:

(1.0000000000000002+1.0000000000000002j)
<class 'complex'>

可以看到输出结果符合预期,至于并不绝对等于原来x变量的原因还是因为计算机对浮点数的精度影响,实际使用过程中忽略就可以了。
通过输出变量b的类型,我们发现变成了python内置的complex类型,因此可以继续参与后续的数学运算了!

本教程持续更新!欢迎点赞关注!

相关文章

  • Python程序设计——复数运算(包括极坐标转换)

    笔者本身是电气工程及其自动化专业出身,在平时的工作学习过程中,经常需要进行复数的运算以及矩阵相关的运算,但是奈何我...

  • python 数字

    整数 复数 浮点数 进制表示 进制转换 运算

  • Python中的位运算

    Python中的位运算是程序设计中对位模式或二进制的一元和二元操作。 按位运算就是把数字转换为机器语言---以二进...

  • python3-基础篇-常用操作

    整理了一些常用的python3基础操作: 包括:if判断、逻辑运算、while循环、for循环、类型转换、列表增删...

  • 高等数学预备知识

    极坐标 极坐标系是由极轴、极径组成极坐标系上的点表示为(ρ,θ)极坐标系上的点转换成直角坐标直角坐标系上的点转换成...

  • 1.Python-基础语法

    零散知识点 一.Python数据类型转换 二.Python算术运算符 三.Python比较运算符 == != > ...

  • 推荐几本非常全的Python入门基础学习好书

    一、Python基础教程 《图灵程序设计丛书:Python基础教程(第2版 修订版)》包括Python程序设计的方...

  • Python表达式

    数学转换 其一为复数,则另一个自动转为复数 其一为浮点,则另一个自动转为浮点 两者都是整数,不做转换 表达式 运算...

  • 基于C++的操作符重载实现编译多态——复数的加法运算

    操作符重载实现编译多态——复数的加法运算,VC++基础级的复数运算例子,主要是使用重载的+运算符实现复数与复数的相...

  • python标准数据类型--数值

    数值类型: python支持的数值类型有整数、浮点数和复数(a+bj) 数值操作 基本四则运算:+-*/,除法运算...

网友评论

      本文标题:Python程序设计——复数运算(包括极坐标转换)

      本文链接:https://www.haomeiwen.com/subject/ncfbfhtx.html