首页

▼ 算法合集

▼ 加密算法

▼ 凯撒密码

凯撒密码

▼ Hill密码算法

Hill密码算法

▼ 多项式哈希算法

多项式哈希算法

▼ Rail Fence Cipher

Rail Fence Cipher

▼ Graph算法

▼ 关节点

关节点

▼ Bellman-Ford算法

Bellman-Ford算法

▼ 广度优先搜索

广度优先搜索

▼ GraphBridges

桥接模式

▼ 深度优先搜索

深度优先搜索

▼ 检测循环

检测循环

▼ Dijkstra算法

Dijkstra算法

▼ Eulerian Path

欧拉路径

▼ Floyd-Warshall算法

Floyd-Warshall算法

▼ HamiltonianCycle

Hamiltonian Cycle

▼ Kruskal算法

Kruskal算法

▼ Prim算法

Prim算法

▼ 强连通分量

强连通分量

▼ 拓扑排序

拓扑排序

▼ Travelling Salesman Problem

Travelling Salesman

▼ 图像处理算法

▼ Seam Carving算法

内容感知缩放算法

▼ 链表

▼ 反向遍历

反向遍历

▼ GraphTraversal

GraphTraversal

▼ 数学算法

▼ 二进制浮点数

BinaryFloatingPoint

▼ 位操作

位操作算法

▼ 复数

复数

▼ 欧几里得算法

Euclidean Algorithm

▼ Euclidean Distance

欧几里得距离

▼ 阶乘算法

阶乘算法

▼ 快速幂算法

快速幂算法

▼ Fibonacci数列

斐波那契数列

▼ 傅里叶变换

Fourier变换

▼ Horner法

霍纳法则

▼ 整数划分

整数划分

▼ 判断是否为2的幂

判断是否为2的幂

▼ 最小公倍数

最小公倍数

▼ Liu Hui

Liu Hui

▼ 矩阵

Matrix

▼ Pascal三角形

Pascal三角形

▼ Primality Test

素数测试

▼ 质因数

质因数

▼ 弧度计算

弧度计算

▼ 埃拉托色尼筛法

埃拉托色尼筛法

▼ SquareRoot

SquareRoot

▼ MachineLearning

▼ K均值算法

K均值算法

▼ K近邻算法

K近邻算法

▼ 搜索算法

▼ 二分查找算法

二分查找

▼ 插值搜索算法

插值搜索算法

▼ 跳跃搜索算法

跳跃搜索算法

▼ 线性搜索

线性搜索算法

▼ 集合

▼ 笛卡尔积

笛卡尔积

▼ 组合总和

组合总和

▼ 组合算法

组合算法

▼ Fisher-Yates洗牌算法

Fisher-Yates洗牌算法

▼ 背包问题

背包问题

▼ 最长公共子序列

最长公共子序列

▼ 最长递增子序列

最长递增子序列

▼ 最大子数组

最大子数组

▼ 排列组合

排列组合

▼ 幂集

幂集算法

▼ 最短公共超序列

最短公共超序列

▼ Sorting Algorithms

▼ 冒泡排序

冒泡排序

▼ 桶排序算法

桶排序算法

▼ 计数排序算法

计数排序

▼ 堆排序算法

堆排序

▼ 插入排序

插入排序

▼ 归并排序

归并排序

▼ 快速排序算法

快速排序算法

▼ 基数排序

基数排序

▼ 选择排序算法

选择排序算法

▼ 希尔排序

希尔排序

▼ 统计学

▼ 加权随机

加权随机算法

▼ 字符串算法

▼ Hamming距离

Hamming距离

▼ KnuthMorrisPratt算法

Knuth-Morris-Pratt算法

▼ LevenshteinDistance

Levenshtein距离

▼ 最长公共子串

最长公共子串

▼ 回文检测算法

回文检测算法

▼ Rabin-Karp算法

Rabin-Karp算法

▼ 正则表达式匹配

正则表达式匹配

▼ Z算法

Z算法

▼ Tree Data Structure

▼ 广度优先搜索

广度优先搜索

▼ 深度优先搜索

深度优先搜索

▼ 未分类

▼ 最佳买卖股票时机

最佳买卖股票时机

▼ 汉诺塔算法

HanoiTower

▼ 跳跃游戏算法

跳跃游戏

▼ KnightTour

骑士巡逻

▼ N皇后问题

N皇后问题

▼ 雨水收集

雨水收集

▼ 递归楼梯问题

递归楼梯问题

▼ 方阵旋转

方阵旋转

▼ 独特路径

UniquePaths

▼ 数据结构

▼ BloomFilter算法

布隆过滤器

▼ 不相交集数据结构

Disjoint Set

▼ 双向链表

双向链表

▼ Graph

Graph算法

▼ 哈希表

哈希表

▼ Heap数据结构

Heap数据结构

▼ 链表

链表

▼ LRU缓存

LRU缓存

▼ 优先队列

优先队列

▼ 队列

队列

▼ 栈结构

栈结构

▼ Tree Data Structure

树结构

▼ AVL树

AVL树

▼ 二叉搜索树

二叉搜索树

▼ Fenwick树

Fenwick树

▼ 红黑树

