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())简化了复数操作。它在科学和工程领域的数学计算中至关重要。

相关推荐
白日做梦Q9 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手23 分钟前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手31 分钟前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆36 分钟前
YOLOP车道检测
人工智能·python·算法
nimadan1237 分钟前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python
默默前行的虫虫42 分钟前
MQTT.fx实际操作
python
YMWM_1 小时前
python3继承使用
开发语言·python
JMchen1231 小时前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
亓才孓1 小时前
[Class类的应用]反射的理解
开发语言·python
小镇敲码人2 小时前
深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
c++·python·华为·cann