public class Polynomial extends Object
| Modifier and Type | Field and Description |
|---|---|
double[] |
coeffs |
| Constructor and Description |
|---|
Polynomial(double[] coeffs)
Create a new polynomial with the given coefficients.
|
Polynomial(int order)
Create a new polynomial of the requested order with all coefficients set to 0.
|
| Modifier and Type | Method and Description |
|---|---|
void |
copyCoeffs(Polynomial other) |
static double[] |
fitPolynomial(double[] data,
int order)
Fit a polynomial of the given order to the given data.
|
static double[] |
generatePolynomialValues(double[] coeffs,
int numSamples,
double a,
double b)
For a polynomial with the given coefficients, compute
numSamples values, equally spaced in the interval [a,
b[. |
double[] |
generatePolynomialValues(int numSamples,
double a,
double b)
For a polynomial with the given coefficients, compute
numSamples values, equally spaced in the interval [a,
b[. |
int |
getOrder() |
double |
getValueAt(double x)
For a polynomial with the given coefficients, compute the value at the given position.
|
static double |
getValueAt(double[] coeffs,
double x)
For a polynomial with the given coefficients, compute the value at the given position.
|
static double[] |
mean(double[][] p)
Compute the mean polynomial from the given polynomials, by building a polynomial of the averaged coefficients.
|
static float[] |
mean(float[][] p)
Compute the mean polynomial from the given polynomials, by building a polynomial of the averaged coefficients.
|
static Polynomial |
mean(Polynomial[] p)
Compute the mean polynomial from the given polynomials, by building a polynomial of the averaged coefficients.
|
static double |
polynomialDistance(double[] coeffs1,
double[] coeffs2)
Compute the integrated distance between two polynomials of same order.
|
static double |
polynomialDistance(float[] coeffs1,
float[] coeffs2)
Compute the integrated distance between two polynomials of same order.
|
double |
polynomialDistance(Polynomial other)
Compute the integrated distance between two polynomials of same order.
|
static double |
polynomialPearsonProductMomentCorr(double[] coeffs1,
double[] coeffs2)
Compute one minus the Pearson product moment correlation between two polynomials of same order.
|
static double |
polynomialSquaredDistance(double[] coeffs1,
double[] coeffs2)
Compute the integral of the squared difference between two polynomials of same order.
|
static double |
polynomialSquaredDistance(float[] coeffs1,
float[] coeffs2)
Compute the integral of the squared difference between two polynomials of same order.
|
double |
polynomialSquaredDistance(Polynomial other)
Compute the integral of the squared difference between two polynomials of same order.
|
static double |
variance(double[][] p,
double[] mean)
For the given collection of polynomials, for which a mean polynomial has already been computed using
mean(double[][]), compute a variance as follows. |
static double |
variance(float[][] p,
float[] mean)
For the given collection of polynomials, for which a mean polynomial has already been computed using
mean(float[][]), compute a variance as follows. |
static double |
variance(Polynomial[] p,
Polynomial mean)
For the given collection of polynomials, for which a mean polynomial has already been computed using
mean(Polynomial[]), compute a variance as follows. |
public Polynomial(int order)
order - the polynomial order.public Polynomial(double[] coeffs)
coeffs - the polynomial coefficients. The code assumes that the polynomial is
a_order t^order + a_(order-1) t^(order-1) + ... + a_1 t + a_0, and will interpret coeffs as
a_order, a_(order-1), ..., a_1, a_0, where order is coeffs.length-1.public int getOrder()
public void copyCoeffs(Polynomial other)
public double[] generatePolynomialValues(int numSamples,
double a,
double b)
numSamples values, equally spaced in the interval [a,
b[.numSamples - num samplesa - lower bound (inclusive)b - upper bound (exclusive)NullPointerException - if coeffs is nullIllegalArgumentException - if coeffs has length 0IllegalArgumentException - if numSamples is ≤ 0IllegalArgumentException - if a is not less than b.public double getValueAt(double x)
x - the position where to compute the valueNullPointerException - if coeffs is nullIllegalArgumentException - if coeffs has length 0public double polynomialDistance(Polynomial other)
other - polynomial with the same order as this polynomial.public double polynomialSquaredDistance(Polynomial other)
This implements the algebraic solution proposed by Maxima from the following command:
expand(integrate((sum(a[i]*x**i, i, 0, order))**2, x, 0, 1));, with order varied from 0 to 4. Increasing order
by 1 adds (order+1) summands.
other - polynomial with the same order as this polynomial.public static double[] fitPolynomial(double[] data,
int order)
data - the data points, assumed to be in the interval [0, 1[order - the order of the polynomial. Must be non-negative.a_order t^order + a_(order-1) t^(order-1) + ... + a_1 t + a_0, then the array returned contains
a_order, a_(order-1), ..., a_1, a_0. throws NullPointerException if data is null throws
IllegalArgumentException if data.length < order or if order < 0.public static double[] generatePolynomialValues(double[] coeffs,
int numSamples,
double a,
double b)
numSamples values, equally spaced in the interval [a,
b[.coeffs - the polynomial coefficients. The code assumes that the polynomial is
a_order t^order + a_(order-1) t^(order-1) + ... + a_1 t + a_0, and will interpret coeffs as
a_order, a_(order-1), ..., a_1, a_0, where order is coeffs.length-1.numSamples - num samplesa - lower bound (inclusive)b - upper bound (exclusive)NullPointerException - if coeffs is nullIllegalArgumentException - if coeffs has length 0IllegalArgumentException - if numSamples is ≤ 0IllegalArgumentException - if a is not less than b.public static double getValueAt(double[] coeffs,
double x)
coeffs - the polynomial coefficients. The code assumes that the polynomial is
a_order t^order + a_(order-1) t^(order-1) + ... + a_1 t + a_0, and will interpret coeffs as
a_order, a_(order-1), ..., a_1, a_0, where order is coeffs.length-1.x - the position where to compute the valueNullPointerException - if coeffs is nullIllegalArgumentException - if coeffs has length 0public static Polynomial mean(Polynomial[] p)
p - the polynomials from which to compute the mean. they must all have the same orderpublic static double[] mean(double[][] p)
p - the polynomials from which to compute the mean. they must all have the same orderpublic static float[] mean(float[][] p)
p - the polynomials from which to compute the mean. they must all have the same orderpublic static double variance(Polynomial[] p, Polynomial mean)
mean(Polynomial[]), compute a variance as follows.
V = 1/(p-1) * sum i from 0 to p-1 of integral from 0 to 1 of (p[i]-mean)^2; in other words, the sum of the
squared distances (@see{#polynomialSquaredDistance()}) between each polynomial in p and the mean, divided by (p-1).
p - pmean - meanpublic static double variance(double[][] p,
double[] mean)
mean(double[][]), compute a variance as follows.
V = 1/(p-1) * sum i from 0 to p-1 of integral from 0 to 1 of (p[i]-mean)^2; in other words, the sum of the
squared distances (@see{#polynomialSquaredDistance()}) between each polynomial in p and the mean, divided by (p-1).
p - pmean - meanpublic static double variance(float[][] p,
float[] mean)
mean(float[][]), compute a variance as follows.
V = 1/(p-1) * sum i from 0 to p-1 of integral from 0 to 1 of (p[i]-mean)^2; in other words, the sum of the
squared distances (@see{#polynomialSquaredDistance()}) between each polynomial in p and the mean, divided by (p-1).
p - pmean - meanpublic static double polynomialDistance(double[] coeffs1,
double[] coeffs2)
coeffs1 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]coeffs2 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]public static double polynomialDistance(float[] coeffs1,
float[] coeffs2)
coeffs1 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]coeffs2 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]public static double polynomialSquaredDistance(double[] coeffs1,
double[] coeffs2)
This implements the algebraic solution proposed by Maxima from the following command:
expand(integrate((sum(a[i]*x**i, i, 0, order))**2, x, 0, 1));, with order varied from 0 to 4. Increasing order
by 1 adds (order+1) summands.
coeffs1 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]coeffs2 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]public static double polynomialSquaredDistance(float[] coeffs1,
float[] coeffs2)
This implements the algebraic solution proposed by Maxima from the following command:
expand(integrate((sum(a[i]*x**i, i, 0, order))**2, x, 0, 1));, with order varied from 0 to 4. Increasing order
by 1 adds (order+1) summands.
coeffs1 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]coeffs2 - polynomial coefficients, [a_order, a_(order-1), ..., a_1, a_0]public static double polynomialPearsonProductMomentCorr(double[] coeffs1,
double[] coeffs2)
Equation: D = 1 - corr(F1 * F2)
coeffs1 - polynomial coefficients that are not nullcoeffs2 - polynomial coefficients that are not null coeffs1, coeffs2 are expected to be coefficients of same order
polynomialsNullPointerException - if received polynomial coeffs nullIllegalArgumentException - if the length of coeffs are not equalCopyright © 2000–2016 DFKI GmbH. All rights reserved.