From 87bac1a3140696789e703d6d13e61c0a55cfe68f Mon Sep 17 00:00:00 2001 From: fefe <hofer.francois.01@gmail.com> Date: Fri, 10 Jan 2020 00:46:08 +0100 Subject: [PATCH] Inv function tested ! Works fine Youhhhhou ! Solve function done but not tested yet ! --- src/main/java/ch/hepia/numeric/Matrix.java | 16 ++++++++++++++-- src/test/java/ch/hepia/numeric/AppTest.java | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/hepia/numeric/Matrix.java b/src/main/java/ch/hepia/numeric/Matrix.java index 63a8e29..bdbe7c5 100644 --- a/src/main/java/ch/hepia/numeric/Matrix.java +++ b/src/main/java/ch/hepia/numeric/Matrix.java @@ -105,7 +105,10 @@ public class Matrix { } public Matrix inv() { - throw new UnsupportedOperationException("This feature isn't implemented yet"); + Matrix newMat = this.adjugate(); + newMat = newMat.mul(1.0/this.det()); + return newMat; + } public double det() { @@ -202,7 +205,16 @@ public class Matrix { throw new UnsupportedOperationException("This feature isn't implemented yet"); } public static Vector solve(Matrix m, Vector b) { - throw new UnsupportedOperationException("This feature isn't implemented yet"); + Matrix newMat = m.inv(); + List<Double> newLst = new ArrayList<>(); + for (int i = 0; i < newMat.nbCols(); i++){ + double tot = 0.0; + for (int y = 0; y < b.len(); y++){ + tot += newMat.cols().get(y).get(i) * b.get(i); + } + newLst.add(tot); + } + return Vector.of(newLst); } } diff --git a/src/test/java/ch/hepia/numeric/AppTest.java b/src/test/java/ch/hepia/numeric/AppTest.java index fcf0f79..4ada9b8 100644 --- a/src/test/java/ch/hepia/numeric/AppTest.java +++ b/src/test/java/ch/hepia/numeric/AppTest.java @@ -240,4 +240,19 @@ class VectorTest { return (double)i + j; })); } + + @Test + void matrixInv() { + List<Vector> lstVec = new ArrayList<>(); + lstVec.add(Vector.of(1.0, 1.0, 2.0)); + lstVec.add(Vector.of(1.0, 2.0, 1.0)); + lstVec.add(Vector.of(2.0, 1.0, 1.0)); + Matrix m = Matrix.of(lstVec); + lstVec = new ArrayList<>(); + lstVec.add(Vector.of(-0.25, -0.25, 0.75)); + lstVec.add(Vector.of(-0.25, 0.75, -0.25)); + lstVec.add(Vector.of(0.75, -0.25, -0.25)); + assertEquals(m.inv(), Matrix.of(lstVec)); + + } } -- GitLab