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

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

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. DP问题(1) : hdu 2577

    题目转自hdu 2577,题目传送门 题目大意: 现给你n个区分大小写的字符串,大小写可用Caps Lock和shift切换(学过计算机的都知道) 但是有一点需要注意(shift是切换,若现在是大写锁 ...

  2. [LeetCode] 916. Word Subsets 单词子集合

    We are given two arrays A and B of words.  Each word is a string of lowercase letters. Now, say that ...

  3. C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)

    ODB的组成部分: 1: 操作系统的ODB编译器 2: odb核心库libodb 3: 各种数据库的相关链接库 使用ODB访问数据需要的库和头文件(不懂, 请看https://www.cnblogs. ...

  4. 第04组 Alpha冲刺(1/6)

    队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 过去一段时间对项目的精度和分工进行了更加细致的划分,并初步进行了GamePlay逻辑部分的框架设计 GitHub签入记录: ...

  5. convert decimal to binary using inbuilt function

    package testpacknm; import java.util.Scanner; public class testcnm { public static void main(String[ ...

  6. oracle--数据库扩容后出现ORA-27102

    一,问题描述 Connected to an idle instance. SQL> startup nomount ORA: obsolete or deprecated parameter( ...

  7. C#用mouse_event模拟鼠标点击的问题

    1.首先添加using System.Runtime.InteropServices; 2.为鼠标添加模拟点击的各种参数 //鼠标事件  因为我用的不多,所以其他参数没有写 1 2 3 4 5 6 7 ...

  8. LeetCode 485:连续最大1的个数 Max Consecutive Ones(python java)

    公众号:爱写bug 给定一个二进制数组, 计算其中最大连续1的个数. Given a binary array, find the maximum number of consecutive 1s i ...

  9. day05——字典

    day05 字典 字典-- dict: 字典无序的,可变的数据类型 用于存储大量数据,字典要比列表快,将数据和数据之间进行关联 lst1 = ['常鑫','李文虎','张宇'] # 姓名 lst2 = ...

  10. Why React Is Favored by Front-End Specialists

    In this section, we will discuss some of the features that make React a superior choice for front-en ...