gov.sandia.cognition.learning.algorithm.minimization.line

## Class DirectionalVectorToScalarFunction

• All Implemented Interfaces:
Evaluator<java.lang.Double,java.lang.Double>, DifferentiableEvaluator<java.lang.Double,java.lang.Double,java.lang.Double>, DifferentiableUnivariateScalarFunction, ScalarFunction<java.lang.Double>, UnivariateScalarFunction, CloneableSerializable, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
DirectionalVectorToDifferentiableScalarFunction

```@CodeReview(reviewer="Kevin R. Dixon",
date="2009-07-06",
changesNeeded=false,
comments={"Fixed bug introduced into the numerical differentiation procedure.","Made clone() call super.clone().","Fixed the brittleness in the copy constructor."})
public class DirectionalVectorToScalarFunction
extends AbstractDifferentiableUnivariateScalarFunction```
Maps a vector function onto a scalar one by using a directional vector and vector offset, and the parameter to the function is a scalar value along the direction from the start-point offset. This class also approximates the derivative by a method of forward differences.
Since:
2.0
Author:
Kevin R. Dixon
Serialized Form
• ### Field Summary

Fields
Modifier and Type Field and Description
`static double` `FORWARD_DIFFERENCE`
Value used in the forward-difference derivative approximation
• ### Constructor Summary

Constructors
Constructor and Description
`DirectionalVectorToScalarFunction(DirectionalVectorToScalarFunction other)`
Copy constructor
```DirectionalVectorToScalarFunction(Evaluator<? super Vector,? extends java.lang.Double> vectorScalarFunction, Vector vectorOffset, Vector direction)```
Creates a new function that restricts the vectorFunction to a particular vector direction
• ### Method Summary

All Methods
Modifier and Type Method and Description
`DirectionalVectorToScalarFunction` `clone()`
This makes public the clone method on the `Object` class and removes the exception that it throws.
`Vector` `computeVector(double scaleFactor)`
Transforms the scaleFactor into a multidimensional Vector using the direction
`double` `differentiate(double input)`
Differentiates the output of the function about the given input
`double` `evaluate(double input)`
Evaluates the vector function along the direction using the scale factor "input" and vectorOffset
`Vector` `getDirection()`
Getter for direction
`Vector` `getVectorOffset()`
Getter for vectorOffset
`Evaluator<? super Vector,? extends java.lang.Double>` `getVectorScalarFunction()`
Getter for vectorScalarFunction
`void` `setDirection(Vector direction)`
Setter for direction
`void` `setVectorOffset(Vector vectorOffset)`
Point to use as input to vectorFunction
`void` `setVectorScalarFunction(Evaluator<? super Vector,? extends java.lang.Double> vectorScalarFunction)`
Setter for vectorScalarFunction
• ### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Methods inherited from interface gov.sandia.cognition.math.DifferentiableUnivariateScalarFunction

`differentiate`
• ### Methods inherited from interface gov.sandia.cognition.math.UnivariateScalarFunction

`evaluate, evaluateAsDouble`
• ### Field Detail

• #### FORWARD_DIFFERENCE

`public static final double FORWARD_DIFFERENCE`
Value used in the forward-difference derivative approximation
Constant Field Values
• ### Constructor Detail

• #### DirectionalVectorToScalarFunction

```public DirectionalVectorToScalarFunction(Evaluator<? super Vector,? extends java.lang.Double> vectorScalarFunction,
Vector vectorOffset,
Vector direction)```
Creates a new function that restricts the vectorFunction to a particular vector direction
Parameters:
`vectorScalarFunction` - Function that maps a Vector onto a Double
`vectorOffset` - offset vector from which to scale along direction to evaluate vectorFunction
`direction` - Direction to optimize along
• #### DirectionalVectorToScalarFunction

`public DirectionalVectorToScalarFunction(DirectionalVectorToScalarFunction other)`
Copy constructor
Parameters:
`other` - DirectionalVectorToScalarFunction to copy
• ### Method Detail

• #### clone

`public DirectionalVectorToScalarFunction clone()`
Description copied from class: `AbstractCloneableSerializable`
This makes public the clone method on the `Object` class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call `super.clone()` to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in `ObjectUtil` may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use `super.clone()` as the basis for your implementation.
Specified by:
`clone` in interface `CloneableSerializable`
Overrides:
`clone` in class `AbstractCloneableSerializable`
Returns:
A clone of this object.
• #### getDirection

`public Vector getDirection()`
Getter for direction
Returns:
Direction along vectorFunction
• #### setDirection

`public void setDirection(Vector direction)`
Setter for direction
Parameters:
`direction` - Direction to optimize along
• #### getVectorOffset

`public Vector getVectorOffset()`
Getter for vectorOffset
Returns:
Point to use as input to vectorFunction
• #### setVectorOffset

`public void setVectorOffset(Vector vectorOffset)`
Point to use as input to vectorFunction
Parameters:
`vectorOffset` - Point to use as input to vectorFunction
• #### computeVector

`public Vector computeVector(double scaleFactor)`
Transforms the scaleFactor into a multidimensional Vector using the direction
Parameters:
`scaleFactor` - scale factor to move along the direction from vectorOffset
Returns:
Multidimensional vector corresponding to the scale factor along the direction
• #### getVectorScalarFunction

`public Evaluator<? super Vector,? extends java.lang.Double> getVectorScalarFunction()`
Getter for vectorScalarFunction
Returns:
Function that maps a Vector onto a Double
• #### setVectorScalarFunction

`public void setVectorScalarFunction(Evaluator<? super Vector,? extends java.lang.Double> vectorScalarFunction)`
Setter for vectorScalarFunction
Parameters:
`vectorScalarFunction` - Function that maps a Vector onto a Double
• #### evaluate

`public double evaluate(double input)`
Evaluates the vector function along the direction using the scale factor "input" and vectorOffset
Parameters:
`input` - scale factor to move along direction from vectorOffset
Returns:
vectorFunction evaluated at the Vector corresponding to the scale factor
• #### differentiate

`public double differentiate(double input)`
Description copied from interface: `DifferentiableUnivariateScalarFunction`
Differentiates the output of the function about the given input
Parameters:
`input` - Input about which to compute the derivative of the function output
Returns:
Derivative of the output with respect to the input