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

相关推荐
时间醉酒2 分钟前
逻辑回归(四):从原理到实战-训练,评估与应用指南
人工智能·python·算法·机器学习·逻辑回归
计算机毕设残哥35 分钟前
紧跟大数据技术趋势:食物口味分析系统Spark SQL+HDFS最新架构实现
大数据·hadoop·python·sql·hdfs·架构·spark
MediaTea1 小时前
Python 编辑器:Visual Studio Code
开发语言·ide·vscode·python·编辑器
深蓝电商API1 小时前
HTML 解析入门:用 BeautifulSoup 轻松提取网页数据
前端·爬虫·python·beautifulsoup
前路不黑暗@1 小时前
Java:代码块
java·开发语言·经验分享·笔记·python·学习·学习方法
程序猿小D2 小时前
【完整源码+数据集+部署教程】【智慧工地监控】建筑工地设备分割系统: yolov8-seg-efficientViT
python·yolo·计算机视觉·数据集·yolov8·yolo11·建筑工地设备分割系统
努力也学不会java2 小时前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantLock
java·开发语言·人工智能·python·机器学习·reentrantlock
zl218786544810 小时前
Playwright同步、异步、并行、串行执行效率比较
开发语言·python·测试工具
larance10 小时前
asyncio数据流
python
eqwaak011 小时前
Flask实战指南:从基础到高阶的完整开发流程
开发语言·后端·python·学习·flask