小编E.Z*_*nca的帖子

Haskell Matrix平等失败

我正忙着使用Haskell来实现一些量子变换矩阵.我有一个函数,用于通过构建反矩阵和伴随矩阵然后测试两者来测试方阵是否是单一的.

该函数如下所示,其中wrap是一个简单的函数,用于测试从inverse返回的Either值.

isUnitary :: [[Copmlex Double]] -> Bool
isUnitary lists = let mat =  fromLists lists --Create matrix from lists
                      conjugateTranspose = fmap conjugate $ Data.Matrix.transpose mat --Conjugate Transpose Matrix
                      inverseMat = debug("ConjugateTranspose: \n" ++ show conjugateTranspose ++ "\n")
                                    wrap $ inverse mat --The inverse matrix
                      in if (conjugateTranspose) == inverseMat then debug("InverseMat: \n" ++ show inverseMat ++ "\n")
                                                                      True
                         else debug("InverseMat: \n" ++ show inverseMat ++ "\n")
                                False
Run Code Online (Sandbox Code Playgroud)

对于一些简单的测试矩阵,它工作正常,在获得如下所示的矩阵时返回True:

ConjugateTranspose:
(    1.0 :+ (-0.0)                   0.0 …
Run Code Online (Sandbox Code Playgroud)

haskell equality matrix

5
推荐指数
1
解决办法
73
查看次数

标签 统计

equality ×1

haskell ×1

matrix ×1