【发布时间】:2014-01-16 03:09:58
【问题描述】:
我有以下函数来获取矩阵的幂
X^0 = 单位矩阵,
X^1 =X;
X^2 = X'X;
X^3 = X X' X;
X^4 = X' X X' X ......
我尝试了以下功能:
import Numeric.Container
import Numeric.LinearAlgebra
mpow :: Field t => (Matrix t) -> Integer -> (Matrix t)
mpow x 0 = ident $ cols x
mpow x 1 = x
mpow x n =
if (mod n 2) == 0 then
multiply (trans x) (mpow x $ n - 1)
else
multiply x (mpow x $ n - 1)
是否可以不使用 if-else 语句重写这个函数?
【问题讨论】:
-
你不能只递归向右,基本上是lFolding
\x y -> trans x `tMultiply` y(或结合了换位和乘法的优化版本)?
标签: haskell matrix linear-algebra