本文我们讨论复数及其旋转的含义。复数很有意思,本文介绍了复数的基本定义和性质,以及它关于旋转的几何意义。

复数对于旋转的两个方面极为重要:

1. 它引入了旋转算子(rotational operator)的思想:可以通过复数表示一个旋转变换。

2. 它是四元数多向量的内在属性。

虽然我们暂时不讨论四元数多向量(后面文章会介绍),但是我们会讨论复数的旋转含义(复平面上的 2D 旋转),以及引入的旋转子(rotor),我们发现通过特定的复数可以描述一个 2D 旋转。

介绍

复数(complex number)又称为数字王国中的“国王”,它可以解决普通实数不能很好解决的问题。

例如,对于以下方程:

$$x^2+1=0$$

尽管方程如此简单,但并没有实数解。实际上,实数无法解决这样的问题:

$$x=\sqrt{-1}$$

但这没有妨碍数学家们找到解决此类问题的方法,他们提出一个很牛很简单的思想,就是承认 $i$ 的存在,它满足 $i^2=-1$,于是前面的方程我们可以解出:

$$x=\pm i$$

那么 $i$ 到底是什么呢?我们可以不必纠结,$i$ 就是数学家提出的数学工具,一个简单的数学对象,满足 $i^2=-1$。本文会探讨这个数学工具对于旋转如何发挥作用。

复数基础

复数的定义

复数由两个部分组成:实部(real part)虚部(imaginary part)。实部就是我们平常遇到的数(正数、负数、0),而虚部是一个实数和 $i$ 的乘积。

例如,$2+3i$ 是一个复数,2 是实部,$3i$ 是虚部。

复数集就像是实数集的扩展,它包含了所有实数(虚部为 0)。而虚部不为 0 的复数不是实数。以下都属于复数:

  • 2
  • $2+2i$
  • $1-3i$
  • $-4i$
  • $17i$
  • $isin\theta$
  • $4.5+icos\theta$

复数的公理

下面的公理体现了复数的性质。对于任意的复数 $z_1$、$z_2$ 和 $z_3$,满足:

  • 加法交换律:$z_1+z_2=z_2+z_1$
  • 加法结合律:$(z_1+z_2)+z_3=z_1+(z_2+z_3)$
  • 乘法交换律:$z_1z_2=z_2z_1$
  • 乘法结合律:$(z_1z_2)z_3=z_1(z_2z_3)$
  • 乘法分配律:$z_1(z_2+z_3)=z_1z_2+z_1z_3$、$(z_1+z_2)z_3=z_1z_3+z_2z_3$

其实复数的这些加法和乘法的公理和实数一样的。由于复数集里面包含实数集,如果不和实数一致,反而比较奇怪的。

复数的模

模(modulus)长度的含义。对于复数 $z=a+bi$,它的模定义为:

$$\left | z \right |=\sqrt{a^2+b^2}$$

例如,$3+4i$ 的模为 5。

后面我们会看到,模定义在复数的极坐标表示中的作用。

复数的加减

对于两个复数:$z_1=a+bi$ 和 $z_2=c+di$,其加减法为

$$z_1\pm z_2=(a\pm c)+(b\pm d)i$$

即实部和虚部分别相加减。

复数的标量乘法

标量乘法同样符合我们的直觉。对于标量 $\lambda$ 和复数 $a+bi$,有

$$\lambda(a+bi)=\lambda a+\lambda bi$$

例如:

$$2(3+5i)=6+10i$$

两个复数的乘积

两个复数的乘积就是各项分别相乘并相加。对于两个复数 $z_1=a+bi$ 和 $z_2=c+di$,有

\begin{align*}
z_1z_2 &= (a+bi)(c+di)\\
&= ac+adi+bci+bdi^2\\
&= (ac-bd)+(ad+bc)i
\end{align*}

例如,对于 $z_1=3+4i$ 和 $z_2=5-2i$,有

\begin{align*}
z_1z_2 &= (3+4i)(5-2i)\\
&= 15-6i+20i-8i^2\\
&= 23+14i
\end{align*}

可以看到。两个复数的加减和乘积都是一个复数。

共轭复数

两个复数相乘还有个特殊情况:

\begin{align*}
(a+bi)(a-bi)&=a^2-b^2i \\
&= a^2+b^2
\end{align*}

其中 $a-bi$ 称作是 $a+bi$ 的共轭复数(conjugate complex number),又称复共轭、复数共轭。

更一般的定义,$z=a+bi$ 的共轭复数用 $\bar{z}$ 或 $z^*$ 表示,其中:

$$z^*=a-bi$$

$$zz^*=a^2+b^2=\left |z  \right |^2$$

两个复数的除法

利用共轭复数的性质,我们再来看复数的除法。

对于 $z_1=a+bi$ 和 $z_2=c+di$,其中 $z_2\neq 0$。

那么,

\begin{align*}
\frac{z_1}{z_2}&=\frac{z_1z_2^*}{z_2z_2^*} \\
&= \frac{z_1z_2^*}{\left | z_2 \right |^2} \\
&= \frac{(a+bi)(c-di)}{c^2+d^2} \\
&= \frac{(ac+bd)+(bc-ad)i}{c^2+d^2}
\end{align*}

例子:

\begin{align*}
\frac{4+3i}{3+4i}&=\frac{(4*3+3*4)+(3*3-4*4)i}{3^2+4^2} \\
&= \frac{24}{25}-\frac{7}{25}i
\end{align*}

复数的逆

