diff --git a/src/main/java/ch/hepia/numeric/Matrix.java b/src/main/java/ch/hepia/numeric/Matrix.java index 30b9c0a02a7400f29b6face06208c2330b0f777a..3809e962b5eca84bde4a6958d71fd65f33675e28 100644 --- a/src/main/java/ch/hepia/numeric/Matrix.java +++ b/src/main/java/ch/hepia/numeric/Matrix.java @@ -120,11 +120,11 @@ public class Matrix { } else { double tot = 0.0; for (int i = 0; i < this.nbCols();i++){ - if (i+this.nbCols() % 2 == 0){ - tot += this.removed(i, 0).mul(this.get(i, 0)).det(); + if (i % 2 == 0){ + tot += this.removed(i, 0).det() * this.get(i,0); } else{ - tot -= this.removed(i, 0).mul(this.get(i, 0)).det(); + tot += this.removed(i, 0).det() * this.get(i,0) * (-1.0); } } return tot; diff --git a/src/test/java/ch/hepia/numeric/AppTest.java b/src/test/java/ch/hepia/numeric/AppTest.java index d7556325f83745a35e8b3b5d9cbdabd4df66df81..7c6b60a6e1a67b94a1c42ab417210631993d37a6 100644 --- a/src/test/java/ch/hepia/numeric/AppTest.java +++ b/src/test/java/ch/hepia/numeric/AppTest.java @@ -207,7 +207,11 @@ class VectorTest { lstVec.add(Vector.of(3.0,6.0,9.0)); Matrix mat = Matrix.of(lstVec); assertEquals(mat.det(), 0.0); - - + lstVec = new ArrayList<>(); + lstVec.add(Vector.of(1.0, 5.0, 9.0, 13.0)); + lstVec.add(Vector.of(2.0, 6.0, 10.0, 14.0)); + lstVec.add(Vector.of(3.0, 7.0, 11.0, 15.0)); + lstVec.add(Vector.of(4.0,8.0,12.0, 16.0)); + assertEquals(Matrix.of(lstVec).det(), 0.0); } }