ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

酉矩阵从定义到应用:共轭转置、性质与验证方法

酉矩阵从定义到应用:共轭转置、性质与验证方法 酉矩阵这个名字很多人在学线性代数和矩阵论的时候都遇到过但经常是“看了定义、记住了公式、一做题就懵”。我当年第一次接触的时候心里想的只有一件事这不就是复数的正交矩阵吗为什么要单独起个名字。等到后来做信号处理、碰量子计算、看矩阵分解的稳定性分析才明白这个“复数版正交矩阵”背后藏着的几何意义和应用价值比想象中大得多。这篇文章我把酉矩阵的定义彻底拆开讲。从最基础的共轭转置开始到定义本身的严格表述再到如何用手算和代码验证一个矩阵到底是不是酉矩阵最后说说它在量子计算和数值分析里为什么这么重要。适合正在学线性代数的学生、做机器学习和信号处理的工程师以及任何想真正理解“为什么酉矩阵如此特殊”的人。1. 从正交到酉一个定义的转身1.1 先把实数域上的“正交矩阵”复习透要说清楚酉矩阵得先回到实数域里的正交矩阵。如果一个实矩阵 (Q) 满足 (Q^TQ QQ^T I)那它就是正交矩阵。这里的 (Q^T) 是普通转置(I) 是单位矩阵。这个条件等价于说矩阵的列向量两两正交并且每个列向量长度都是 1。也就是说(Q) 的列向量构成了一个标准正交基。几何上看正交矩阵的作用就是“旋转”或者“镜像”它不会改变向量的长度也不会改变两个向量之间的夹角。你拿一个向量 (x)用 (Qx) 去变换(|Qx|_2 |x|_2)。这一点极其重要因为它代表的是“刚性变换”只改变方向不改变尺度。所以在数值计算里正交变换被大量用于保持稳定性不会无端放大误差。但是正交矩阵有一个致命的前提它只能处理实数向量和实数矩阵。一旦把数域拓展到复数很多问题就变了。复向量空间里的“长度”和“夹角”不再是普通转置能描述的这时候就需要一个全新的工具。这就引出了共轭转置。1.2 共轭转置复数域里“转置”的真正含义在实数域里向量的长度定义为 ( \sqrt{x_1^2 x_2^2 \dots x_n^2} )。但在复数域里这样一个看起来“天经地义”的长度公式会出问题。假设一个复向量 ((1, i))如果直接模仿实数域算长度得到 (\sqrt{1^2 i^2} \sqrt{1 - 1} 0)一个非零向量长度居然是 0这显然不合理。所以复数域的长度必须用共轭来修正。一个复向量 (x \in \mathbb{C}^n) 的模长准确说法是 Hermitian 范数定义为[ |x|2 \sqrt{x^\dagger x} \sqrt{\sum{k1}^{n} |x_k|^2} ]这里的 (x^\dagger) 就是共轭转置符号里的剑号读作 dagger。操作分两步第一步把向量转置第二步把每个元素取共轭。例如[ x \begin{pmatrix} 1 i \ 2 - i \end{pmatrix}, \quad x^\dagger \begin{pmatrix} 1 - i 2 i \end{pmatrix} ]正是因为先取了共轭所以 (|x_k|^2 x_k \overline{x_k}) 永远是实数而且非负。这个“先转置再共轭”的操作就是复数域里一切内积、长度、正交性的地基。对矩阵来说也一样一个复矩阵 (U) 的共轭转置 (U^\dagger)就是把矩阵转置之后再把每个元素取共轭。提示很多初学者把共轭转置和普通转置搞混在实矩阵里两者没有区别但一旦进入复数域少取一次共轭后续所有结论都会崩掉。这一点我在后面验证酉矩阵的环节里还会反复强调。2. 酉矩阵的严格定义与等价条件2.1 定义一句话但信息量极大酉矩阵的正式定义并不长一个复方阵 (U \in \mathbb{C}^{n \times n})如果它满足 (U^\dagger U UU^\dagger I)那么就称 (U) 为酉矩阵unitary matrix。其中 (U^\dagger) 是 (U) 的共轭转置(I) 是 (n) 阶单位矩阵。这个定义和正交矩阵的 (Q^TQ QQ^T I) 长得几乎一模一样区别仅仅是把转置换成了共轭转置。但不要小看这个替换它的数学后果和几何含义相差很大。第一个要注意的点是定义里的两个等式 (U^\dagger U I) 和 (UU^\dagger I) 在有限维方阵里其实只要证一个就够了。因为如果 (A B I)对两个同阶方阵来说必然也有 (B A I)。也就是左边逆存在自动就是双边逆。但在实际手算和编程验证时我仍然建议两个都看一眼。为什么因为浮点误差可能让其中一个式子接近 (I)另一个却差得远这种情况往往意味着你的矩阵根本不是严格酉的或者你的代码里共轭转置实现错了。第二个要注意的点酉矩阵的定义要求矩阵是方阵。如果是一个 (m \times n) 的矩阵(m \neq n)满足 (U^\dagger U I) 但 (UU^\dagger \neq I)那它叫半酉矩阵semi-unitary matrix在压缩感知和低秩近似里很常见。很多人把非方阵也套用酉矩阵的说法严格来说不准确但工程语境里有时将错就错你自己心里要清楚差别。2.2 定义之外的等价说法在实际应用里判断一个矩阵是不是酉矩阵不一定非要硬算 (U^\dagger U)。有几个等价条件用起来更快、直觉更清晰列的视角(U) 的列向量组成复空间 (\mathbb{C}^n) 的一组标准正交基。也就是说任意两列的内积为 0每列和自己的内积为 1。行的视角(U) 的行向量同样组成一组标准正交基。因为方阵满足 (UU^\dagger I)所以行与行之间也两两正交且归一。逆的视角(U^\dagger U^{-1})。也就是说酉矩阵的逆就是它的共轭转置。这是酉矩阵一个极其好用的性质因为求逆通常运算量很大但对酉矩阵来说求逆就是一次共轭转置。保内积视角对任意复向量 (x, y)都有 ((Ux)^\dagger (Uy) x^\dagger y)。这个条件说明酉变换不改变向量之间的内积。这些等价条件不是独立的它们彼此互推。比如一旦知道 (U^\dagger U I)就能推出列向量标准正交也能推出 (U^\dagger U^{-1})。我在实际判断时会根据手头的信息选择最省事的那个视角。如果你明明已经知道列向量两两正交且长度为 1那就不用再费力计算整个 (U^\dagger U) 乘积了。2.3 酉矩阵与正交矩阵的关系很多人问我一个元素全是实数的酉矩阵是不是就是正交矩阵答案是肯定的。因为实数的共轭就是它本身所以实酉矩阵自动退化为正交矩阵。换句话说正交矩阵是酉矩阵在实数域的特殊情况酉矩阵是正交矩阵在复数域的推广。这里有一个很容易在考试或者面试里被问到的点一个复矩阵的元素都是实数但它可能是正交矩阵而非酉矩阵吗不可能因为实矩阵共轭后不变(U^\dagger U^T)这时候酉条件就退化成了正交条件。所以从集合关系看实正交矩阵是酉矩阵集合的一个子集。反过来一个元素的实部和虚部都是实数的普通复矩阵如果它满足酉条件我们通常会说它“比正交矩阵更丰富”因为它允许复旋转、复镜像甚至包含像 (e^{i\theta}) 这样的相位旋转。相位这个概念在量子力学里至关重要在没有相位只有实数旋转的语境里很多量子行为根本没法表达。3. 为什么这个定义如此重要核心性质的直觉理解3.1 保范数与保内积酉变换不改变几何结构酉矩阵最重要的性质就是它在复向量空间里“完全保持几何结构”。具体来说如果 (U) 是酉矩阵那么对任意向量 (x)都有[ |Ux|_2 |x|_2 ]这个式子被称为“保范数性质”。它的证明非常简洁[ |Ux|_2^2 (Ux)^\dagger (Ux) x^\dagger U^\dagger U x x^\dagger I x x^\dagger x |x|_2^2 ]保范数意味着酉变换不会放大或缩小向量的长度。在数值计算里这意味着误差不会因为变换而无限增长。这一点在做矩阵分解时特别重要。比如 QR 分解里如果 (Q) 是酉矩阵那么中间计算产生的舍入误差会保持在一个可控范围内不会因为迭代而失控。保范数之外还有更强的保内积性质对任意两个向量 (x) 和 (y)有 ((Ux)^\dagger (Uy) x^\dagger y)。这相当于说变换前后两个向量之间的“夹角”不变。如果我有一组数据点把它们整体左乘一个酉矩阵数据的相对位置关系完全不变只是整体做了一个复空间里的旋转。这种特性在数据降维、特征提取里意义重大你可以在不破坏数据本质结构的前提下把它变换到一个更方便计算和表示的坐标系。3.2 特征值模长必为 1如果 (U) 是酉矩阵它的特征值有什么特点答案是所有特征值的模长都等于 1。证明很漂亮。设 (\lambda) 是 (U) 的一个特征值对应的特征向量为 (v \neq 0)那么 (Uv \lambda v)。两边取共轭转置得到 (v^\dagger U^\dagger \overline{\lambda} v^\dagger)。接着计算[ v^\dagger v v^\dagger I v v^\dagger U^\dagger U v (\overline{\lambda} v^\dagger)(\lambda v) |\lambda|^2 v^\dagger v ]因为 (v^\dagger v 0)所以 (|\lambda|^2 1)即 (|\lambda| 1)。这个性质解释了很多现象。在量子力学里酉算子作用在量子态上系统的总概率必须保持不变而特征值模长为 1 正好保证了这一点。在信号处理里如果一个系统的传输矩阵是酉的那么它不会对信号整体增益或衰减只改变相位和混叠方式。3.3 行列式模长为 1矩阵的行列式等于所有特征值的乘积。既然每个特征值的模长都是 1那么行列式的模长自然也是 1[ |\det(U)| 1 ](\det(U)) 本身可以是一个复数所以并不要求它恰好等于 1只要求它的模长为 1。也就是说 (\det(U) e^{i\varphi})是某个角度 (\varphi) 的相位因子。在量子计算中这个相位因子就是量子门的“全局相位”它不影响测量概率但在某些干涉实验里必须精确考虑。顺便提一句如果酉矩阵的行列式为 1则称为特殊酉矩阵记作 (SU(n))。物理里的 SU(2) 群描述自旋SU(3) 群描述强相互作用中的色荷这些都是这种矩阵在真实物理世界里的登台表演。3.4 乘积、逆、共轭转置仍然是酉矩阵酉矩阵对“乘法”和“求逆”是封闭的。如果 (U) 和 (V) 都是酉矩阵那么 (UV) 也是酉矩阵(U^{-1})也就是 (U^\dagger)也是酉矩阵(U^T) 也是酉矩阵。检验起来非常直接[ (UV)^\dagger (UV) V^\dagger U^\dagger U V V^\dagger V I ]这个封闭性意味着所有 (n) 阶酉矩阵放在一起构成一个数学上的群叫酉群 (U(n))。酉群是一种李群是当代数学、物理、几何里到处出没的核心对象。如果你以后接触李群和李代数会发现 (U(n)) 就是最经典的例子。但说到底它的根子还是“矩阵的共轭转置等于自己的逆”这么一条简单规则。4. 实操环节手把手验证一个矩阵是否为酉矩阵4.1 标准的验证流程现在到了最实用的部分。假设你面前有一个复杂的复矩阵你怎么判断它是不是酉矩阵我总结了一套每次都会走的流程检查矩阵是否为方阵。不是方阵直接走人或者按半酉矩阵单独讨论。计算 (U^\dagger)。就是先转置再对每个元素取共轭。计算 (U^\dagger U)看看结果是不是单位矩阵 (I)。如果第 3 步通过再算 (UU^\dagger)看看是不是也为 (I)。严格来说方阵只需算一个但实际验证时两个都算可以交叉排查错误。在浮点计算环境下不要用“完全等于”判断要用误差容限比如 (|U^\dagger U - I| 10^{-10})。这个流程看着简单但真正执行起来有许多细节坑。比如手算时忘掉共轭、代码里用普通转置 (U^T) 代替共轭转置 (U^\dagger)、浮点误差控制不当导致误判等下面我逐个展开。4.2 手算一个明确的例子来看一个最简单的复矩阵[ U \frac{1}{\sqrt{2}} \begin{pmatrix} 1 i \ i 1 \end{pmatrix} ]这个矩阵在很多教材里都出现过。第一步计算共轭转置。先转置得到[ \begin{pmatrix} 1 i \ i 1 \end{pmatrix}^T \begin{pmatrix} 1 i \ i 1 \end{pmatrix} ]注意这个矩阵本身是对称的转置后还是它自己。然后取共轭把 (i) 变成 (-i)[ U^\dagger \frac{1}{\sqrt{2}} \begin{pmatrix} 1 -i \ -i 1 \end{pmatrix} ]第二步计算 (U^\dagger U)[ U^\dagger U \frac{1}{2} \begin{pmatrix} 1 -i \ -i 1 \end{pmatrix} \begin{pmatrix} 1 i \ i 1 \end{pmatrix} \frac{1}{2} \begin{pmatrix} 2 0 \ 0 2 \end{pmatrix} \begin{pmatrix} 1 0 \ 0 1 \end{pmatrix} ]结果恰好是单位矩阵说明这个矩阵确实是酉矩阵。这里的关键在于共轭转置里的负号不能丢如果有人用普通转置来算[ U^T U \frac{1}{2} \begin{pmatrix} 1 i \ i 1 \end{pmatrix} \begin{pmatrix} 1 i \ i 1 \end{pmatrix} \frac{1}{2} \begin{pmatrix} 0 2i \ 2i 0 \end{pmatrix} \begin{pmatrix} 0 i \ i 0 \end{pmatrix} ]完全不是单位矩阵。所以同样的矩阵用转置和共轭转置会得到完全不同的结论这就是“共轭”两个字的分量。4.3 用代码实现一个稳健的酉矩阵判定函数手算只能处理 2 阶矩阵真实工程里的矩阵动不动就是几百上千阶必须用代码来做。我写过一个自用的判定函数逻辑可以贴出来供你参考。这里我用 Python 的 NumPy 实现重点不是代码多高级而是判定逻辑要严谨。import numpy as np def is_unitary(U, tol1e-10): 判断一个矩阵是否为酉矩阵。 参数: U: 复数矩阵numpy.ndarray tol: 浮点误差容限 返回: (bool, dict): 是否酉矩阵以及各项校验结果 # 自动将实数数组转换为复数数组避免类型问题 U np.asarray(U, dtypenp.complex128) n_rows, n_cols U.shape if n_rows ! n_cols: return False, {reason: not square, rows ! cols} n n_rows I np.eye(n, dtypenp.complex128) # 共轭转置 Udg U.conj().T # 计算两个方向的乘积 left Udg U right U Udg # 用 Frobenius 范数衡量与单位矩阵的偏差 err_left np.linalg.norm(left - I, ordfro) err_right np.linalg.norm(right - I, ordfro) flag (err_left tol) and (err_right tol) return flag, { err_left: err_left, err_right: err_right, condition_number: np.linalg.cond(U) }这里我特意用np.linalg.norm(..., ordfro)来度量矩阵差的大小也就是 Frobenius 范数它把所有元素的误差平方和求平方根是一个标量方便和阈值比较。为什么不用逐元素比较因为浮点运算本身有舍入误差一个理论上完美的酉矩阵经过乘法运算之后结果里也会出现非常微小的非零项比如 (1e-16)。直接判断相等一定会误判。用容限 (1e-10) 是比较稳妥的经验值如果矩阵维度很大可以适当放宽到 (1e-8)。注意如果矩阵元素本身量级很大或者矩阵的维度特别高累积误差可能会超过 (1e-10)。我在处理几千维矩阵时会把容限调整到 (n \times \text{eps}) 量级其中eps是机器精度大约 2.22e-16。这时候阈值设置为n * np.finfo(float).eps * 10比较合理。4.4 从一个随机矩阵构造酉矩阵的实用技巧验证之外还有一个经常遇到的需求怎么人为构造一个酉矩阵来做测试。最常用的方法是取一个随机矩阵 (A)然后对它做 QR 分解得到的 (Q) 矩阵就是一个酉矩阵。每个用 QR 分解解过线性方程组的人都应该知道这件事但真正在测试代码时记得用它的人不多。import numpy as np A np.random.randn(5, 5) 1j * np.random.randn(5, 5) Q, R np.linalg.qr(A) print(is_unitary(Q)[0]) # 大概率输出 True这里的原理在于QR 分解把矩阵分解成一个酉矩阵 (Q) 和一个上三角矩阵 (R) 的乘积而 (Q) 的列向量天然组成了标准正交基。需要提醒的是如果 (A) 是病态的或者秩亏的(R) 可能会非常小甚至为零但 (Q) 本身的酉性还是会保留的。我在给学员展示酉矩阵的时候经常用这一招现场生成测试数据比手算高效太多。如果你需要确定性更强的构造方式可以直接用特征分解造先取任意一个对角矩阵对角线上的元素模长设为 1然后左乘一个任意酉矩阵、右乘它的共轭转置。这样得到的矩阵一定也是酉矩阵因为你其实是在做一个酉相似变换。5. 常见问题与排查技巧实录5.1 浮点误差导致“明明是酉矩阵却判定失败”这是我见过最多的问题。有人拿一个理论上是酉矩阵的矩阵去验证结果发现 (U^\dagger U) 的主对角线元素是 0.9999999999999998而不是 1于是怀疑代码写错了。实际上这就是浮点舍入误差。排查方法很简单看误差的量级。如果误差在 (1e-12) 到 (1e-15) 这个区间基本可以放心矩阵就是酉矩阵如果误差到了 (1e-3) 甚至更大那一定是矩阵本身的问题或者代码逻辑的问题。千万不要对浮点结果做“严格相等”的判断这是所有数值计算里都要牢记的原则。5.2 把共轭转置换成了普通转置在实矩阵里两者没有区别在复矩阵里一步天堂一步地狱。有一个经验之谈只要矩阵里有虚部优先怀疑自己是不是忘了取共轭。尤其在 Python 里U.T是普通转置U.conj().T才是共轭转置这两个写法很容易混。我还见过有人用np.linalg.inv(U)求逆之后再和U.T对比这也是错的因为 (U^T) 不等于 (U^{-1})只有 (U^\dagger) 才等于 (U^{-1})。排查技巧如果验证时发现 (U^\dagger U) 的对角线上出现复数几乎可以断定是共轭转置没写对因为正确的 (U^\dagger U) 必然是 Hermitian 正定矩阵对角线一定是实数。5.3 非方阵可以叫酉矩阵吗严格来说不行。非方阵满足 (U^\dagger U I) 的情况叫“列酉”或者“半酉”它只保证列向量正交归一不保证行向量也正交归一因为行数不等于列数时行向量根本不在同一个空间维度上。但在实际工程里很多 ML 框架里的“正交初始化”用到的就是半酉矩阵。比如一个 (m \times n) 的权重矩阵 (W)(m n)如果满足 (WW^\dagger I)那么它的行向量是标准正交的。这时候它不是一个真正的酉矩阵但继承了很多数值稳定性上的好处。在做神经网络初始化时用这种矩阵可以提高训练稳定性。所以了解区别是必要的但不必因此拒绝在非方阵语境里使用“酉”这个概念前提是你心里清楚严格数学定义和工程习惯的差别。5.4 特征值模为 1 但矩阵不是酉矩阵这个坑特别隐蔽。有一类矩阵它的每个特征值模长恰好都是 1但矩阵本身并不是酉矩阵。比如[ A \begin{pmatrix} 1 1 \ 0 1 \end{pmatrix} ]特征值是两个 1模长都是 1但 (A^\dagger A \neq I)。这说明“特征值模长为 1”只是酉矩阵的必要条件不是充分条件。判断酉矩阵必须看整体不能只看特征值。我在很多初学者的作业里看到过这种误判。原因在于他们记住了“酉矩阵的特征值模长为 1”于是反向推理“特征值模长为 1 所以是酉矩阵”。这在逻辑上是典型的充分必要性混淆。判断时还是要回到定义(U^\dagger U I)没有捷径。5.5 对角化时把酉对角化误以为所有矩阵都能做到这是一个比较深但很常见的误解。每个酉矩阵都能被酉对角化也就是存在酉矩阵 (W)使得 (W^\dagger U W) 是对角矩阵。但反过来并不是每个可对角化的矩阵都能被酉对角化。普通可对角化只需要特征向量线性无关酉对角化要求特征向量组成标准正交基要求严格得多。这引出一个经典结论一个复方阵能被酉对角化的充要条件是它属于正规矩阵也就是满足 (A^\dagger A AA^\dagger)。酉矩阵自身就是正规矩阵所以它能被酉对角化。很多读者学了矩阵对角化之后以为任何方阵都能写成一个类似 (A V \Lambda V^{-1}) 的分解这个没错但要把 (V^{-1}) 换成 (V^\dagger)就只有在正规矩阵的范围内才成立。这个区别在谱聚类、主成分分析、量子态的 Schmidt 分解里都会反复出现。6. 酉矩阵在真实场景中的作用6.1 量子计算每个门都是一个酉矩阵量子计算里有一个基本公设量子比特的演化过程由酉矩阵描述更准确地说量子门是作用在量子态上的酉算子。如果你去查 IBM Qiskit 或者谷歌 Cirq 的文档会看到每个量子门比如 Hadamard 门、Pauli-X 门、相位门写出来都是酉矩阵。为什么量子门必须是酉矩阵核心原因是概率守恒。量子比特的状态是一个复数向量它的每个分量的模平方代表测量到对应状态的概率。一个封闭量子系统的演化不能凭空创造或者消灭概率所以变换必须保持范数不变。保范数恰好就是酉矩阵的核心性质。如果量子门不是酉矩阵系统在演化前后的总概率不为 1这在物理上是荒谬的。一个最常见的单量子比特门——Hadamard 门[ H \frac{1}{\sqrt{2}} \begin{pmatrix} 1 1 \ 1 -1 \end{pmatrix} ]它作用在基态 (|0\rangle) 上产生一个均匀叠加态。验证它是否是酉矩阵非常容易因为这个矩阵是实对称的所以 (H^\dagger H^T H)再做一次矩阵乘法就能看到 (H^2 I)于是 (H^\dagger H I)。从这个例子可以看出量子计算里到处都在和酉矩阵打交道。6.2 信号处理与数据降维在信号处理里傅里叶变换矩阵离散傅里叶变换矩阵经过归一化后就是酉矩阵。这意味着变换前后信号的能量保持不变这正是 Parseval 定理的矩阵形式。你在做频谱分析时不会因为做了一次 FFT 就让总能量变大或者变小这种能量守恒性质对量化误差分析至关重要。主成分分析PCA同样离不开酉矩阵。PCA 的实质是对协方差矩阵做特征分解而实对称矩阵的特征分解可以写成 (A Q \Lambda Q^T)其中 (Q) 是正交矩阵在复数域里则写成 (A U \Lambda U^\dagger)。这里的 (U) 把数据从原始坐标系旋转到主成分坐标系而这个旋转不改变数据点之间的距离关系。所以 PCA 找出的“主方向”不是随便一个方向而是在保持数据空间结构的前提下最大化方差的方向。6.3 数值稳定性为什么矩阵分解算法偏爱酉矩阵做数值线性代数的人有一句口头禅如果能把一个矩阵分解成“酉矩阵乘以别的什么东西”那这个算法大概率是稳定的。原因在 3.1 节说过酉变换不放大误差。你算一个线性方程组 (Ax b)把 (A) 分解成 (QR) 或者 (U\Sigma V^\dagger) 之后中间过程的误差不会因为乘以 (Q) 或 (U) 而被指数放大。这一点和矩阵的条件数直接相关。条件数刻画的是输入扰动对输出解的影响程度。对任意矩阵做乘法可能会让误差放大若干倍但如果乘的是一个酉矩阵误差放大的倍数最多为 1。因此在 QR 分解、奇异值分解SVD、谱分解这些算法里酉矩阵扮演着“稳定器”的角色。我曾经在处理一个病态线性系统时直接高斯消元的结果爆得一塌糊涂换成先做一次 QR 分解把问题转化为 (R x Q^\dagger b)结果就稳下来了。这不是玄学而是酉矩阵保范数性质的直接应用。一个小技巧收尾最后分享一个我这些年反复用到的经验。如果你需要在工程代码里快速地判断“这个变换会不会把误差放大”不用费劲去算条件数先看变换矩阵是不是酉矩阵。如果是那误差一定不会被放大如果不是你再去算条件数不迟。判断的方法就一句话算一下 (U^\dagger U)看是不是单位阵。这个动作几乎不花时间但能帮你少踩很多数值不稳定的坑。我最早学酉矩阵的时候也被那一堆符号绕晕过。后来想明白一件事数学上所有这些看似抽象的定义最终都会落回“它帮你保留了什么东西”这个朴素问题上。酉矩阵保留长度保留夹角保留概率保留误差边界。抓住“保持不变”这三个字你就能理解它一半以上的性质。剩下一半等你做到量子计算或者大型矩阵分解的时候自然就明白了。
返回列表