HMatrix矩阵双 - 双产品

时间:2015-03-02 14:54:19

标签: haskell hmatrix

f1 :: Mesh -> Matrix Double
f1 me = knx where
  hx :: Double
  (hx , _) = h me
  a, knx :: Matrix Double
  a = fromLists [[1,2], [3,4]] 
  knx = hx * a 
  -- knx = 2 * a

我不明白为什么在上面的函数中,多次使用2次作用,而乘以hx = 0.5则不然。 OTOH,将Matrix DoubleDouble 外部相乘,函数可以正常工作。

Couldn't match expected type ‘Matrix Double’
            with actual type ‘Double’
In the first argument of ‘(*)’, namely ‘hx’
In the expression: hx * a
Failed, modules loaded: none.

我很困惑。欢迎任何指示!

1 个答案:

答案 0 :(得分:1)

HMatrix中,scale :: Container c e => e -> c e -> c e执行标签上的说明(将e中的c e与第一个e相乘。以下是一些使用示例:https://hackage.haskell.org/package/hmatrix-0.16.1.4/docs/src/Data-Packed-Internal-Numeric.html

应该注意scale x通过fromList考虑x单个列表来构造一个Container类型。

如果至少常见的算术运算会被重载,那将非常方便,因此公式可能类似于它们的数学对应物。我不确定定义函数同义词(例如(.*) = scale)是不是一个好主意,或者它只会增加一层复杂性。有什么想法吗?