package org.matheclipse.core.reflection.system;
import org.apache.commons.math3.linear.DecompositionSolver;
import org.apache.commons.math3.linear.FieldDecompositionSolver;
import org.apache.commons.math3.linear.FieldLUDecomposition;
import org.apache.commons.math3.linear.FieldMatrix;
import org.apache.commons.math3.linear.LUDecomposition;
import org.apache.commons.math3.linear.RealMatrix;
import org.matheclipse.core.eval.interfaces.AbstractMatrix1Matrix;
import org.matheclipse.core.expression.ExprFieldElement;
/**
* Invert a matrix
*
* See Invertible
* matrix
*/
public class Inverse extends AbstractMatrix1Matrix {
public Inverse() {
super();
}
@Override
public FieldMatrix matrixEval(FieldMatrix matrix) {
final FieldLUDecomposition lu = new FieldLUDecomposition(
matrix);
FieldDecompositionSolver solver = lu.getSolver();
if (!solver.isNonSingular()) {
return null;
}
return solver.getInverse();
}
@Override
public RealMatrix realMatrixEval(RealMatrix matrix) {
final LUDecomposition lu = new LUDecomposition(matrix);
DecompositionSolver solver = lu.getSolver();
if (!solver.isNonSingular()) {
return null;
}
return solver.getInverse();
}
}
Ads help maintain this website.