已知一个复数 $z\neq 0$,定义它的逆 $z^{-1}=\frac{1}{z}$。利用共轭复数的性质,我们可以推导:

$$\frac{z^{-1}}{z^*}=\frac{1}{zz^*} = \frac{1}{\left | z \right |^2}$$

$$\Rightarrow z^{-1}=\frac{z^*}{\left | z \right |^2}$$

例子:

\begin{align*}
\frac{1}{3+4i} &=(3+4i)^{-1} \\
&= \frac{3-4i}{25} \\
&= \frac{3}{25}-\frac{4}{25}i
\end{align*}

检查:$(3+4i)(\frac{3}{25}-\frac{4}{25}i)=\frac{9}{25}-\frac{12}{25}i+\frac{12}{25}i+\frac{16}{25}=1$

复数与旋转

复平面

极坐标表示

旋转子

复数基础及其2D空间的旋转的更多相关文章

  1. 2D空间中判断一点是否在三角形内

    要注意如果是XY坐标轴的2D空间,要取差乘分量z而不是y. 实现原理是,将三角形ABC三个边(AB,BC,CA)分别与比较点判断差乘,如果这3个差乘结果表示的方向一致,说明就在三角形内. 效果: 代码 ...

  2. 2D空间中求一点是否在多边形内

    参考自这篇博文:http://www.cnblogs.com/dabiaoge/p/4491540.html 一开始没仔细看做法,浪费了不少时间.下面是最终实现的效果: 大致流程: 1.随便选取多边形 ...

  3. python基础——类名称空间与对象(实例)名称空间

    python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...

  4. 2D空间的OBB碰撞实现

    OBB全称Oriented bounding box,方向包围盒算法.其表现效果和Unity的BoxCollider并无二致.由于3D空间的OBB需要多考虑一些情况 这里仅关注2D空间下的OBB. 实 ...

  5. [译]2D空间中使用四叉树Quadtree进行碰撞检测优化

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity2017.2.0f3 原文出处 : Quick Tip: Use Quadtrees to Detect Lik ...

  6. iOS基础 - Quartz 2D绘图

    一.Quartz 2D Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境. Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任 ...

  7. 2d,3d中旋转推导

    二维绕原点旋转,其实点为(x,y),旋转角度为黄色标注的角度. 推导过程如下: x' = r cos(al+be); y' = r sin(al+be);x '= rcosalcosbe-rsinal ...

  8. js基础梳理-内存空间

    我估计有很多像我这样非计算机专业的人进入到前端之后,总是在写业务代码,思考什么什么效果如何实现,导致很多基础概念型的东西都理解得并不太清楚.经常一碰到群里讨论的些笔试题什么的,总觉得自己像是一个假前端 ...

  9. 利用Python进行数据分析(13) pandas基础: 数据重塑/轴向旋转

    重塑定义     重塑指的是将数据重新排列,也叫轴向旋转. DataFrame提供了两个方法: stack: 将数据的列“旋转”为行. unstack:将数据的行“旋转”为列. 例如: 处理堆叠格式 ...

随机推荐

  1. Manthan Codefest 19 题解

    这套题还是有点质量的吧 -- 题目链接 A. XORinacci 傻叉签到题,因为异或的性质所以这个序列的循环节长度只有 \(3\) -- 查看代码 B. Uniqueness 因为序列长度乃至数的种 ...

  2. inputType导致TextView不能多行显示

    今天遇到一个问题很纳闷,那就是TextView不能自动换行多行显示,因为我的印象是TextView默认是可以自动换行多行显示的,今儿个怎么就不行呢. 最终找到原因,是因为设置了inputType属性导 ...

  3. java 获取用户输入

    import java.util.Scanner; public class Sample { public static void main(String[] args) { int num; Sc ...

  4. java web开发入门十(idea创建maven SSM项目)基于intellig idea

    一.搭建项目骨架 二.配置pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  5. PLSQL安装过程和SCOTT用户被锁的解决方法

    一.PLSQL安装: PLSQL基本就是一键式安装,没有什么需要修改的东西,一路Next就行了. 二.SCOTT用户被锁问题解决 1.问题如下: SCOTT用户默认是被锁的,需要通过system管理员 ...

  6. SpringBoot集成Spring Security(5)——权限控制

    在第一篇中,我们说过,用户<–>角色<–>权限三层中,暂时不考虑权限,在这一篇,是时候把它完成了. 为了方便演示,这里的权限只是对角色赋予权限,也就是说同一个角色的用户,权限是 ...

  7. [BAT脚本] 1、BAT脚本FOR循环操作文件和命令返回实例

    Wednesday, 31. October 2018 08:18PM - beautifulzzzz 一.需求 需要在windows上实现一个bat脚本解析json,将json转换为自己想要的key ...

  8. <T>泛型,广泛的类型

    其实早在1999年的JSR 14规范中就提到了泛型概念,知道jdk5泛型的使用才正式发布,在jdk7后,又对泛型做了优化,泛型的推断. 泛型类 public class Pair<T> { ...

  9. LeetCode 118:杨辉三角 II Pascal's Triangle II

    公众号:爱写bug(ID:icodebugs) 作者:爱写bug 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. Given a non-negative index k whe ...

  10. 【前端知识体系-HTML相关】HTML基础知识强化总结

    1.如何理解HTML? HTML类似于一份word"文档" 描述文档的"结构" 有区块和大纲 2.对WEB标准的理解? Web标准是由一系列标准组合而成.一个网 ...