Python中Complex类型

什么是复数?

1. 复数是"双部分"的数字

想象一下,你有一块巧克力🍫和一颗糖🍬。复数就像同时记录巧克力数量和糖果数量的"超级数字"!

比如:3 + 4j

  • 3 是巧克力数量(实数部分
  • 4j 是糖果数量(虚数部分j是标记,就像糖果袋子上的标签)

2. 为什么需要复数?

问题 :你学过负数吗?比如 2²=4 ,那什么数的平方是 -1 呢?

  • 普通数字(实数)做不到,所以数学家发明了 j ,规定 j² = -1
    就像超人🦸♂️会飞一样,j 是数学里的"超级符号"!

3. 复数的样子

  • 例子1:2 + 5j → 2块巧克力 + 5颗糖果
  • 例子2:-1j → 没有巧克力,欠了1颗糖果(虚数可以是负数哦!)

4. 复数的运算

(1) 加法:同类相加

  • 例子
    (3 + 2j) + (1 + 4j) = (3+1) + (2j+4j) = 4 + 6j
    → 巧克力总数是4块,糖果总数6颗!

(2) 减法:同类相减

  • 例子
    (5 + 3j) - (2 + 1j) = (5-2) + (3j-1j) = 3 + 2j

(3) 乘法:用分配律

  • 例子
    (1 + 2j) × (3 + 4j)
    = 1×3 + 1×4j + 2j×3 + 2j×4j
    = 3 + 4j + 6j + 8j²
    但 j² = -1,所以变成:3 + 10j + 8×(-1) = -5 + 10j

5. 复数画在纸上

把复数想象成地图上的点📍:

  • 横坐标是巧克力数量(实部)
  • 纵坐标 是糖果数量(虚部)
    比如:3 + 4j 就在 右3格,上4格 的位置。

在 Python 中,complex 是用于表示复数 的内置类型。复数的形式为 a + bj(或 a + bJ),其中:

  • a实部(实数部分),
  • b虚部 (虚数部分,jJ 表示虚数单位)。

核心特性

  1. 直接定义复数

    通过字面量直接赋值:

    ini 复制代码
    python
    z = 3 + 4j   # 实部 3,虚部 4
  2. 使用 complex() 构造函数

    通过 complex(real, imag) 创建:

    ini 复制代码
    python
    z = complex(2, -5)  # 等效于 2 - 5j
  3. 属性访问

    • z.real:获取实部。
    • z.imag:获取虚部。
    php 复制代码
    python
    z = 1 + 3j
    print(z.real)   # 输出 1.0
    print(z.imag)   # 输出 3.0
  4. 共轭复数

    使用 .conjugate() 方法获取共轭复数(虚部取反):

    ini 复制代码
    python
    z = 2 + 5j
    print(z.conjugate())  # 输出 (2-5j)

运算示例

1. 基础运算(加减乘除)

scss 复制代码
python
a = 1 + 2j
b = 3 - 4j

# 加法
print(a + b)  # (4-2j)

# 乘法
print(a * b)  # (11+2j)  # 计算:1*3 + 1*(-4j) + 2j*3 + 2j*(-4j) = 3 -4j +6j -8j² = 3 +2j +8(因 j²=-1)

# 除法
print(a / b)  # (-0.2 + 0.4j)

2. 幂运算

scss 复制代码
python
z = 1 + 1j
print(z**2)  # 输出 (0+2j)  # 计算:(1+1j)*(1+1j) = 1 + 2j + j² = 1 +2j -1 = 2j

3. 数学函数

复数支持 cmath 模块中的数学函数(如 sqrt, exp 等):

ini 复制代码
python
import cmath

z = -1
print(cmath.sqrt(z))  # 输出 1j(虚数解)

注意事项

  • 虚数单位必须用 jJ

    ini 复制代码
    python
    z = 3 + 4i   # 错误!Python 中虚数单位必须是 j
  • 复数不能直接比较大小

    bash 复制代码
    python
    print(3+4j > 1+2j)  # 报错:TypeError(复数无序)
  • 类型转换

    • int(z)float(z) 会抛出错误(复数无法直接转实数)。

    • 可从实部或虚部分别提取数值:

      ini 复制代码
      python
      z = 5 + 0j
      if z.imag == 0:
          real_value = int(z.real)  # 输出 5

实际应用场景

复数常用于科学计算、信号处理、量子力学等领域。例如:

  1. 傅里叶变换

    频谱分析中复数表示频率分量:

    ini 复制代码
    python
    import numpy as np
    
    # 生成复数信号
    signal = np.array([1+2j, 3-1j, 0+4j])
    fft_result = np.fft.fft(signal)
  2. 电路分析

    阻抗计算(实部为电阻,虚部为电抗):

    ini 复制代码
    python
    impedance = 50 + 30j  # 50Ω电阻 + 30Ω感抗
    current = 2 + 0j      # 2A电流
    voltage = impedance * current  # (100+60j)伏

总结

complex 类型是 Python 处理复数的核心工具,通过清晰的属性(.real/.imag)和方法(如 .conjugate())简化了复数操作。它在科学和工程领域的数学计算中至关重要。

相关推荐
失败尽常态5233 分钟前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447745 分钟前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农5 分钟前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿11 分钟前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Leuanghing34 分钟前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
xinxiyinhe2 小时前
如何设置Cursor中.cursorrules文件
人工智能·python
诸神缄默不语2 小时前
如何用Python 3自动打开exe程序
python·os·subprocess·python 3
橘子师兄3 小时前
分页功能组件开发
数据库·python·django
Logintern093 小时前
使用VS Code进行Python编程的一些快捷方式
开发语言·python
Multiple-ji3 小时前
想学python进来看看把
开发语言·python