@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.norm2Squared(); double beta = deltaTgradient / denom; return beta; }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver( OverconstrainedMatrixVectorMultiplier function) { this.A = function; x = super.x0; AtransB = (A.transposeMult(rhs)); residual = AtransB.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { // The Chebyshev distance is the infinity-norm of difference, which is // the size of the largest difference in a single dimension between // the two vectors. return first.convertToVector().minus( second.convertToVector()).normInfinity(); }
@Override protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector direction = this.lineFunction.getDirection(); Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.dotProduct( direction ); double beta = -deltaTgradient / denom; return beta; }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { // The Chebyshev distance is the infinity-norm of difference, which is // the size of the largest difference in a single dimension between // the two vectors. return first.convertToVector().minus( second.convertToVector()).normInfinity(); }
@Override final protected void initializeSolver( OverconstrainedMatrixVectorMultiplier function) { this.A = function; x = super.x0; AtransB = (A.transposeMult(rhs)); residual = AtransB.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver( MatrixVectorMultiplierWithPreconditioner function) { this.A = function; x = super.x0; residual = rhs.minus(A.evaluate(x)); d = A.precondition(residual); delta = residual.dotProduct(d); }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { return first.convertToVector().minus( second.convertToVector()).norm(this.power); }
@Override protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector direction = this.lineFunction.getDirection(); Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.dotProduct( direction ); double beta = -deltaTgradient / denom; return beta; }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { return first.convertToVector().minus( second.convertToVector()).norm(this.power); }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { // The Chebyshev distance is the infinity-norm of difference, which is // the size of the largest difference in a single dimension between // the two vectors. return first.convertToVector().minus( second.convertToVector()).normInfinity(); }
@Override final protected void initializeSolver( MatrixVectorMultiplierWithPreconditioner function) { this.A = function; x = super.x0; residual = rhs.minus(A.evaluate(x)); d = A.precondition(residual); delta = residual.dotProduct(d); }
@Override public double evaluate( final Vectorizable first, final Vectorizable second) { return first.convertToVector().minus( second.convertToVector()).norm(this.power); }
@Override final protected void initializeSolver( MatrixVectorMultiplierWithPreconditioner function) { this.A = function; x = super.x0; residual = rhs.minus(A.evaluate(x)); d = A.precondition(residual); delta = residual.dotProduct(d); }
@Override protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector direction = this.lineFunction.getDirection(); Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.dotProduct( direction ); double beta = -deltaTgradient / denom; return beta; }