1 定义
1.1 实数域上的定义
符号函数 \( \operatorname{sgn}(x) \) 在实数域上的定义如下:
\[ \operatorname{sgn}(x) = \begin{cases} 1, & x > 0, \\ 0, & x = 0, \\ -1, & x < 0. \end{cases} \]
该函数在 \( x = 0 \) 处的取值为 0,与某些文献将其定义为 1 或 ±1 的做法不同,但这是数学分析中最常见的约定。
1.2 扩展到复数域
对于复数 \( z = a + bi \)(\( a, b \in \mathbb{R} \)),符号函数可通过以下方式定义:
\[
| \operatorname{sgn}(z) = \frac{z}{ | z | }, \quad z \neq 0, |
|---|
\]
且通常规定 \( \operatorname{sgn}(0) = 0 \)。该定义将复数映射到单位圆上的点(除原点外),保留了“方向”的概念。
2 基本性质
2.1 奇偶性与对称性
符号函数是奇函数:
\[ \operatorname{sgn}(-x) = -\operatorname{sgn}(x), \quad \forall x \in \mathbb{R}. \]
其图像关于原点中心对称,但在 0 处有一个孤立的跳跃点。
2.2 与绝对值的关系
对于任意实数 \( x \),有恒等式:
\[
| \operatorname{sgn}(x) = \frac{x}{ | x | }, \quad x \neq 0. |
|---|
\]
反之,绝对值可表示为:
\[
| x | = x \cdot \operatorname{sgn}(x). |
|---|
\]
这使符号函数成为分解实数符号与大小的“螺丝刀”。
2.3 乘法与幂等性
符号函数在非零域内具有幂等性(乘以自身后不变):
\[ [\operatorname{sgn}(x)]^2 = 1, \quad x \neq 0. \]
对于任意两个实数 \( a, b \),有:
\[ \operatorname{sgn}(ab) = \operatorname{sgn}(a) \cdot \operatorname{sgn}(b). \]
换句话说,哪怕你的数学老师告诫“负负得正”,符号函数也能帮你一键确认。
3 解析性质
3.1 连续性
符号函数在 \( x = 0 \) 处不连续,具有第一类跳跃间断点,左右极限分别为 +1 和 -1。除此之外,它在 \( (-\infty, 0) \) 和 \( (0, \infty) \) 上均连续。
3.2 可导性与弱导数
符号函数在 \( x = 0 \) 处不可导,在非零点导数恒为零。然而,它在分布意义下的弱导数等于两倍狄拉克δ函数:
\[ \frac{d}{dx} \operatorname{sgn}(x) = 2\delta(x). \]
这个关系在理论物理学中经常被用来“优雅地”处理不连续问题。
3.3 傅里叶变换
符号函数的傅里叶变换(作为广义函数)为:
\ \mathcal{F}[\operatorname{sgn} = \frac{2}{i t} \quad (\text{主值意义下}). \]
它在信号分析中扮演着滤波器的角色,可将实信号的 Hilbert 变换轻松写出。
4 与其他函数的关系
4.1 与 Heaviside 阶跃函数
4.1.1 用阶跃函数表示符号函数
记 Heaviside 阶跃函数为 \( H(x) \)(通常定义 \( H(0) = 1/2 \) 或 1),则有:
\[ \operatorname{sgn}(x) = 2H(x) - 1. \]
这就像把阶跃函数向下平移半个身位再拉伸两倍。
4.1.2 符号函数作为阶跃函数的导数
由弱导数关系可得:
\[ \frac{d}{dx} H(x) = \delta(x), \quad \frac{d}{dx} \operatorname{sgn}(x) = 2\delta(x). \]
因此,符号函数是阶跃函数的某种“速度加倍”的版本。
4.2 与符号函数相关的逼近函数
为了避开符号函数在 0 处的尖锐跳跃,常用光滑函数逼近。
4.2.1 使用反正切逼近
\[ \operatorname{sgn}(x) \approx \frac{2}{\pi} \arctan(kx), \quad k \to \infty. \]
当 \( k \) 变大时,逼近曲线在原点附近爬升得越来越陡,仿佛一位不耐烦的起跑裁判。
4.2.2 使用双曲正切逼近
\[ \operatorname{sgn}(x) \approx \tanh(kx), \quad k \to \infty. \]
双曲正切是神经网络中常用的激活函数,因此符号函数的“软版本”在深度学习中时有出没。
5 应用
5.1 微分方程中的符号函数
5.1.1 带有符号非线性的方程
方程如
\[ \frac{dx}{dt} = -\operatorname{sgn}(x) \]
描述了一种“反向恒速”运动:质点无论离原点多远,都以固定速率朝原点冲去,而一旦抵达便静止。它常被用于简单的玻色-爱因斯坦凝聚或摩擦模型。
5.1.2 滑模控制
在控制理论中,滑模控制通过引入符号函数实现系统状态对滑模面的“粘附”。例如控制律:
\[ u = -k \operatorname{sgn}(s) \]
使系统在有限时间内滑向曲面 \( s=0 \),但也带来了烦人的抖振(chattering)——你可以把它想象成控制工程师与符号函数之间的相爱相杀。
5.2 信号处理与图像处理
5.2.1 符号函数实现的极性检测
接收信号经过符号函数后,仅保留 ±1 的极性信息,可大大降低硬件成本。这种“只有正反”的采样方式常用于通信中的简易解调器。
5.2.2 零交叉边缘检测
在图像处理中,二阶导数(如 Laplacian)的零交叉点常通过符号函数的变化来定位:若某个像素位置的符号函数值在相邻点间跳变,则视为边缘。符号函数在这里充当了“警铃”,一听到极性反转便喊“这里有边界”。
5.3 统计与机器学习
5.3.1 符号函数在误差度量中的应用
某些损失函数使用符号函数来忽略误差大小而只关注方向。例如符号误差 \( \operatorname{sgn}(y_{\text{pred}} - y) \) 在在线学习或感知机算法中用于权重更新。尽管它有些“粗暴”,但胜在简单且收敛性质良好。
6 推广与变体
6.1 复符号函数
参见 1.2 节。复符号函数保留了复数的辐角信息,可看作是将复数“归一化”到单位圆上。它在复分析中用于构造解析信号的相位。
6.2 多值符号函数
对于向量 \( \mathbf{x} \in \mathbb{R}^n \),可定义逐分量的符号函数:
\[ \operatorname{sgn}(\mathbf{x}) = (\operatorname{sgn}(x_1), \operatorname{sgn}(x_2), \ldots, \operatorname{sgn}(x_n)). \]
这在神经网络的二值化(BinaryConnect)中曾掀起一阵简化热潮。
6.3 软符号函数(平滑近似)
除了 4.2 节中的反正切和双曲正切,还可使用埃尔米特插值或分段多项式构造具有连续导数的软符号函数。这类变体被用于可微编程和优化中,帮助梯度顺利通过原本为“悬崖”的零点。