第五章:用NumPy亲手验证幺正矩阵到这里,整篇文章已经完成了两个关键层面的铺垫。前面几章告诉我们:从物理上看,封闭量子系统的演化必须保持概率结构;从数学上看,这要求演化保持复内积;从动力学上看,厄米哈密顿量通过指数映射生成幺正演化。但如果只停留在公式层面,很多理解其实还是“看懂了,但没真正握住”。而程序员最擅长把抽象结构抓牢的方法,就是:写代码,亲手验证。这一章我们不追求炫技,而是做一组非常扎实的小实验,让“幺正”从定义变成你能反复测试的对象。目标是把下面几件事彻底变成肌肉记忆:什么叫矩阵是幺正的;如何在代码里检查幺正性;幺正矩阵会保持什么;非幺正矩阵又会破坏什么;厄米矩阵指数化后真的会给出幺正矩阵;量子门为什么本质上就是一类特殊的幺正矩阵。这一章的风格会明显更“程序员友好”:少一点概念堆叠,多一点运行结果背后的解释。5.1 准备工作:我们到底要验证什么先把最核心的定义重新写一遍。一个复矩阵 (U) 是幺正矩阵,当且仅当:U†U=UU†=IU^\dagger U = UU^\dagger = IU†U=UU†=I这句话在代码里意味着两件事:第一,U.conj().T @ U应该等于单位矩阵。第二,U @ U.conj().T也应当等于单位矩阵。在有限维方阵里,这两个条件理论上等价;但在数值计算中,最好都检查一下,因为浮点误差、维度错误、实现问题都可能埋坑。另外,幺正矩阵有两个特别重要的可验证后果:后果 1:保持范数对任意态 (∣ψ⟩|\psi\rangle∣ψ⟩),有∣U∣ψ⟩∣=∣∣ψ⟩∣|U|\psi\rangle| = ||\psi\rangle|∣U∣ψ⟩∣=∣∣ψ⟩∣后果 2:保持内积对任意 (∣ψ⟩,∣ϕ⟩|\psi\rangle, |\phi\rangle∣ψ⟩,∣ϕ⟩),有⟨Uϕ∣Uψ⟩=⟨ϕ∣ψ⟩\langle U\phi | U\psi \rangle = \langle \phi | \psi \rangle⟨Uϕ∣Uψ⟩=⟨ϕ∣ψ⟩所以这一章本质上是在做三类实验:直接检查定义;通过范数守恒侧面验证;通过内积守恒再侧面验证。如果三者都对上了,你对幺正矩阵的理解就会一下子稳很多。5.2 写一个最基础的is_unitary()函数先从最常用的工具函数开始。importnumpyasnpdefis_unitary(U,tol=1e-10):""" Check whether a square complex matrix U is unitary. Parameters ---------- U : np.ndarray Input matrix. tol : float Numerical tolerance. Returns ------- bool True if U is unitary, False otherwise. """U=np.asarray(U,dtype=complex)ifU.ndim!=2:returnFalserows,cols=U.shapeifrows!=cols:returnFalseI=np.eye(rows,dtype=complex)left=U.conj().T @ U right=U @ U.conj().Treturnnp.allclose(left,I,atol=tol)andnp.allclose(right,I,atol=tol)这个函数做了几件正确的事:强制把输入当作复矩阵处理;先检查是不是二维方阵;再分别检查左右乘是否都接近单位矩阵;使用np.allclose而不是直接==,因为浮点计算永远不能太天真。如果你以后写量子代码,这个函数基本会成为常备工具。可以先测几个简单例子:I2=np.eye(2,dtype=complex)print(is_unitary(I2))单位矩阵当然应该返回True。再试一个明显不是幺正的矩阵:A=np.array($$2,0$,$0,1$$,dtype=complex)print(is_unitary(A))应该返回False。5.3 先拿最熟悉的例子练手:Hadamard 矩阵Hadamard门是量子计算里最经典的单比特门之一:H=12[111−1]H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 1\ 1 -1 \end{bmatrix}H=21[111−1]代码写成:H=(1/np.sqrt(2))*np.array($$1,1$,$1,-1$$,dtype=complex)print("H is unitary:",is_unitary(H))print("H^dagger H =")print(H.conj().T @ H)理论上你会看到:H is unitary: TrueH.conj().T @ H很接近单位矩阵这个例子很重要,因为它让你第一次从代码层面看到:一个量子门不是“某种抽象物”,它就是一个满足幺正条件的复矩阵。而且 Hadamard 的好处是它不含复杂相位,看起来很朴素。这有助于消除一种误解:幺正矩阵不一定长得很复杂。5.4 再看 Pauli 矩阵:最小量子门集合的基本砖块单比特量子门里最常见的还有三类 Pauli 矩阵:X=[0110],Y=[0−ii0],Z=[100−1]X = \begin{bmatrix} 0 1\ 1 0 \end{bmatrix}, \quad Y = \begin{bmatrix} 0 -i\ i 0 \end{bmatrix}, \quad Z = \begin{bmatrix} 1 0\ 0 -1 \end{bmatrix}X=[011