public UnconLeastSqLevenbergMarquardt_F64(MatrixMath<S> math, HessianLeastSquares<S> hessian ) { super(math,hessian); this.jacobian = math.createMatrix(); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsResiduals, DMatrixRMaj gradient, HessianLeastSquares<S> hessian) { if( !sameStateAsResiduals ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacobian); hessian.updateHessian(jacobian); math.multTransA(jacobian, residuals, gradient); }
@Test public void divideColumns() { DMatrixRMaj original = RandomMatrices_DDRM.rectangle(4,4,-1,1,rand); DMatrixRMaj v = new DMatrixRMaj(new double[][]{{0.5},{0.75},{2},{0.9}}); T _A = convertA(original); alg.divideColumns(v,_A); DMatrixRMaj A = convertB(_A); for (int row = 0; row < 4; row++) { for (int col = 0; col < 4; col++) { assertEquals(original.get(row,col)/v.data[col],A.get(row,col), UtilEjml.TEST_F64); } } }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsResiduals, DMatrixRMaj gradient, HessianLeastSquares<S> hessian) { if( !sameStateAsResiduals ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacobian); hessian.updateHessian(jacobian); math.multTransA(jacobian, residuals, gradient); }
public UnconLeastSqTrustRegion_F64(ParameterUpdate<S> parameterUpdate, HessianLeastSquares<S> hessian , MatrixMath<S> math) { super(parameterUpdate, hessian); this.math = math; jacobian = math.createMatrix(); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HessianLeastSquares<S> hessian) { if( !sameStateAsCost ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacobian); hessian.updateHessian(jacobian); math.multTransA(jacobian, residuals, gradient); }
public UnconLeastSqLevenbergMarquardtSchur_F64(MatrixMath<S> math, HessianSchurComplement<S> hessian ) { super(math,hessian); this.jacLeft = math.createMatrix(); this.jacRight = math.createMatrix(); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HessianLeastSquares<S> hessian) { if( !sameStateAsCost ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacobian); hessian.updateHessian(jacobian); math.multTransA(jacobian, residuals, gradient); }
public UnconLeastSqLevenbergMarquardt_F64(MatrixMath<S> math, HessianLeastSquares<S> hessian ) { super(math,hessian); this.jacobian = math.createMatrix(); }
@Test public void multTransA() { DMatrixRMaj A = RandomMatrices_DDRM.rectangle(6,2,-1,1,rand); DMatrixRMaj B = RandomMatrices_DDRM.rectangle(6,4,-1,1,rand); DMatrixRMaj expected = new DMatrixRMaj(1,1); DMatrixRMaj found = new DMatrixRMaj(1,1); CommonOps_DDRM.multTransA(A,B,expected); alg.multTransA(convertA(A),B,found); assertTrue(MatrixFeatures_DDRM.isIdentical(expected,found,UtilEjml.TEST_F64)); }
public UnconLeastSqLevenbergMarquardtSchur_F64(MatrixMath<S> math, HessianSchurComplement<S> hessian ) { super(math,hessian); this.jacLeft = math.createMatrix(); this.jacRight = math.createMatrix(); }
public UnconLeastSqTrustRegion_F64(ParameterUpdate<S> parameterUpdate, HessianLeastSquares<S> hessian , MatrixMath<S> math) { super(parameterUpdate, hessian); this.math = math; jacobian = math.createMatrix(); }
@Test public void createMatrix() { T a = alg.createMatrix(); assertEquals(1,a.getNumCols()); assertEquals(1,a.getNumRows()); } }