2014-02-06 41 views

回答

1

尝试这种情况:

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

上述代码采取从第一行0元件中,从第二行1个元件,以及从第三行,等等2个元件...并检查所有的取元素是零。如果全部为零,则为上三角形。

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

0

upper-triangular?不是core.matrix API在又,但如果使用vectorz-clj可以在与Java互操作功能得到:

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

(.isUpperTriangular a) 
=> true 

(.isUpperTriangular (transpose a)) 
=> false 
+0

(DEF一个(数组:vectorz [[1 2] [0 4 ]]))给出以下例外。我在窗户上使用Leiningen。 CompilerException java.lang.RuntimeException:无法在此上下文中解析符号:数组,编译:(NO_SOURCE_PATH:1:8) –

+0

听起来像需要首先执行一个'(使用'clojure.core.matrix')来导入内核.matrix API函数进入你当前的命名空间 – mikera