虚数单位
在数学、物理及工程学里,虚数单位是指二次方程的解。虽然没有这样的实数可以满足这个二次方程,但可以通过虚数单位将实数系统延伸至复数系统。延伸的主要动机为有很多实系数多项式方程式无实数解。例如刚才提到的方程式就无实数解。可是倘若我们允许解答为虚数,那么这方程式以及所有的多项式方程式都有解。虚数单位标记为,在电机工程和相关领域中则标记为,这是为了避免与电流(记为或)混淆。
高斯整数导航 | ||||||
---|---|---|---|---|---|---|
↑ | ||||||
2i | ||||||
−1+i | i | 1+i | ||||
← | −2 | −1 | 0 | 1 | 2 | → |
−1−i | −i | 1−i | ||||
−2i | ||||||
↓ |
各种各样的数 |
基本 |
延伸 |
其他 |
定义
虚数单位 定义为二次方程式 的两个根中的一个。这方程式又可等价表达为:
- 。
由于实数的平方绝不可能是负数,我们假设有这么一个数目解答,给它设定一个符号 。很重要的一点是, 是一个良定义的数学构造。
另外,虚数单位同样可以表示为:
然而 往往被误认为是错的,他们的证明的方法是:
- 因为 ,但是-1不等于1。
- 但请注意: 成立的条件有 , 不能为负数。
实数运算可以延伸至虚数与复数。当计算一个表达式时,我们只需要假设 是一个未知数,然后依照 的定义,替代任何 的出现为-1。 的更高整数幂数也可以替代为 , ,或 ,根据下述方程式:
- ,
- ,
- 。
一般地,有以下的公式:
其中 表示被4除的余数。
i和-i
方程 有两个不同的解,它们都是有效的,且互为共轭虚数及倒数。更加确切地,一旦固定了方程的一个解 ,那么 (不等于 )也是一个解,由于这个方程是 的唯一的定义,因此这个定义表面上有歧义。然而,只要把其中一个解选定,并固定为 ,那么实际上是没有歧义的。这是因为,虽然 和 在数量上不是相等的(它们是一对共轭虚数),但是 和 之间没有质量上的区别(-1和+1就不是这样的)。在任何的等式中同时将所有i替换为-i,该等式仍成立。
正当的使用
虚数单位有时记为 。但是,使用这种记法时需要非常谨慎,这是因为有些在实数范围内成立的公式在复数范围内并不成立。例如,公式 仅对于非负的实数 和 才成立。
假若这个关系在虚数仍成立,则会出现以下情况:
- (不正确)
- (不正确)
- (不正确)
i的运算
许多实数的运算都可以推广到 ,例如平方根、幂、对数和三角函数。以下运算除第一项外,均为与 有关的多值函数,在实际应用时必须指明函数的定义选择在黎曼面的哪一支。下面列出的仅仅是最常采用的黎曼面分支的计算结果。
- 的平方根为:
- 这是因为:
- 使用算术平方根符号表示:
- 其解法为先假设两实数 及 ,使得 ,求解 [1]
- 一个数的 次幂为:
- 一个数的 次方根为:
- 利用欧拉公式
- ,
- 代入不同的 值,可计算出无限多的解。当 最小的解是 0.20787957635076...[2]
- 以 为底的对数为:
- 1.5430806348152...
- 1.1752011936438...
在编程语言
- 大部分的编程语言都不提供虚数单位,且平方根函数(大多为sqrt()或Math.Sqrt())的引数不可以是负数,因此,必须自行建立类别后方可使用。
- 但Lisp的许多实现与方言,如Common Lisp,内建虚数和复数的支持。不少动态语言受其影响,也在语言本身或标准库中支持虚数和复数,如Python、Ruby。
- 一些传统编程语言,如C语言,也从C99开始支持虚数和复数。
- 在Matlab,虚数单位的表示方法为i或j,但i和j在for循环可以有其他用途。
- 在Mathematica,虚数单位的表示方法为I、𝕚或𝕛。
- 在Maple,必须启用虚数功能,并选择用i还是j表示虚数单位。
- Go语言于第 1.0 版就内建虚数和复数的支持,变量类型为
complex64
和complex128
[3]。
注解
参见
参考文献
- Paul J. Nahin, An Imaginary Tale, The Story of √-1, Princeton University Press, 1998