|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sourceforge.webcompmath.functions.FunctionParserExtension net.sourceforge.webcompmath.functions.TableFunction
public class TableFunction
A TableFunction is a function that is specified by a table of (x,y)-points. Values are interpolated between the specified x-values. This can be done in several differnt ways; the method that is used is controlled by the "Style" property. Since a TableFunction extends FunctionParserExtension, a TableFunction can be added to a Parser (provided it has a name), and it can then be used in expressions parsed by that parser. Note that this class is meant to be used for functions that are defined by a fairly small number of points, since each function evaluation involves a linear search through the list of x-values of the defining points.
Field Summary | |
---|---|
static int |
PIECEWISE_LINEAR
If the style of the function is set to PIECEWISE_LINEAR, then linear interpolation is used to find the value of the functions for x-values between the points that define the function. |
static int |
SMOOTH
If the style of the function is set to SMOOTH, then cubic interpolation is used to find the value of the functions for x-values between the points that define the function. |
static int |
STEP
If the style of the function is set to STEP, then the function is piecewise constant, and the value of the function at x is taken from the nearest point in the list of points that define the function. |
static int |
STEP_LEFT
If the style of the function is set to STEP_LEFT, then the function is piecewise constant, and the value of the function at x is taken from the nearest point to the left in the list of points that define the function. |
static int |
STEP_RIGHT
If the style of the function is set to STEP_RIGHT, then the function is piecewise constant, and the value of the function at x is taken from the nearest point to the right in the list of points that define the function. |
Fields inherited from class net.sourceforge.webcompmath.functions.FunctionParserExtension |
---|
name |
Constructor Summary | |
---|---|
TableFunction()
Create a TableFunction with SMOOTH style and no points. |
|
TableFunction(int style)
Create a TableFunction with specified style and no points. |
Method Summary | |
---|---|
void |
addIntervals(int intervals,
double xmin,
double xmax)
Add points to the table. |
int |
addPoint(double x,
double y)
Add a point with the specified x and y coordinates. |
void |
addPoints(double[] xCoords,
double[] yCoords)
Add points to the table. |
void |
apply(StackOfDouble stack,
Cases cases)
Override method apply() from interface FunctionParserExtension, to handle cases properly. |
void |
copyDataFrom(TableFunction source)
Copy data from another TableFunction, except that the name of the funcion is not duplicated. |
boolean |
dependsOn(Variable wrt)
Returns false. |
Function |
derivative(int wrt)
Compute the derivative of this function. |
Function |
derivative(Variable wrt)
Returns null. |
int |
findPoint(double x)
If there is a point in the list with x-coordinate x, then this function returns the index of that point in the list (where the index of the first point is zero). |
int |
getArity()
Returns the arity of the function, which is 1. |
int |
getPointCount()
Gets the number of points in the table. |
int |
getStyle()
Get the style of this TableFunction, which specifies how values are interpolated between points on the curve. |
double |
getVal(double x)
Get the value of the function at x, using interpolation if x lies between two x-coordinates in the list of points that define the function. |
double |
getVal(double[] params)
Get the value of the function at the specified parameter value. |
double |
getValueWithCases(double[] params,
Cases cases)
Get the value of the function at the specified parameter value. |
double |
getX(int i)
Get the x-coordinate in the i-th point, where the first point is number zero. |
double |
getY(int i)
Get the y-coordinate in the i-th point, where the first point is number zero. |
void |
removeAllPoints()
Remove all points. |
void |
removePointAt(int i)
Removes the i-th point from the list of points. |
void |
setStyle(int style)
Set the style of this TableFunction, to specify how values are interpolated between points on the curve. |
void |
setY(int i,
double y)
Set the y-coordinate in the i-th point to y, where the first point is number zero. |
Methods inherited from class net.sourceforge.webcompmath.functions.FunctionParserExtension |
---|
appendOutputString, compileDerivative, doParse, extent, getName, setName, setParensCanBeOptional |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int SMOOTH
public static final int PIECEWISE_LINEAR
public static final int STEP
public static final int STEP_LEFT
public static final int STEP_RIGHT
Constructor Detail |
---|
public TableFunction()
public TableFunction(int style)
style
- The style for the function: SMOOTH, PIECEWISE_LINEAR, STEP,
STEP_LEFT, or STEP_RIGHT.Method Detail |
---|
public void copyDataFrom(TableFunction source)
source
- table to copy frompublic void setStyle(int style)
style
- One of the style constants SMOOTH, PIECEWISE_LINEAR, STEP,
STEP_LEFT, STEP_RIGHT. Other values are ignored.public int getStyle()
public void addPoints(double[] xCoords, double[] yCoords)
xCoords
- A list of x-coordinates to be added to the table. If this is
null, then nothing is done.yCoords
- The value of yCoords[i], if it exists, is the y-coordinate
corresponding to xCoords[i]. Otherwise, the y-coordinate is
undefined. This can be null, in which case all y-coordinates
are zero.public void addIntervals(int intervals, double xmin, double xmax)
intervals
- The number of intervals. The number of points added is
intervals + 1. The value should be at least 1. If not, nothing
is done.xmin
- The minimim x-coordinate for added points.xmax
- The maximum x-coodinate for added points. Should be greater
than xmin, for efficiency, but no error occurs if it is not.public int addPoint(double x, double y)
x
- The x-coordinate of the point to be added or modified.y
- The y-coordinate of the point.
public int getPointCount()
public double getX(int i)
i
- index of point
public double getY(int i)
i
- index of point
public void setY(int i, double y)
i
- index of pointy
- y coordinate to setpublic int findPoint(double x)
x
- x coordinate to check
public void removePointAt(int i)
i
- index of point to removepublic void removeAllPoints()
public double getVal(double x)
x
- x coordinate
public double getValueWithCases(double[] params, Cases cases)
params
- should be an array of length 1 holding the argument of the
function. However if the length is greater than one, the extra
arguments are simply ignored.cases
- if cases is non-null, a case value is stored here, for help in
continuity computations.
public double getVal(double[] params)
params
- should be an array of length 1 holding the argument of the
function. However if the length is greater than one, the extra
arguments are simply ignored.
public Function derivative(int wrt)
wrt
- arg. number with respect to
public Function derivative(Variable wrt)
wrt
- variable with respect to
public boolean dependsOn(Variable wrt)
wrt
- variable with respect to
public int getArity()
public void apply(StackOfDouble stack, Cases cases)
apply
in interface ExpressionCommand
apply
in class FunctionParserExtension
stack
- stack to usecases
- cases to use
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |