gpt4 book ai didi

Haskell的民宿矩阵乘法错了?

转载 作者:行者123 更新时间:2023-12-02 17:41:14 25 4
gpt4 key购买 nike

Haskell 的住宿加早餐图书馆是https://wiki.haskell.org/Applications_and_libraries/Mathematics 中线性代数部分的第一个图书馆。 。所以,我正在尝试:

let a = Matrix.fromList [[1,2,3], [4,5,6], [7,8,9]]
let b = Matrix.fromList [[1], [2], [3]]
a * b
*** Exception: Matrix.times: `numRows a' and `numCols b' don't match.

什么?如果我将 [m x n] 矩阵乘以 [n x p] 矩阵,我应该得到 [m x p] 矩阵,而不是这个愚蠢的异常(exception)。好吧,也许库作者不知道哪里是左边,哪里是右边。

b * a
*** Exception: Ix{Int}.index: Index (2) out of range ((1,1))

哇啊啊?

最佳答案

我敢打赌你正在使用一个新的 GHC;结果, cabal 选择了老式的住宿加早餐旅馆。在我的机器上,它选择了版本0.1.2(尽管最新版本是0.4.3);这个版本似乎有一个 incorrect dimensions check in its multiplication function :

a `times` b
| numRows a /= numCols b = error "Matrix.times: `numRows a' and `numCols b' don't match."
| otherwise = fromList [ [ row i a `dotProd` col j b
| j <- [1..numCols b] ]
| i <- [1..numRows a] ]

该支票应该是 numCols a /= numRows b 。该检查在库的更高版本中已修复;但这些版本也(正确)指定 base 的上限排除新的 GHC。

因此,我怀疑您要么必须更新库才能使用新的 GHC,修补旧版本的库,要么使用更积极维护的库。我对hmatrix很满意在过去,请注意矩阵乘法拼写为 (<>) ,不是(*) .

关于Haskell的民宿矩阵乘法错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33926631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com