2 个量子位操作的 Cartan KAK 分解的一个重要组成部分是使用正交(非酉,纯实正交)矩阵对 4x4 酉矩阵进行对角化。也就是说,给定酉 U 找到正交的 A 和 B 使得它A*U*B是对角线。(实际上,正交矩阵应该是特殊的正交矩阵,但这很容易解决。)
编写代码来正确地做到这一点(没关系很快)是一个巨大的痛苦。numpy 中是否包含可用于完成大部分繁重工作的方法?
例如,这个问题简化为同时对角化real(U)和imag(U)。作为一个疯狂的猜测,我测试了 svd 是否real(U) + random.random()*imag(U)会给出一个碰巧起作用的结果。在这种情况下,Numpy 确实给出了正交矩阵,但不幸的是,它们并不总是对原始 U 进行对角化。