如何检查矩阵在clojure中是否为上三角形

时间:2014-02-06 06:31:23

标签: vector matrix clojure

我想编写一个函数来计算矩阵的上三角性质。因此,假设a_i_j是第i行和第j列中的数字。矩阵是 对于所有i,a_i_j = 0的上三角形>学家

2 个答案:

答案 0 :(得分:1)

试试这个:

(defn is-upper-triangular [m]
  (->> (map-indexed vector m)
       (mapcat (fn [[r v]] (take r v)))
       (every? zero?)))

上面的代码从第一行获取0个元素,从第二行获取1个元素,从第三行获取2个元素等等,并检查所有获取的元素是否为零。如果全部为零,则为上三角形。

此代码不检查给定矩阵是否为正方形。如果有必要,您可以添加此检查。

答案 1 :(得分:0)

upper-triangular?尚未在core.matrix API中,但如果您使用vectorz-clj,则可以使用Java互操作获取该函数:

(def a (array :vectorz [[1 2] [0 4]]))

(.isUpperTriangular a)
=> true

(.isUpperTriangular (transpose a))
=> false