如何直观理解正规子群?
如何直观理解正规子群?
正规子群是群论中的一个重要概念,它在抽象代数、几何学和物理学中都有广泛的应用。本文将通过类比线性代数中的相似矩阵,以及使用具体的数学例子和可视化方法,帮助读者直观理解正规子群的定义和性质。
正规子群的定义
设 $H$ 是群 $G$ 的一个子群,若对于 $G$ 中的任意元素 $g$,都有 $gHg^{-1} = H$,即
$$
\forall g \in G, \ gH g^{-1} = H
$$
则称 $H$ 是 $G$ 的一个正规子群(Normal Subgroup),记作 $H \trianglelefteq G$。
在群论中,两个群元素 $a$ 和 $b$ 被称为共轭的,如果存在一个群元素 $g$ 使得
$$
b = g a g^{-1}
$$
扩展到群,如果满足:
$$
gHg^{-1} \subseteq H \quad \forall g \in G
$$
这就是正规子群的定义。即:如果整个子群每个元素共轭后仍然属于这个子群,那么这个子群是正规的。
与线性代数的类比
相信学过线代的大学牲们已经反应过来了。两个矩阵 $A$ 和 $B$ 被称为相似的,如果存在一个可逆矩阵 $P$ 使得
$$
B = P A P^{-1}
$$
相似的两个矩阵特征值、秩等都是一样的。这其实就是共轭。矩阵相似保持线性算子的结构特性不变。同样的,正规子群 $H$ 的定义确保了 $H$ 对群 $G$ 的共轭操作是封闭的,保持了子群的结构不变。
因此,从直观上看,正规子群 $H$ 是群 $G$ 中一个在「内部结构上对称且稳定」的部分。无论我们如何通过群 $G$ 的元素对 $H$ 进行「旋转」或「翻转」(即共轭操作),$H$ 都不会改变其自身的结构和性质。
具体例子
例子1:实数加法群的子群
考虑实数的加法群 $(\mathbb{R}, +)$ 和其子群 $H = \mathbb{Z}$(整数集合)。对于任意 $g \in \mathbb{R}$,有:
$$
g + \mathbb{Z} - g = \mathbb{Z}
$$
这表明 $\mathbb{Z}$ 是 $\mathbb{R}$ 的正规子群。从结构观点,表明对整数在数轴上平移,然后移回,整数自身不变。
反例:对称群的子群
考虑对称群 $S_3$(所有排列的群)和其子群 $H = { e, (1,2) }$。取 $g = (1,3)$,则:
$$
gHg^{-1} = { e, (1,3)(1,2)(1,3)^{-1} } = { e, (2,3) } \neq H
$$
因此,$H$ 不是 $S_3$ 的正规子群。从结构观点,也可以直观理解,对于 $(1,2)$,先进行 $(1,3)$ 置换,再进行 $(1,2)$ 置换,最后 $(3,1)$ 无法换回 $(1,2)$。或者简言之涉及了翻转,翻转之后再进行别的变换,然后翻转回来,不保证和原来的操作效果一样。
例子2:三角形的旋转对称
$S_3$ 的 3-周期置换:$(123)$、$(132)$ 并上单位元,是一个正规子群。直观上理解可以看作是三角形的旋转对称。它们将三角形顺时针或逆时针旋转 120 度。这是因为你旋转之后,再进行别的变换比如翻转,再旋转回来,可以保证和仅翻转一样。
可视化例子:仿射变换中的正规子群
再来个可视化的例子:
示范对三角形的旋转,这个三角形不在原点。共轭操作的直观原理是将三角形平移到参考点(原点)然后施加旋转,然后再平移回原位置。(学图形学的同学是不是感到眼熟了)
仿射变换在平面上形成一个群,通常表示为 $\text{Aff}(2)$,其元素可以表示为:
$$
\begin{bmatrix}
A & \mathbf{b} \
\mathbf{0}^T & 1
\end{bmatrix}
$$
其中 $A$ 是线性变换(如旋转、缩放等),而 $\mathbf{b}$ 是平移向量。
所有仅包括平移的仿射变换构成一个子群 $T \subseteq \text{Aff}(2)$。这个子群是正规子群,因为对于任意的仿射变换 $g \in \text{Aff}(2)$,有:
$$
gTg^{-1} \subseteq T
$$
这意味着平移子群在仿射变换群中是封闭且不变的。
代码示例
下面是一个使用Python和Matplotlib的代码示例,演示了如何通过仿射变换实现三角形的平移和旋转:
import numpy as np
import matplotlib.pyplot as plt
triangle = np.array([[1, 1], [2, 3], [3, 1]])
triangle_homogeneous = np.hstack((triangle, np.ones((triangle.shape[0], 1))))
T = np.array([
[1, 0, -2],
[0, 1, -2],
[0, 0, 1]
])
T_inv = np.linalg.inv(T)
theta = np.radians(45)
R = np.array([
[np.cos(theta), -np.sin(theta), 0],
[np.sin(theta), np.cos(theta), 0],
[0, 0, 1]
])
def plot_triangle(triangle, title, filename):
plt.figure()
plt.plot(*triangle.T, 'o-', label='Triangle')
plt.fill(*triangle.T, alpha=0.3)
plt.legend()
plt.gca().set_aspect('equal', adjustable='box')
plt.title(title)
plt.savefig(filename)
plt.close()
triangle_translated = (T @ triangle_homogeneous.T).T
plot_triangle(triangle_translated[:, :2], 'Translated to Origin', 'step2_translated.png')
triangle_rotated = (R @ triangle_translated.T).T
plot_triangle(triangle_rotated[:, :2], 'Rotated', 'step3_rotated.png')
triangle_final = (T_inv @ triangle_rotated.T).T
plot_triangle(triangle_final[:, :2], 'Moved Back', 'step4_final.png')
plot_triangle(triangle, 'Original Triangle', 'step1_original.png')
这段代码首先定义了一个三角形,然后通过仿射变换将其平移到原点,进行旋转,最后再平移回原位置。通过可视化这些步骤,可以直观地理解正规子群在共轭操作下的不变性。