|
AlgART Home | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.algart.math.functions.LinearFunc
public abstract class LinearFunc extends java.lang.Object implements Func
Linear function:
f(x0, x1, ..., xn-1) =
b + a0x0 + a1x1
+...+ an-1xn-1.
Note: if b==+0.0 or b==−0.0, this sum is calculated as
The get(double...) method of the instance of this class requires at least n arguments
and throws IndexOutOfBoundsException if the number of arguments is less.
Please note: if all ai coefficients are equal (averaging function),
this class does not spend Java memory for storing them.
So you can freely create averaging linear function with very large number of coefficients;
but in this case you should avoid calling a() method.
This class is immutable and thread-safe: there are no ways to modify settings of the created instance.
AlgART Laboratory 2007-2013
| Modifier and Type | Class and Description |
|---|---|
static class |
LinearFunc.Updatable
Updatable extension of the linear function
with one argument. |
| Modifier and Type | Field and Description |
|---|
| Fields inherited from interface net.algart.math.functions.Func |
|---|
ABS, ABS_DIFF, HALF_X_MINUS_Y, HALF_X_PLUS_Y, HALF_Y_MINUS_X, IDENTITY, MAX, MIN, POSITIVE_DIFF, REVERSE, SELECT, SELECT_FROM_8_DIRECTIONS_2D, SELECT_IF_GREATER, SELECT_IF_GREATER_OR_EQUAL, SHIFTS_ALONG_8_DIRECTIONS_2D, UPDATABLE_IDENTITY, X_MINUS_Y, X_PLUS_Y, Y_MINUS_X |
| Modifier and Type | Method and Description |
|---|---|
double[] |
a()
Returns an array containing all ai coefficients of this linear function. |
double |
a(int i)
Returns ai coefficient of this linear function. |
double |
b()
Returns b coefficient of this linear function. |
abstract double |
get()
Equivalent to get(new double[0]). |
abstract double |
get(double... x)
Returns the result of this function for the given arguments: f(x0, x1, ..., xx.length-1). |
abstract double |
get(double x0)
Equivalent to get(new double[] {x0}). |
abstract double |
get(double x0,
double x1)
Equivalent to get(new double[] {x0, x1}). |
abstract double |
get(double x0,
double x1,
double x2)
Equivalent to get(new double[] {x0, x1, x2}). |
abstract double |
get(double x0,
double x1,
double x2,
double x3)
Equivalent to get(new double[] {x0, x1, x2, x3}). |
static LinearFunc |
getAveragingInstance(int n)
Equivalent to getNonweightedInstance(0.0, 1.0/n, n):
the average from n numbers. |
static LinearFunc |
getInstance(double b,
double... a)
Returns an instance of this class, describing the linear function with specified coefficients: b + a0x0 + a1x1 +...+ an-1xn-1. |
static LinearFunc |
getInstance(Range destRange,
Range srcRange)
Returns an instance of this class describing the following linear function with one argument: dmin + (dmax-dmin) * (x-smin) / (smax-smin), where smin..smax is srcRange and dmin..dmax is destRange. |
static LinearFunc |
getNonweightedInstance(double b,
double a,
int n)
Returns an instance of this class, describing the linear function with the specified b and the specified number (n) of equal coefficients ai: b + a(x0 + x1 +...+ xn-1). |
static LinearFunc.Updatable |
getUpdatableInstance(double b,
double a)
Returns an instance of the updatable version of this class, describing the linear function with specified coefficients: b + ax0. |
boolean |
isNonweighted()
Returns true if n()<=1 or
if all ai coefficients are equal. |
int |
n()
Returns the number of ai coefficients. |
java.lang.String |
toString()
Returns a brief string description of this object. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Method Detail |
|---|
public static LinearFunc getInstance(double b,
double... a)
The passed reference a is not maintained by the created instance: if necessary, the Java array is cloned.
b - the b coefficient.a - the a coefficients.
public static LinearFunc getNonweightedInstance(double b,
double a,
int n)
b - the b coefficient.a - the common value of all ai coefficients.n - the number of ai coefficients.public static LinearFunc getAveragingInstance(int n)
getNonweightedInstance(0.0, 1.0/n, n):
the average from n numbers.
n - the number of ai coefficients.
public static LinearFunc getInstance(Range destRange,
Range srcRange)
size()==0.
In that special case the behavior of the returned function is not specified
(but no exceptions are thrown).
destRange - the destination range.srcRange - the source range.java.lang.NullPointerException - if one of the arguments is null.
public static LinearFunc.Updatable getUpdatableInstance(double b,
double a)
set method of this instance sets
x[0]=(newResult-b)*aInv, where aInv=1.0/a
is calculated while the instance creation.
b - the b coefficient.a - the a coefficient.public abstract double get(double... x)
FuncThis method must not change the values of x elements!
get in interface Funcx - the function arguments.public abstract double get()
Funcget(new double[0]).
Provides better performance because it does not require Java array creation.
get in interface Funcpublic abstract double get(double x0)
Funcget(new double[] {x0}).
Provides better performance because it does not require Java array creation.
get in interface Funcx0 - the function argument.
public abstract double get(double x0,
double x1)
Funcget(new double[] {x0, x1}).
Provides better performance because it does not require Java array creation.
get in interface Funcx0 - the first function argument.x1 - the second function argument.
public abstract double get(double x0,
double x1,
double x2)
Funcget(new double[] {x0, x1, x2}).
Provides better performance because it does not require Java array creation.
get in interface Funcx0 - the first function argument.x1 - the second function argument.x2 - the third function argument.
public abstract double get(double x0,
double x1,
double x2,
double x3)
Funcget(new double[] {x0, x1, x2, x3}).
Provides better performance because it does not require Java array creation.
get in interface Funcx0 - the first function argument.x1 - the second function argument.x2 - the third function argument.x3 - the fourth function argument.public int n()
public double b()
public double a(int i)
i - the index of the coefficient.java.lang.IndexOutOfBoundsException - if the given index is negative or >=n()public double[] a()
If isNonweighted() method returns true, it can be more efficient, to save memory,
not to use this method, but to get the common value of all coefficients via a(0) call
(please not forget to check that n()>0).
The returned array is never a reference to an internal array stored in this object: if necessary, the internal Java array is cloned.
public boolean isNonweighted()
n()<=1 or
if all ai coefficients are equal.
This function works little faster in this case, because it can be simplified as
b + a0(x0 + x1
+...+ xn-1).
n()<=1 or
if all ai coefficients are equal.public java.lang.String toString()
toString in class java.lang.Object
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||