红黑树

▼ 线段树

SegmentTree

▼ Trie数据结构

Trie数据结构

复数

在其他语言中阅读: 法语

复数是可以表示为形式 a + b * i 的数,其中 ab 是实数,i 是满足方程 x^2 = −1 的解。因为没有实数能满足这个方程,所以 i 被称为 虚数。对于复数 a + b * ia 被称为 实部b 被称为 虚部

复数是实数和虚数的组合:

几何上,复数通过使用横轴表示实部,纵轴表示虚部,将一维数线扩展到二维复平面。复数 a + b * i 可以在复平面上与点 (a, b) 对应。

如果一个复数的实部为零,则称该复数为 纯虚数;这些数的点位于复平面的纵轴上。如果一个复数的虚部为零,则可以将其视为 实数;其点位于复平面的横轴上。

复数 实部 虚部
3 + 2i 3 2
5 5 0 纯虚数
−6i 0 -6 纯虚数

复数可以视觉表示为一组数 (a, b) 形成的向量,称为 Argand 图,代表 复平面Re 是实轴,Im 是虚轴,i 满足 i^2 = −1

复数

复数并不意味着复杂。它意味着实数和虚数这两种类型,共同构成了一个复杂的概念,就像建筑群(多个建筑连接在一起)一样。

极坐标形式

定义复平面上的点 P 的另一种方法,除了使用 x 和 y 坐标外,还可以使用点 P 与原点 O(坐标为 (0, 0))之间的距离,以及正实轴与线段 OP 之间所夹的角度,按逆时针方向计算。这个想法导致了复数的极坐标形式。

极坐标形式

复数 z = x + yi(或模长或大小)是:

半径

z 的辐角(在许多应用中被称为“相位”)是半径 OP 与正实轴之间的角度,并写为 arg(z)。与模长一样,可以通过矩形形式 x+yi 找到辐角:

相位

一起,rφ 提供了另一种表示复数的方法,即极坐标形式,模长和辐角共同完全指定了平面上点的位置。从极坐标形式恢复原始的矩形坐标是通过称为三角形式的公式完成的:

极坐标形式

使用欧拉公式,这可以写为:

欧拉形式

基本运算

加法

要相加两个复数,我们分别对每个部分进行加法操作:

(a + b * i) + (c + d * i) = (a + c) + (b + d) * i

示例

(3 + 5i) + (4 − 3i) = (3 + 4) + (5 − 3)i = 7 + 2i

在复平面上,加法操作将如下所示:

复数加法

减法

要减去两个复数,我们分别对每个部分进行减法操作:

(a + b * i) - (c + d * i) = (a - c) + (b - d) * i

示例

(3 + 5i) - (4 − 3i) = (3 - 4) + (5 + 3)i = -1 + 8i

乘法

要乘复数,第一个复数的每一部分都要乘以第二个复数的每一部分:

只需使用 "FOIL",即 "首项"(Firsts)、"外项"(Outers)、"内项"(Inners)、"末项"(Lasts)(更多细节请参见 二项式乘法):

复数乘法

  • 首项:a × c
  • 外项:a × di
  • 内项:bi × c
  • 末项:bi × di

通常看起来是这样的:

(a + bi)(c + di) = ac + adi + bci + bdi^2

但也有更快的方法!

使用这个规则:

(a + bi)(c + di) = (ac − bd) + (ad + bc)i

示例

(3 + 2i)(1 + 7i)
= 3×1 + 3×7i + 2i×1+ 2i×7i
= 3 + 21i + 2i + 14i^2
= 3 + 21i + 2i − 14   (因为 i^2 = −1)
= −11 + 23i
(3 + 2i)(1 + 7i) = (3×1 − 2×7) + (3×7 + 2×1)i = −11 + 23i

共轭

我们一会儿就会知道共轭的概念了!

共轭就是像这样改变中间符号的:

复数共轭

共轭通常用一条横线在其上方写出:

______
5 − 3i   =   5 + 3i

在复平面上,共轭数的点将会镜像对称于实轴。

复数共轭

除法

共轭用于帮助复数除法。

技巧是将 底部的共轭 乘以顶部和底部。

示例

2 + 3i
------
4 − 5i

将顶部和底部都乘以 4 − 5i 的共轭: 以下是您提供的文档的翻译结果:

(2 + 3i) * (4 + 5i)   8 + 10i + 12i + 15i^2
= ------------------- = ----------------------
(4 − 5i) * (4 + 5i)   16 + 20i − 20i − 25i^2

请记住 i^2 = -1,所以:

8 + 10i + 12i − 15    −7 + 22i   −7   22
= ------------------- = -------- = -- + -- * i
  16 + 20i − 20i + 25      41      41   41

不过有更快的方法。

在前面的例子中,底部发生的事情很有趣:

(4 − 5i)(4 + 5i) = 16 + 20i − 20i − 25i

中间的项 (20i − 20i) 可以抵消!另外 i^2 = -1,所以我们最终得到这个:

(4 − 5i)(4 + 5i) = 4^2 + 5^2

这是一个相当简单的结果。一般规则是:

(a + bi)(a − bi) = a^2 + b^2

参考文献