Fix some javadoc issues.

This commit is contained in:
Ray DeCampo 2017-05-07 12:35:54 -04:00
parent cdf22ce631
commit 53ec46ba27
180 changed files with 778 additions and 667 deletions

View File

@ -42,7 +42,7 @@ import org.apache.commons.math4.util.MathArrays;
* corresponding y value.</li>
* <li>Adjacent polynomials are equal through two derivatives at the knot points (i.e., adjacent polynomials
* "match up" at the knot points, as do their first and second derivatives).</li>
* </ol></p>
* </ol>
* <p>
* The cubic spline interpolation algorithm implemented is as described in R.L. Burden, J.D. Faires,
* <u>Numerical Analysis</u>, 4th Ed., 1989, PWS-Kent, ISBN 0-53491-585-X, pp 126-131.

View File

@ -29,7 +29,7 @@ import org.apache.commons.numbers.core.Precision;
/**
* This class implements <a href="http://mathworld.wolfram.com/Quaternion.html">
* quaternions</a> (Hamilton's hypercomplex numbers).
* <br/>
* <br>
* Instance of this class are guaranteed to be immutable.
*
* @since 3.1

View File

@ -107,7 +107,7 @@ public class RootsOfUnity implements Serializable {
* <ul>
* <li>{@code abs(n)} is always the number of roots of unity.</li>
* <li>If {@code n > 0}, then the roots are stored in counter-clockwise order.</li>
* <li>If {@code n < 0}, then the roots are stored in clockwise order.</p>
* <li>If {@code n < 0}, then the roots are stored in clockwise order.
* </ul>
*
* @param n the (signed) number of roots of unity to be computed

View File

@ -39,7 +39,7 @@ import org.apache.commons.math4.util.FastMath;
* algebraic operation</li>
* <li>Comply with IEEE 854-1987 as much as possible.
* (See IEEE 854-1987 notes below)</li>
* </ol></p>
* </ol>
*
* <p>Trade offs:
* <ol>
@ -48,15 +48,15 @@ import org.apache.commons.math4.util.FastMath;
* <li>Digits are bigger, so rounding is a greater loss. So, if you
* really need 12 decimal digits, better use 4 base 10000 digits
* there can be one partially filled.</li>
* </ol></p>
* </ol>
*
* <p>Numbers are represented in the following form:
* <pre>
* n = sign &times; mant &times; (radix)<sup>exp</sup>;</p>
* n = sign &times; mant &times; (radix)<sup>exp</sup>;
* </pre>
* where sign is &plusmn;1, mantissa represents a fractional number between
* zero and one. mant[0] is the least significant digit.
* exp is in the range of -32767 to 32768</p>
* exp is in the range of -32767 to 32768
*
* <p>IEEE 854-1987 Notes and differences</p>
*

View File

@ -31,7 +31,7 @@
* algebraic operation</li>
* <li>Comply with IEEE 854-1987 as much as possible.
* (See IEEE 854-1987 notes below)</li>
* </ol></p>
* </ol>
*
* <p>Trade offs:
* <ol>
@ -40,7 +40,7 @@
* <li>Digits are bigger, so rounding is a greater loss. So, if you
* really need 12 decimal digits, better use 4 base 10000 digits
* there can be one partially filled.</li>
* </ol></p>
* </ol>
*
* <p>Numbers are represented in the following form:
* <pre>

View File

@ -76,7 +76,7 @@ import org.apache.commons.math4.util.MathUtils;
* <li>Generate a uniformly distributed value in (0,1) </li>
* <li>Select the subinterval to which the value belongs.
* <li>Generate a random Gaussian value with mean = mean of the associated
* bin and std dev = std dev of associated bin.</li></ol></p>
* bin and std dev = std dev of associated bin.</li></ol>
*
* <p>EmpiricalDistribution implements the {@link RealDistribution} interface
* as follows. Given x within the range of values in the dataset, let B
@ -94,7 +94,7 @@ import org.apache.commons.math4.util.MathUtils;
* by 10. </li>
*<li>The input file <i>must</i> be a plain text file containing one valid numeric
* entry per line.</li>
* </ul></p>
* </ul>
*
*/
public class EmpiricalDistribution extends AbstractRealDistribution {
@ -434,7 +434,7 @@ public class EmpiricalDistribution extends AbstractRealDistribution {
/**
* <p>Returns a fresh copy of the array of upper bounds for the bins.
* Bins are: <br/>
* Bins are: <br>
* [min,upperBounds[0]],(upperBounds[0],upperBounds[1]],...,
* (upperBounds[binCount-2], upperBounds[binCount-1] = max].</p>
*
@ -508,7 +508,7 @@ public class EmpiricalDistribution extends AbstractRealDistribution {
* <li>Compute K(B) = the mass of B with respect to the within-bin kernel (i.e., the
* integral of the kernel density over B).</li>
* <li>Return k(x) * P(B) / K(B), where k is the within-bin kernel density
* and P(B) is the mass of B.</li></ol></p>
* and P(B) is the mass of B.</li></ol>
* @since 3.1
*/
@Override
@ -569,16 +569,16 @@ public class EmpiricalDistribution extends AbstractRealDistribution {
* <li>Find the smallest i such that the sum of the masses of the bins
* through i is at least p.</li>
* <li>
* Let K be the within-bin kernel distribution for bin i.</br>
* Let K(B) be the mass of B under K. <br/>
* Let K be the within-bin kernel distribution for bin i.<br>
* Let K(B) be the mass of B under K. <br>
* Let K(B-) be K evaluated at the lower endpoint of B (the combined
* mass of the bins below B under K).<br/>
* Let P(B) be the probability of bin i.<br/>
* Let P(B-) be the sum of the bin masses below bin i. <br/>
* Let pCrit = p - P(B-)<br/>
* <li>Return the inverse of K evaluated at <br/>
* mass of the bins below B under K).<br>
* Let P(B) be the probability of bin i.<br>
* Let P(B-) be the sum of the bin masses below bin i. <br>
* Let pCrit = p - P(B-)<br>
* <li>Return the inverse of K evaluated at <br>
* K(B-) + pCrit * K(B) / P(B) </li>
* </ol></p>
* </ol>
*
* @since 3.1
*/

View File

@ -34,7 +34,7 @@ import org.apache.commons.math4.util.Pair;
* <p>Implementation of an integer-valued {@link EnumeratedDistribution}.</p>
*
* <p>Values with zero-probability are allowed but they do not extend the
* support.<br/>
* support.<br>
* Duplicate values are allowed. Probabilities of duplicate values are combined
* when computing cumulative probabilities and statistics.</p>
*

View File

@ -375,7 +375,6 @@ public class GammaDistribution extends AbstractRealDistribution {
* </blockquote>
* </li>
* </ul>
* </p>
*/
@Override
public RealDistribution.Sampler createSampler(final UniformRandomProvider rng) {

View File

@ -33,7 +33,6 @@ import org.apache.commons.rng.sampling.distribution.InverseTransformParetoSample
* <pre>
* α * k^α / x^(α + 1)
* </pre>
* <p>
* <ul>
* <li>{@code k} is the <em>scale</em> parameter: this is the minimum possible value of {@code X},</li>
* <li>{@code α} is the <em>shape</em> parameter: this is the Pareto index</li>

View File

@ -40,14 +40,14 @@ import org.apache.commons.math4.util.FastMath;
* </p>
* <p>
* For a random variable {@code X} whose values are distributed according to this
* distribution, the probability mass function is given by<br/>
* {@code P(X = k) = C(k + r - 1, r - 1) * p^r * (1 - p)^k,}<br/>
* distribution, the probability mass function is given by<br>
* {@code P(X = k) = C(k + r - 1, r - 1) * p^r * (1 - p)^k,}<br>
* where {@code r} is the number of successes, {@code p} is the probability of
* success, and {@code X} is the total number of failures. {@code C(n, k)} is
* the binomial coefficient ({@code n} choose {@code k}). The mean and variance
* of {@code X} are<br/>
* {@code E(X) = (1 - p) * r / p, var(X) = (1 - p) * r / p^2.}<br/>
* Finally, the cumulative distribution function is given by<br/>
* of {@code X} are<br>
* {@code E(X) = (1 - p) * r / p, var(X) = (1 - p) * r / p^2.}<br>
* Finally, the cumulative distribution function is given by<br>
* {@code P(X <= k) = I(p, r, k + 1)},
* where I is the regularized incomplete Beta function.
* </p>

View File

@ -35,7 +35,6 @@ import org.apache.commons.rng.sampling.distribution.RejectionInversionZipfSample
* </pre>
* {@code H(N,s)} is the normalizing constant
* which corresponds to the generalized harmonic number of order N of s.
* <p>
* <ul>
* <li>{@code N} is the number of elements</li>
* <li>{@code s} is the exponent</li>

View File

@ -37,7 +37,7 @@ import org.apache.commons.math4.util.MathArrays;
import org.apache.commons.math4.util.Pair;
/**
* Expectation-Maximization</a> algorithm for fitting the parameters of
* Expectation-Maximization algorithm for fitting the parameters of
* multivariate normal mixture model distributions.
*
* This implementation is pure original code based on <a

View File

@ -30,12 +30,12 @@ import org.apache.commons.math4.fitting.leastsquares.LevenbergMarquardtOptimizer
* real functions <code>y = f(p<sub>i</sub>;x)</code>, where {@code x} is
* the independent variable and the <code>p<sub>i</sub></code> are the
* <em>parameters</em>.
* <br/>
* <br>
* A fitter will find the optimal values of the parameters by
* <em>fitting</em> the curve so it remains very close to a set of
* {@code N} observed points <code>(x<sub>k</sub>, y<sub>k</sub>)</code>,
* {@code 0 <= k < N}.
* <br/>
* <br>
* An algorithm usually performs the fit by finding the parameter
* values that minimizes the objective function
* <pre><code>

View File

@ -38,7 +38,7 @@ import org.apache.commons.math4.util.FastMath;
* Fits points to a {@link
* org.apache.commons.math4.analysis.function.Gaussian.Parametric Gaussian}
* function.
* <br/>
* <br>
* The {@link #withStartPoint(double[]) initial guess values} must be passed
* in the following order:
* <ul>

View File

@ -34,7 +34,7 @@ import org.apache.commons.math4.util.FastMath;
* Fits points to a {@link
* org.apache.commons.math4.analysis.function.HarmonicOscillator.Parametric harmonic oscillator}
* function.
* <br/>
* <br>
* The {@link #withStartPoint(double[]) initial guess values} must be passed
* in the following order:
* <ul>

View File

@ -28,7 +28,7 @@ import org.apache.commons.math4.linear.DiagonalMatrix;
* Fits points to a {@link
* org.apache.commons.math4.analysis.polynomials.PolynomialFunction.Parametric polynomial}
* function.
* <br/>
* <br>
* The size of the {@link #withStartPoint(double[]) initial guess} array defines the
* degree of the polynomial to be fitted.
* They must be sorted in increasing order of the polynomial's degree.

View File

@ -27,7 +27,7 @@ import org.apache.commons.math4.util.FastMath;
/**
* An implementation of {@link Evaluation} that is designed for extension. All of the
* methods implemented here use the methods that are left unimplemented.
* <p/>
* <p>
* TODO cache results?
*
* @since 3.3

View File

@ -56,7 +56,7 @@ public class GaussNewtonOptimizer implements LeastSquaresOptimizer {
* using the {@link LUDecomposition}.
*
* <p> Theoretically this method takes mn<sup>2</sup>/2 operations to compute the
* normal matrix and n<sup>3</sup>/3 operations (m > n) to solve the system using
* normal matrix and n<sup>3</sup>/3 operations (m &gt; n) to solve the system using
* the LU decomposition. </p>
*/
LU {
@ -81,7 +81,7 @@ public class GaussNewtonOptimizer implements LeastSquaresOptimizer {
* QRDecomposition}.
*
* <p> Theoretically this method takes mn<sup>2</sup> - n<sup>3</sup>/3 operations
* (m > n) and has better numerical accuracy than any method that forms the normal
* (m &gt; n) and has better numerical accuracy than any method that forms the normal
* equations. </p>
*/
QR {
@ -102,7 +102,7 @@ public class GaussNewtonOptimizer implements LeastSquaresOptimizer {
* using the {@link CholeskyDecomposition}.
*
* <p> Theoretically this method takes mn<sup>2</sup>/2 operations to compute the
* normal matrix and n<sup>3</sup>/6 operations (m > n) to solve the system using
* normal matrix and n<sup>3</sup>/6 operations (m &gt; n) to solve the system using
* the Cholesky decomposition. </p>
*/
CHOLESKY {
@ -143,7 +143,7 @@ public class GaussNewtonOptimizer implements LeastSquaresOptimizer {
/**
* Solve the linear least squares problem Jx=r.
*
* @param jacobian the Jacobian matrix, J. the number of rows >= the number or
* @param jacobian the Jacobian matrix, J. the number of rows &gt;= the number or
* columns.
* @param residuals the computed residuals, r.
* @return the solution x, to the linear least squares problem Jx=r.
@ -166,7 +166,7 @@ public class GaussNewtonOptimizer implements LeastSquaresOptimizer {
/**
* Creates a Gauss Newton optimizer.
* <p/>
* <p>
* The default for the algorithm is to solve the normal equations using QR
* decomposition.
*/

View File

@ -58,7 +58,7 @@ public class LeastSquaresAdapter implements LeastSquaresProblem {
}
/** {@inheritDoc}
* @param point*/
*/
@Override
public Evaluation evaluate(final RealVector point) {
return problem.evaluate(point);

View File

@ -112,7 +112,7 @@ public class LeastSquaresBuilder {
/**
* Configure the convergence checker.
* <p/>
* <p>
* This function is an overloaded version of {@link #checker(ConvergenceChecker)}.
*
* @param newChecker the convergence checker.

View File

@ -80,7 +80,7 @@ public interface LeastSquaresProblem extends OptimizationProblem<LeastSquaresPro
public interface Evaluation {
/**
* Get the covariance matrix of the optimized parameters. <br/> Note that this
* Get the covariance matrix of the optimized parameters. <br> Note that this
* operation involves the inversion of the <code>J<sup>T</sup>J</code> matrix,
* where {@code J} is the Jacobian matrix. The {@code threshold} parameter is a
* way for the caller to specify that the result of this computation should be

View File

@ -55,9 +55,9 @@ import org.apache.commons.numbers.core.Precision;
* </ul>
* The redistribution policy for MINPACK is available <a
* href="http://www.netlib.org/minpack/disclaimer">here</a>, for convenience, it
* is reproduced below.</p>
* is reproduced below.
*
* <table border="0" width="80%" cellpadding="10" align="center" bgcolor="#E0E0E0">
* <table style="text-align: center; background-color: #E0E0E0" border="0" width="80%" cellpadding="10" summary="MINPACK redistribution policy">
* <tr><td>
* Minpack Copyright Notice (1999) University of Chicago.
* All rights reserved
@ -102,7 +102,7 @@ import org.apache.commons.numbers.core.Precision;
* (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
* EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
* POSSIBILITY OF SUCH LOSS OR DAMAGES.</strong></li>
* <ol></td></tr>
* </ol></td></tr>
* </table>
*
* @since 3.3

View File

@ -23,13 +23,13 @@
* <em>cost</em> or <em>&chi;<sup>2</sup></em>) between model and
* observations.
*
* <br/>
* <br>
* Algorithms in this category need access to a <em>problem</em>
* (represented by a {@link org.apache.commons.math4.fitting.leastsquares.LeastSquaresProblem
* LeastSquaresProblem}).
* Such a model predicts a set of values which the algorithm tries to match
* with a set of given set of observed values.
* <br/>
* <br>
* The problem can be created progressively using a {@link
* org.apache.commons.math4.fitting.leastsquares.LeastSquaresBuilder builder} or it can
* be created at once using a {@link org.apache.commons.math4.fitting.leastsquares.LeastSquaresFactory

View File

@ -212,7 +212,6 @@ public class BigFraction
* <li><a href="http://mathworld.wolfram.com/ContinuedFraction.html">
* Continued Fraction</a> equations (11) and (22)-(26)</li>
* </ul>
* </p>
*
* @param value
* the double value to convert to a fraction.
@ -345,7 +344,6 @@ public class BigFraction
* <li><a href="http://mathworld.wolfram.com/ContinuedFraction.html">
* Continued Fraction</a> equations (11) and (22)-(26)</li>
* </ul>
* </p>
*
* @param value
* the double value to convert to a fraction.

View File

@ -109,7 +109,6 @@ public class Fraction
* <li><a href="http://mathworld.wolfram.com/ContinuedFraction.html">
* Continued Fraction</a> equations (11) and (22)-(26)</li>
* </ul>
* </p>
* @param value the double value to convert to a fraction.
* @param epsilon maximum error allowed. The resulting fraction is within
* {@code epsilon} of {@code value}, in absolute terms.
@ -131,7 +130,6 @@ public class Fraction
* <li><a href="http://mathworld.wolfram.com/ContinuedFraction.html">
* Continued Fraction</a> equations (11) and (22)-(26)</li>
* </ul>
* </p>
* @param value the double value to convert to a fraction.
* @param maxDenominator The maximum allowed value for denominator
* @throws FractionConversionException if the continued fraction failed to

View File

@ -125,7 +125,6 @@ public class GeneticAlgorithm {
/**
* Evolve the given population into the next generation.
* <p>
* <ol>
* <li>Get nextGeneration population to fill from <code>current</code>
* generation, using its nextGeneration method</li>

View File

@ -538,7 +538,7 @@ public class FieldVector3D<T extends RealFieldElement<T>> implements Serializabl
* Vector3D k = u.normalize();
* Vector3D i = k.orthogonal();
* Vector3D j = Vector3D.crossProduct(k, i);
* </code></pre></p>
* </code></pre>
* @return a new normalized vector orthogonal to the instance
* @exception MathArithmeticException if the norm of the instance is null
*/

View File

@ -323,7 +323,7 @@ public class Vector3D implements Serializable, Vector<Euclidean3D> {
* Vector3D k = u.normalize();
* Vector3D i = k.orthogonal();
* Vector3D j = Vector3D.crossProduct(k, i);
* </code></pre></p>
* </code></pre>
* @return a new normalized vector orthogonal to the instance
* @exception MathArithmeticException if the norm of the instance is null
*/

View File

@ -61,7 +61,7 @@ public abstract class AbstractFieldMatrix<T extends FieldElement<T>>
}
/**
* Create a new FieldMatrix<T> with the supplied row and column dimensions.
* Create a new {@code FieldMatrix<T>} with the supplied row and column dimensions.
*
* @param field Field to which the elements belong.
* @param rowDimension Number of rows in the new matrix.

View File

@ -33,11 +33,11 @@ import org.apache.commons.math4.util.MathArrays;
import org.apache.commons.math4.util.MathUtils;
/**
* Implementation of FieldMatrix<T> using a {@link FieldElement}[][] array to store entries.
* Implementation of {@code FieldMatrix<T>} using a {@link FieldElement}[][] array to store entries.
* <p>
* As specified in the {@link FieldMatrix} interface, matrix element indexing
* is 0-based -- e.g., <code>getEntry(0, 0)</code>
* returns the element in the first row, first column of the matrix.</li></ul>
* returns the element in the first row, first column of the matrix.
* </p>
*
* @param <T> the type of the field elements

View File

@ -115,9 +115,8 @@ public class BlockFieldMatrix<T extends FieldElement<T>> extends AbstractFieldMa
* Create a new dense matrix copying entries from raw layout data.
* <p>The input array <em>must</em> already be in raw layout.</p>
* <p>Calling this constructor is equivalent to call:
* <pre>matrix = new BlockFieldMatrix<T>(getField(), rawData.length, rawData[0].length,
* toBlocksLayout(rawData), false);</pre>
* </p>
* {@code matrix = new BlockFieldMatrix<T>(getField(), rawData.length, rawData[0].length,
* toBlocksLayout(rawData), false);}
*
* @param rawData Data for the new matrix, in raw layout.
* @throws DimensionMismatchException if the {@code blockData} shape is

View File

@ -112,7 +112,6 @@ public class BlockRealMatrix extends AbstractRealMatrix implements Serializable
* <p>Calling this constructor is equivalent to call:
* <pre>matrix = new BlockRealMatrix(rawData.length, rawData[0].length,
* toBlocksLayout(rawData), false);</pre>
* </p>
*
* @param rawData data for new matrix, in raw layout
* @throws DimensionMismatchException if the shape of {@code blockData} is

View File

@ -53,9 +53,9 @@ import org.apache.commons.math4.util.IterationManager;
* <ul>
* <li>key {@code "operator"} points to the offending linear operator, say L,</li>
* <li>key {@code "vector"} points to the offending vector, say x, such that
* x<sup>T</sup> &middot; L &middot; x < 0.</li>
* x<sup>T</sup> &middot; L &middot; x &lt; 0.</li>
* </ul>
* </p>
*
* <h3>References</h3>
* <dl>
* <dt><a id="BARR1994">Barret et al. (1994)</a></dt>
@ -64,8 +64,7 @@ import org.apache.commons.math4.util.IterationManager;
* <a href="http://www.netlib.org/linalg/html_templates/Templates.html"><em>
* Templates for the Solution of Linear Systems: Building Blocks for Iterative
* Methods</em></a>, SIAM</dd>
* <dt><a id="STRA2002">Strakos and Tichy (2002)
* <dt>
* <dt><a id="STRA2002">Strakos and Tichy (2002)</a></dt>
* <dd>Z. Strakos and P. Tichy, <a
* href="http://etna.mcs.kent.edu/vol.13.2002/pp56-80.dir/pp56-80.pdf">
* <em>On error estimation in the conjugate gradient method and why it works

View File

@ -54,7 +54,7 @@ public class DiagonalMatrix extends AbstractRealMatrix
/**
* Creates a matrix using the input array as the underlying data.
* <br/>
* <br>
* The input array is copied, not referenced.
*
* @param d Data for the new matrix.
@ -65,7 +65,7 @@ public class DiagonalMatrix extends AbstractRealMatrix
/**
* Creates a matrix using the input array as the underlying data.
* <br/>
* <br>
* If an array is created specially in order to be embedded in a
* this instance and not used directly, the {@code copyArray} may be
* set to {@code false}.

View File

@ -45,7 +45,7 @@ public interface FieldMatrix<T extends FieldElement<T>> extends AnyMatrix {
Field<T> getField();
/**
* Create a new FieldMatrix<T> of the same type as the instance with
* Create a new {@code FieldMatrix<T>} of the same type as the instance with
* the supplied row and column dimensions.
*
* @param rowDimension the number of rows in the new matrix
@ -238,7 +238,6 @@ public interface FieldMatrix<T extends FieldElement<T>> extends AnyMatrix {
* 9 5 6 2
* </pre>
*
* </p>
*
* @param subMatrix Array containing the submatrix replacement data.
* @param row Row coordinate of the top-left element to be replaced.

View File

@ -746,7 +746,6 @@ public class MatrixUtils {
*
* }
* </code></pre>
* </p>
*
* @param vector real vector to serialize
* @param oos stream where the real vector should be written
@ -847,7 +846,6 @@ public class MatrixUtils {
*
* }
* </code></pre>
* </p>
*
* @param matrix real matrix to serialize
* @param oos stream where the real matrix should be written

View File

@ -39,7 +39,7 @@ import org.apache.commons.math4.util.MathUtils;
* while matrix-vector products of the type M &middot; y remain comparatively
* easy to compute. In this library, M (not M<sup>-1</sup>!) is called the
* <em>preconditionner</em>.
* </p>
*
* <p>
* Concrete implementations of this abstract class must be provided with the
* preconditioner M, as a {@link RealLinearOperator}.

View File

@ -152,7 +152,7 @@ public class RRQRDecomposition extends QRDecomposition {
* bottom right submatrices. When a large fall in norm is seen,
* the rank is returned. The drop is computed as:</p>
* <pre>
* (thisNorm/lastNorm) * rNorm < dropThreshold
* (thisNorm/lastNorm) * rNorm &lt; dropThreshold
* </pre>
* <p>
* where thisNorm is the Frobenius norm of the current submatrix,

View File

@ -35,7 +35,7 @@ import org.apache.commons.math4.exception.DimensionMismatchException;
* supply a subroutine for computing y (and perhaps z) given x, which permits
* full exploitation of the sparsity or other special structure of A.
* </blockquote>
* <br/>
* <br>
*
* <dl>
* <dt><a name="BARR1994">Barret et al. (1994)</a></dt>

View File

@ -244,7 +244,7 @@ public interface RealMatrix extends AnyMatrix {
* 1 2 3 4
* 5 3 4 8
* 9 5 6 2
* </pre></p>
* </pre>
*
* @param subMatrix array containing the submatrix replacement data
* @param row row coordinate of the top, left element to be replaced

View File

@ -803,12 +803,12 @@ public abstract class RealVector {
/**
* Acts as if it is implemented as:
* <pre>
* {@code
* Entry e = null;
* for(Iterator<Entry> it = iterator(); it.hasNext(); e = it.next()) {
* e.setValue(function.value(e.getValue()));
* }
* </pre>
* }
* Entries of this vector are modified in-place by this method.
*
* @param function Function to apply to each entry.

View File

@ -30,7 +30,7 @@ import org.apache.commons.math4.util.FastMath;
* of the traditional triangular shape) and there is a threshold to ignore
* small diagonal elements. This is used for example to generate {@link
* org.apache.commons.math4.random.CorrelatedRandomVectorGenerator correlated
* random n-dimensions vectors} in a p-dimension subspace (p < n).
* random n-dimensions vectors} in a p-dimension subspace (p &lt; n).
* In other words, it allows generating random vectors from a covariance
* matrix that is only positive semidefinite, and not positive definite.</p>
* <p>Rectangular Cholesky decomposition is <em>not</em> suited for solving

View File

@ -55,7 +55,7 @@ public class SparseFieldMatrix<T extends FieldElement<T>> extends AbstractFieldM
}
/**
* Create a new SparseFieldMatrix<T> with the supplied row and column
* Create a new {@code SparseFieldMatrix<T>} with the supplied row and column
* dimensions.
*
* @param field Field to which the elements belong.

View File

@ -113,7 +113,7 @@ import org.apache.commons.math4.util.MathUtils;
* initial phase. If x<sub>0</sub> is known to be a good approximation to x, one
* should compute r<sub>0</sub> = b - A &middot; x, solve A &middot; dx = r0,
* and set x = x<sub>0</sub> + dx.
* </p>
*
* <h3><a id="context">Exception context</a></h3>
* <p>
* Besides standard {@link DimensionMismatchException}, this class might throw
@ -127,7 +127,7 @@ import org.apache.commons.math4.util.MathUtils;
* that x<sup>T</sup> &middot; L &middot; y &ne; y<sup>T</sup> &middot; L
* &middot; x (within a certain accuracy).</li>
* </ul>
* </p>
*
* <p>
* {@link NonPositiveDefiniteOperatorException} might also be thrown in case the
* preconditioner is not positive definite. The relevant keys to the
@ -136,9 +136,9 @@ import org.apache.commons.math4.util.MathUtils;
* <li>key {@code "operator"}, which points to the offending linear operator,
* say L,</li>
* <li>key {@code "vector"}, which points to the offending vector, say x, such
* that x<sup>T</sup> &middot; L &middot; x < 0.</li>
* that x<sup>T</sup> &middot; L &middot; x &lt; 0.</li>
* </ul>
* </p>
*
* <h3>References</h3>
* <dl>
* <dt><a id="PAIG1975">Paige and Saunders (1975)</a></dt>

View File

@ -43,9 +43,9 @@ import org.apache.commons.math4.util.MathUtils;
* to the cluster j.
* <p>
* The algorithm then tries to minimize the objective function:
* <pre>
* <div style="white-space: pre"><code>
* J = &#8721;<sub>i=1..C</sub>&#8721;<sub>k=1..N</sub> u<sub>ik</sub><sup>m</sup>d<sub>ik</sub><sup>2</sup>
* </pre>
* </code></div>
* with d<sub>ik</sub> being the distance between data point i and the cluster center k.
* <p>
* The algorithm requires two parameters:

View File

@ -51,7 +51,7 @@ public class Neuron implements Serializable {
* Creates a neuron.
* The size of the feature set is fixed to the length of the given
* argument.
* <br/>
* <br>
* Constructor is package-private: Neurons must be
* {@link Network#createNeuron(double[]) created} by the network
* instance to which they will belong.
@ -113,7 +113,7 @@ public class Neuron implements Serializable {
/**
* Tries to atomically update the neuron's features.
* Update will be performed only if the expected values match the
* current values.<br/>
* current values.<br>
* In effect, when concurrent threads call this method, the state
* could be modified by one, so that it does not correspond to the
* the state assumed by another.

View File

@ -24,13 +24,13 @@ package org.apache.commons.math4.ml.neuralnet;
*/
public enum SquareNeighbourhood {
/**
* <a href="http://en.wikipedia.org/wiki/Von_Neumann_neighborhood"
* <a href="http://en.wikipedia.org/wiki/Von_Neumann_neighborhood">
* Von Neumann neighbourhood</a>: in two dimensions, each (internal)
* neuron has four neighbours.
*/
VON_NEUMANN,
/**
* <a href="http://en.wikipedia.org/wiki/Moore_neighborhood"
* <a href="http://en.wikipedia.org/wiki/Moore_neighborhood">
* Moore neighbourhood</a>: in two dimensions, each (internal)
* neuron has eight neighbours.
*/

View File

@ -83,11 +83,11 @@ public class NeuronString implements Serializable {
* Creates a one-dimensional network:
* Each neuron not located on the border of the mesh has two
* neurons linked to it.
* <br/>
* <br>
* The links are bi-directional.
* Neurons created successively are neighbours (i.e. there are
* links between them).
* <br/>
* <br>
* The topology of the network can also be a circle (if the
* dimension is wrapped).
*

View File

@ -32,7 +32,7 @@ import org.apache.commons.math4.ml.neuralnet.UpdateAction;
/**
* Update formula for <a href="http://en.wikipedia.org/wiki/Kohonen">
* Kohonen's Self-Organizing Map</a>.
* <br/>
* <br>
* The {@link #update(Network,double[]) update} method modifies the
* features {@code w} of the "winning" neuron and its neighbours
* according to the following rule:
@ -46,12 +46,12 @@ import org.apache.commons.math4.ml.neuralnet.UpdateAction;
* <li>{@code d} is the number of links to traverse in order to reach
* the neuron from the winning neuron.</li>
* </ul>
* <br/>
* <br>
* This class is thread-safe as long as the arguments passed to the
* {@link #KohonenUpdateAction(DistanceMeasure,LearningFactorFunction,
* NeighbourhoodSizeFunction) constructor} are instances of thread-safe
* classes.
* <br/>
* <br>
* Each call to the {@link #update(Network,double[]) update} method
* will increment the internal counter used to compute the current
* values for

View File

@ -24,7 +24,7 @@ import org.apache.commons.math4.util.FastMath;
/**
* Exponential decay function: <code>a e<sup>-x / b</sup></code>,
* where {@code x} is the (integer) independent variable.
* <br/>
* <br>
* Class is immutable.
*
* @since 3.3

View File

@ -23,7 +23,7 @@ import org.apache.commons.math4.exception.NumberIsTooLargeException;
/**
* Decay function whose shape is similar to a sigmoid.
* <br/>
* <br>
* Class is immutable.
*
* @since 3.3

View File

@ -34,7 +34,7 @@ import org.apache.commons.math4.ml.neuralnet.SquareNeighbourhood;
/**
* Neural network with the topology of a two-dimensional surface.
* Each neuron defines one surface element.
* <br/>
* <br>
* This network is primarily intended to represent a
* <a href="http://en.wikipedia.org/wiki/Kohonen">
* Self Organizing Feature Map</a>.
@ -141,9 +141,9 @@ public class NeuronSquareMesh2D
* Creates a two-dimensional network composed of square cells:
* Each neuron not located on the border of the mesh has four
* neurons linked to it.
* <br/>
* <br>
* The links are bi-directional.
* <br/>
* <br>
* The topology of the network can also be a cylinder (if one
* of the dimensions is wrapped) or a torus (if both dimensions
* are wrapped).

View File

@ -26,11 +26,11 @@ import org.apache.commons.math4.exception.NumberIsTooSmallException;
/**
* Visualization of high-dimensional data projection on a 2D-map.
* The method is described in
* <quote>
* <blockquote>
* <em>Using Smoothed Data Histograms for Cluster Visualization in Self-Organizing Maps</em>
* <br>
* by Elias Pampalk, Andreas Rauber and Dieter Merkl.
* </quote>
* </blockquote>
* @since 3.6
*/
public class SmoothedDataHistogram implements MapDataVisualization {

View File

@ -43,7 +43,6 @@ import org.apache.commons.math4.exception.util.LocalizedFormats;
* <li>a {@link ParameterJacobianProvider}</li>
* <li>a {@link ParameterizedODE}</li>
* </ul>
* </p>
*
* @see ExpandableStatefulODE
* @see FirstOrderDifferentialEquations

View File

@ -38,20 +38,20 @@ import org.apache.commons.math4.util.MathUtils;
* This class is the base class for multistep integrators for Ordinary
* Differential Equations.
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
* <p>Rather than storing several previous steps separately, this implementation uses
* the Nordsieck vector with higher degrees scaled derivatives all taken at the same
* step (y<sub>n</sub>, s<sub>1</sub>(n) and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* (we omit the k index in the notation for clarity)</p>
* </code></div>
* (we omit the k index in the notation for clarity)
* <p>
* Multistep integrators with Nordsieck representation are highly sensitive to
* large step changes because when the step is multiplied by factor a, the

View File

@ -34,20 +34,20 @@ import org.apache.commons.math4.util.FastMath;
* This class is the base class for multistep integrators for Ordinary
* Differential Equations.
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
* <p>Rather than storing several previous steps separately, this implementation uses
* the Nordsieck vector with higher degrees scaled derivatives all taken at the same
* step (y<sub>n</sub>, s<sub>1</sub>(n) and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* (we omit the k index in the notation for clarity)</p>
* </code></div>
* (we omit the k index in the notation for clarity)
* <p>
* Multistep integrators with Nordsieck representation are highly sensitive to
* large step changes because when the step is multiplied by factor a, the

View File

@ -110,7 +110,7 @@ public interface EventHandler {
* <p>Also note that the integrator expect that once an event has occurred,
* the sign of the switching function at the start of the next step (i.e.
* just after the event) is the opposite of the sign just before the event.
* This consistency between the steps <string>must</strong> be preserved,
* This consistency between the steps <strong>must</strong> be preserved,
* otherwise {@link org.apache.commons.math4.exception.NoBracketingException
* exceptions} related to root not being bracketed will occur.</p>
* <p>This need for consistency is sometimes tricky to achieve. A typical

View File

@ -74,7 +74,7 @@ public interface FieldEventHandler<T extends RealFieldElement<T>> {
* <p>Also note that the integrator expect that once an event has occurred,
* the sign of the switching function at the start of the next step (i.e.
* just after the event) is the opposite of the sign just before the event.
* This consistency between the steps <string>must</strong> be preserved,
* This consistency between the steps <strong>must</strong> be preserved,
* otherwise {@link org.apache.commons.math4.exception.NoBracketingException
* exceptions} related to root not being bracketed will occur.</p>
* <p>This need for consistency is sometimes tricky to achieve. A typical

View File

@ -56,19 +56,19 @@ import org.apache.commons.math4.util.MathArrays;
* <h3>Implementation details</h3>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>The definitions above use the classical representation with several previous first
* derivatives. Lets define
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* </code></div>
* (we omit the k index in the notation for clarity). With these definitions,
* Adams-Bashforth methods can be written:
* <ul>
@ -77,30 +77,29 @@ import org.apache.commons.math4.util.MathArrays;
* <li>k = 3: y<sub>n+1</sub> = y<sub>n</sub> + 23/12 s<sub>1</sub>(n) + [ -16/12 5/12 ] q<sub>n</sub></li>
* <li>k = 4: y<sub>n+1</sub> = y<sub>n</sub> + 55/24 s<sub>1</sub>(n) + [ -59/24 37/24 -9/24 ] q<sub>n</sub></li>
* <li>...</li>
* </ul></p>
* </ul>
*
* <p>Instead of using the classical representation with first derivatives only (y<sub>n</sub>,
* s<sub>1</sub>(n) and q<sub>n</sub>), our implementation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step (y<sub>n</sub>, s<sub>1</sub>(n)
* and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -110,7 +109,7 @@ import org.apache.commons.math4.util.MathArrays;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Using the Nordsieck vector has several advantages:
* <ul>
@ -119,7 +118,7 @@ import org.apache.commons.math4.util.MathArrays;
* <li>it simplifies step changes that occur when discrete events that truncate
* the step are triggered,</li>
* <li>it allows to extend the methods in order to support adaptive stepsize.</li>
* </ul></p>
* </ul>
*
* <p>The Nordsieck vector at step n+1 is computed from the Nordsieck vector at step n as follows:
* <ul>
@ -136,7 +135,7 @@ import org.apache.commons.math4.util.MathArrays;
* [ ... | 0 ]
* [ 0 0 ... 1 0 | 0 ]
* [ 0 0 ... 0 1 | 0 ]
* </pre></p>
* </pre>
*
* <p>The P<sup>-1</sup>u vector and the P<sup>-1</sup> A P matrix do not depend on the state,
* they only depend on k and therefore are precomputed once for all.</p>

View File

@ -54,19 +54,19 @@ import org.apache.commons.math4.util.FastMath;
* <h3>Implementation details</h3>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>The definitions above use the classical representation with several previous first
* derivatives. Lets define
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* </code></div>
* (we omit the k index in the notation for clarity). With these definitions,
* Adams-Bashforth methods can be written:
* <ul>
@ -75,30 +75,29 @@ import org.apache.commons.math4.util.FastMath;
* <li>k = 3: y<sub>n+1</sub> = y<sub>n</sub> + 23/12 s<sub>1</sub>(n) + [ -16/12 5/12 ] q<sub>n</sub></li>
* <li>k = 4: y<sub>n+1</sub> = y<sub>n</sub> + 55/24 s<sub>1</sub>(n) + [ -59/24 37/24 -9/24 ] q<sub>n</sub></li>
* <li>...</li>
* </ul></p>
* </ul>
*
* <p>Instead of using the classical representation with first derivatives only (y<sub>n</sub>,
* s<sub>1</sub>(n) and q<sub>n</sub>), our implementation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step (y<sub>n</sub>, s<sub>1</sub>(n)
* and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -108,7 +107,7 @@ import org.apache.commons.math4.util.FastMath;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Using the Nordsieck vector has several advantages:
* <ul>
@ -117,7 +116,7 @@ import org.apache.commons.math4.util.FastMath;
* <li>it simplifies step changes that occur when discrete events that truncate
* the step are triggered,</li>
* <li>it allows to extend the methods in order to support adaptive stepsize.</li>
* </ul></p>
* </ul>
*
* <p>The Nordsieck vector at step n+1 is computed from the Nordsieck vector at step n as follows:
* <ul>
@ -134,7 +133,7 @@ import org.apache.commons.math4.util.FastMath;
* [ ... | 0 ]
* [ 0 0 ... 1 0 | 0 ]
* [ 0 0 ... 0 1 | 0 ]
* </pre></p>
* </pre>
*
* <p>The P<sup>-1</sup>u vector and the P<sup>-1</sup> A P matrix do not depend on the state,
* they only depend on k and therefore are precomputed once for all.</p>

View File

@ -112,10 +112,10 @@ public abstract class AdamsFieldIntegrator<T extends RealFieldElement<T>> extend
/** Update the high order scaled derivatives for Adams integrators (phase 1).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.</p>
* </code></div>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.
* @param highOrder high order scaled derivatives
* (h<sup>2</sup>/2 y'', ... h<sup>k</sup>/k! y(k))
* @return updated high order derivatives
@ -127,10 +127,10 @@ public abstract class AdamsFieldIntegrator<T extends RealFieldElement<T>> extend
/** Update the high order scaled derivatives Adams integrators (phase 2).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.</p>
* </code></div>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.
* <p>Phase 1 of the update must already have been performed.</p>
* @param start first order scaled derivatives at step start
* @param end first order scaled derivatives at step end

View File

@ -101,10 +101,10 @@ public abstract class AdamsIntegrator extends MultistepIntegrator {
/** Update the high order scaled derivatives for Adams integrators (phase 1).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.</p>
* </code></div>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.
* @param highOrder high order scaled derivatives
* (h<sup>2</sup>/2 y'', ... h<sup>k</sup>/k! y(k))
* @return updated high order derivatives
@ -116,10 +116,10 @@ public abstract class AdamsIntegrator extends MultistepIntegrator {
/** Update the high order scaled derivatives Adams integrators (phase 2).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.</p>
* </code></div>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.
* <p>Phase 1 of the update must already have been performed.</p>
* @param start first order scaled derivatives at step start
* @param end first order scaled derivatives at step end

View File

@ -62,19 +62,19 @@ import org.apache.commons.math4.util.MathUtils;
* <h3>Implementation details</h3>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>The definitions above use the classical representation with several previous first
* derivatives. Lets define
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* </code></div>
* (we omit the k index in the notation for clarity). With these definitions,
* Adams-Moulton methods can be written:
* <ul>
@ -83,30 +83,29 @@ import org.apache.commons.math4.util.MathUtils;
* <li>k = 3: y<sub>n+1</sub> = y<sub>n</sub> + 5/12 s<sub>1</sub>(n+1) + [ 8/12 -1/12 ] q<sub>n+1</sub></li>
* <li>k = 4: y<sub>n+1</sub> = y<sub>n</sub> + 9/24 s<sub>1</sub>(n+1) + [ 19/24 -5/24 1/24 ] q<sub>n+1</sub></li>
* <li>...</li>
* </ul></p>
* </ul>
*
* <p>Instead of using the classical representation with first derivatives only (y<sub>n</sub>,
* s<sub>1</sub>(n+1) and q<sub>n+1</sub>), our implementation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step (y<sub>n</sub>, s<sub>1</sub>(n)
* and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -116,7 +115,7 @@ import org.apache.commons.math4.util.MathUtils;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Using the Nordsieck vector has several advantages:
* <ul>
@ -125,7 +124,7 @@ import org.apache.commons.math4.util.MathUtils;
* <li>it simplifies step changes that occur when discrete events that truncate
* the step are triggered,</li>
* <li>it allows to extend the methods in order to support adaptive stepsize.</li>
* </ul></p>
* </ul>
*
* <p>The predicted Nordsieck vector at step n+1 is computed from the Nordsieck vector at step
* n as follows:
@ -152,7 +151,7 @@ import org.apache.commons.math4.util.MathUtils;
* </ul>
* where the upper case Y<sub>n+1</sub>, S<sub>1</sub>(n+1) and R<sub>n+1</sub> represent the
* predicted states whereas the lower case y<sub>n+1</sub>, s<sub>n+1</sub> and r<sub>n+1</sub>
* represent the corrected states.</p>
* represent the corrected states.
*
* <p>The P<sup>-1</sup>u vector and the P<sup>-1</sup> A P matrix do not depend on the state,
* they only depend on k and therefore are precomputed once for all.</p>

View File

@ -59,19 +59,19 @@ import org.apache.commons.math4.util.FastMath;
* <h3>Implementation details</h3>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>The definitions above use the classical representation with several previous first
* derivatives. Lets define
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* </code></div>
* (we omit the k index in the notation for clarity). With these definitions,
* Adams-Moulton methods can be written:
* <ul>
@ -80,30 +80,29 @@ import org.apache.commons.math4.util.FastMath;
* <li>k = 3: y<sub>n+1</sub> = y<sub>n</sub> + 5/12 s<sub>1</sub>(n+1) + [ 8/12 -1/12 ] q<sub>n+1</sub></li>
* <li>k = 4: y<sub>n+1</sub> = y<sub>n</sub> + 9/24 s<sub>1</sub>(n+1) + [ 19/24 -5/24 1/24 ] q<sub>n+1</sub></li>
* <li>...</li>
* </ul></p>
* </ul>
*
* <p>Instead of using the classical representation with first derivatives only (y<sub>n</sub>,
* s<sub>1</sub>(n+1) and q<sub>n+1</sub>), our implementation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step (y<sub>n</sub>, s<sub>1</sub>(n)
* and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -113,7 +112,7 @@ import org.apache.commons.math4.util.FastMath;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Using the Nordsieck vector has several advantages:
* <ul>
@ -122,7 +121,7 @@ import org.apache.commons.math4.util.FastMath;
* <li>it simplifies step changes that occur when discrete events that truncate
* the step are triggered,</li>
* <li>it allows to extend the methods in order to support adaptive stepsize.</li>
* </ul></p>
* </ul>
*
* <p>The predicted Nordsieck vector at step n+1 is computed from the Nordsieck vector at step
* n as follows:
@ -149,7 +148,7 @@ import org.apache.commons.math4.util.FastMath;
* </ul>
* where the upper case Y<sub>n+1</sub>, S<sub>1</sub>(n+1) and R<sub>n+1</sub> represent the
* predicted states whereas the lower case y<sub>n+1</sub>, s<sub>n+1</sub> and r<sub>n+1</sub>
* represent the corrected states.</p>
* represent the corrected states.
*
* <p>The P<sup>-1</sup>u vector and the P<sup>-1</sup> A P matrix do not depend on the state,
* they only depend on k and therefore are precomputed once for all.</p>

View File

@ -37,43 +37,42 @@ import org.apache.commons.math4.util.MathArrays;
* representation with higher order scaled derivatives.</p>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>With the previous definition, the classical representation of multistep methods
* uses first derivatives only, i.e. it handles y<sub>n</sub>, s<sub>1</sub>(n) and
* q<sub>n</sub> where q<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* (we omit the k index in the notation for clarity).</p>
* </code></div>
* (we omit the k index in the notation for clarity).
*
* <p>Another possible representation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step, i.e it handles y<sub>n</sub>,
* s<sub>1</sub>(n) and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector at step end. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -83,7 +82,7 @@ import org.apache.commons.math4.util.MathArrays;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Changing -i into +i in the formula above can be used to compute a similar transform between
* classical representation and Nordsieck vector at step start. The resulting matrix is simply
@ -105,7 +104,7 @@ import org.apache.commons.math4.util.MathArrays;
* [ ... | 0 ]
* [ 0 0 ... 1 0 | 0 ]
* [ 0 0 ... 0 1 | 0 ]
* </pre></p>
* </pre>
*
* <p>For {@link AdamsMoultonIntegrator Adams-Moulton} method, the predicted Nordsieck vector
* at step n+1 is computed from the Nordsieck vector at step n as follows:
@ -122,7 +121,7 @@ import org.apache.commons.math4.util.MathArrays;
* </ul>
* where the upper case Y<sub>n+1</sub>, S<sub>1</sub>(n+1) and R<sub>n+1</sub> represent the
* predicted states whereas the lower case y<sub>n+1</sub>, s<sub>n+1</sub> and r<sub>n+1</sub>
* represent the corrected states.</p>
* represent the corrected states.
*
* <p>We observe that both methods use similar update formulas. In both cases a P<sup>-1</sup>u
* vector and a P<sup>-1</sup> A P matrix are used that do not depend on the state,
@ -218,7 +217,7 @@ public class AdamsNordsieckFieldTransformer<T extends RealFieldElement<T>> {
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
* @param rows number of rows of the matrix
* @return P matrix
*/
@ -318,10 +317,10 @@ public class AdamsNordsieckFieldTransformer<T extends RealFieldElement<T>> {
/** Update the high order scaled derivatives for Adams integrators (phase 1).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.</p>
* </code></div>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.
* @param highOrder high order scaled derivatives
* (h<sup>2</sup>/2 y'', ... h<sup>k</sup>/k! y(k))
* @return updated high order derivatives
@ -333,10 +332,10 @@ public class AdamsNordsieckFieldTransformer<T extends RealFieldElement<T>> {
/** Update the high order scaled derivatives Adams integrators (phase 2).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.</p>
* </code></div>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.
* <p>Phase 1 of the update must already have been performed.</p>
* @param start first order scaled derivatives at step start
* @param end first order scaled derivatives at step end

View File

@ -39,43 +39,42 @@ import org.apache.commons.math4.linear.RealMatrix;
* representation with higher order scaled derivatives.</p>
*
* <p>We define scaled derivatives s<sub>i</sub>(n) at step n as:
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n) = h y'<sub>n</sub> for first derivative
* s<sub>2</sub>(n) = h<sup>2</sup>/2 y''<sub>n</sub> for second derivative
* s<sub>3</sub>(n) = h<sup>3</sup>/6 y'''<sub>n</sub> for third derivative
* ...
* s<sub>k</sub>(n) = h<sup>k</sup>/k! y<sup>(k)</sup><sub>n</sub> for k<sup>th</sup> derivative
* </pre></p>
* </code></div>
*
* <p>With the previous definition, the classical representation of multistep methods
* uses first derivatives only, i.e. it handles y<sub>n</sub>, s<sub>1</sub>(n) and
* q<sub>n</sub> where q<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = [ s<sub>1</sub>(n-1) s<sub>1</sub>(n-2) ... s<sub>1</sub>(n-(k-1)) ]<sup>T</sup>
* </pre>
* (we omit the k index in the notation for clarity).</p>
* </code></div>
* (we omit the k index in the notation for clarity).
*
* <p>Another possible representation uses the Nordsieck vector with
* higher degrees scaled derivatives all taken at the same step, i.e it handles y<sub>n</sub>,
* s<sub>1</sub>(n) and r<sub>n</sub>) where r<sub>n</sub> is defined as:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n</sub> = [ s<sub>2</sub>(n), s<sub>3</sub>(n) ... s<sub>k</sub>(n) ]<sup>T</sup>
* </pre>
* </code></div>
* (here again we omit the k index in the notation for clarity)
* </p>
*
* <p>Taylor series formulas show that for any index offset i, s<sub>1</sub>(n-i) can be
* computed from s<sub>1</sub>(n), s<sub>2</sub>(n) ... s<sub>k</sub>(n), the formula being exact
* for degree k polynomials.
* <pre>
* <div style="white-space: pre"><code>
* s<sub>1</sub>(n-i) = s<sub>1</sub>(n) + &sum;<sub>j&gt;0</sub> (j+1) (-i)<sup>j</sup> s<sub>j+1</sub>(n)
* </pre>
* </code></div>
* The previous formula can be used with several values for i to compute the transform between
* classical representation and Nordsieck vector at step end. The transform between r<sub>n</sub>
* and q<sub>n</sub> resulting from the Taylor series formulas above is:
* <pre>
* <div style="white-space: pre"><code>
* q<sub>n</sub> = s<sub>1</sub>(n) u + P r<sub>n</sub>
* </pre>
* </code></div>
* where u is the [ 1 1 ... 1 ]<sup>T</sup> vector and P is the (k-1)&times;(k-1) matrix built
* with the (j+1) (-i)<sup>j</sup> terms with i being the row number starting from 1 and j being
* the column number starting from 1:
@ -85,7 +84,7 @@ import org.apache.commons.math4.linear.RealMatrix;
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
*
* <p>Changing -i into +i in the formula above can be used to compute a similar transform between
* classical representation and Nordsieck vector at step start. The resulting matrix is simply
@ -107,7 +106,7 @@ import org.apache.commons.math4.linear.RealMatrix;
* [ ... | 0 ]
* [ 0 0 ... 1 0 | 0 ]
* [ 0 0 ... 0 1 | 0 ]
* </pre></p>
* </pre>
*
* <p>For {@link AdamsMoultonIntegrator Adams-Moulton} method, the predicted Nordsieck vector
* at step n+1 is computed from the Nordsieck vector at step n as follows:
@ -124,7 +123,7 @@ import org.apache.commons.math4.linear.RealMatrix;
* </ul>
* where the upper case Y<sub>n+1</sub>, S<sub>1</sub>(n+1) and R<sub>n+1</sub> represent the
* predicted states whereas the lower case y<sub>n+1</sub>, s<sub>n+1</sub> and r<sub>n+1</sub>
* represent the corrected states.</p>
* represent the corrected states.
*
* <p>We observe that both methods use similar update formulas. In both cases a P<sup>-1</sup>u
* vector and a P<sup>-1</sup> A P matrix are used that do not depend on the state,
@ -220,7 +219,7 @@ public class AdamsNordsieckTransformer {
* P = [ -6 27 -108 405 ... ]
* [ -8 48 -256 1280 ... ]
* [ ... ]
* </pre></p>
* </pre>
* @param rows number of rows of the matrix
* @return P matrix
*/
@ -319,10 +318,10 @@ public class AdamsNordsieckTransformer {
/** Update the high order scaled derivatives for Adams integrators (phase 1).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.</p>
* </code></div>
* this method computes the P<sup>-1</sup> A P r<sub>n</sub> part.
* @param highOrder high order scaled derivatives
* (h<sup>2</sup>/2 y'', ... h<sup>k</sup>/k! y(k))
* @return updated high order derivatives
@ -334,10 +333,10 @@ public class AdamsNordsieckTransformer {
/** Update the high order scaled derivatives Adams integrators (phase 2).
* <p>The complete update of high order derivatives has a form similar to:
* <pre>
* <div style="white-space: pre"><code>
* r<sub>n+1</sub> = (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u + P<sup>-1</sup> A P r<sub>n</sub>
* </pre>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.</p>
* </code></div>
* this method computes the (s<sub>1</sub>(n) - s<sub>1</sub>(n+1)) P<sup>-1</sup> u part.
* <p>Phase 1 of the update must already have been performed.</p>
* @param start first order scaled derivatives at step start
* @param end first order scaled derivatives at step end

View File

@ -45,7 +45,7 @@ import org.apache.commons.math4.util.MathUtils;
* state vector and relTol_i is the relative tolerance for the same
* component. The user can also use only two scalar values absTol and
* relTol which will be used for all components.
* </p>
*
* <p>
* Note that <em>only</em> the {@link FieldODEState#getState() main part}
* of the state vector is used for stepsize control. The {@link
@ -55,12 +55,12 @@ import org.apache.commons.math4.util.MathUtils;
*
* <p>If the estimated error for ym+1 is such that
* <pre>
* sqrt((sum (errEst_i / threshold_i)^2 ) / n) < 1
* sqrt((sum (errEst_i / threshold_i)^2 ) / n) &lt; 1
* </pre>
*
* (where n is the main set dimension) then the step is accepted,
* otherwise the step is rejected and a new attempt is made with a new
* stepsize.</p>
* stepsize.
*
* @param <T> the type of the field elements
* @since 3.6

View File

@ -40,7 +40,7 @@ import org.apache.commons.math4.util.FastMath;
* state vector and relTol_i is the relative tolerance for the same
* component. The user can also use only two scalar values absTol and
* relTol which will be used for all components.
* </p>
*
* <p>
* If the Ordinary Differential Equations is an {@link ExpandableStatefulODE
* extended ODE} rather than a {@link
@ -51,12 +51,12 @@ import org.apache.commons.math4.util.FastMath;
*
* <p>If the estimated error for ym+1 is such that
* <pre>
* sqrt((sum (errEst_i / threshold_i)^2 ) / n) < 1
* sqrt((sum (errEst_i / threshold_i)^2 ) / n) &lt; 1
* </pre>
*
* (where n is the main set dimension) then the step is accepted,
* otherwise the step is rejected and a new attempt is made with a new
* stepsize.</p>
* stepsize.
*
* @since 1.2
*

View File

@ -38,7 +38,6 @@ import org.apache.commons.math4.util.MathArrays;
* |--------------------
* | 1/6 1/3 1/3 1/6
* </pre>
* </p>
*
* @see EulerFieldIntegrator
* @see GillFieldIntegrator

View File

@ -45,7 +45,6 @@ import org.apache.commons.math4.ode.FieldODEStateAndDerivative;
* ]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub> are the four
* evaluations of the derivatives already computed during the

View File

@ -33,7 +33,6 @@ package org.apache.commons.math4.ode.nonstiff;
* |--------------------
* | 1/6 1/3 1/3 1/6
* </pre>
* </p>
*
* @see EulerIntegrator
* @see GillIntegrator

View File

@ -42,7 +42,6 @@ import org.apache.commons.math4.ode.sampling.StepInterpolator;
* ]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub> are the four
* evaluations of the derivatives already computed during the

View File

@ -45,7 +45,7 @@ import org.apache.commons.math4.util.MathUtils;
* J. R. Dormand and P. J. Prince
* Journal of Computational and Applied Mathematics
* volume 6, no 1, 1980, pp. 19-26
* </pre></p>
* </pre>
*
* @param <T> the type of the field elements
* @since 3.6

View File

@ -40,7 +40,7 @@ import org.apache.commons.math4.util.FastMath;
* J. R. Dormand and P. J. Prince
* Journal of Computational and Applied Mathematics
* volume 6, no 1, 1980, pp. 19-26
* </pre></p>
* </pre>
*
* @since 1.2
*/

View File

@ -47,7 +47,6 @@ import org.apache.commons.math4.util.MathUtils;
* | b1 b2 ... bs-1 bs
* | b'1 b'2 ... b's-1 b's
* </pre>
* </p>
*
* <p>In fact, we rather use the array defined by ej = bj - b'j to
* compute directly the error rather than computing two estimates and

View File

@ -41,7 +41,6 @@ import org.apache.commons.math4.util.FastMath;
* | b1 b2 ... bs-1 bs
* | b'1 b'2 ... b's-1 b's
* </pre>
* </p>
*
* <p>In fact, we rather use the array defined by ej = bj - b'j to
* compute directly the error rather than computing two estimates and

View File

@ -36,7 +36,6 @@ import org.apache.commons.math4.ode.FieldODEStateAndDerivative;
* y(t<sub>n</sub> + &theta; h) = y (t<sub>n</sub> + h) - (1-&theta;) h y'
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y' is the evaluation of
* the derivatives already computed during the step.</p>

View File

@ -33,7 +33,6 @@ import org.apache.commons.math4.ode.sampling.StepInterpolator;
* y(t<sub>n</sub> + &theta; h) = y (t<sub>n</sub> + h) - (1-&theta;) h y'
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y' is the evaluation of
* the derivatives already computed during the step.</p>

View File

@ -38,7 +38,7 @@ import org.apache.commons.math4.util.MathArrays;
* |-------------------------------
* | 1/6 (2-q)/6 (2+q)/6 1/6
* </pre>
* where q = sqrt(2)</p>
* where q = sqrt(2)
*
* @see EulerFieldIntegrator
* @see ClassicalRungeKuttaFieldIntegrator

View File

@ -45,7 +45,6 @@ import org.apache.commons.math4.ode.FieldODEStateAndDerivative;
* ]
* </li>
* </ul>
* </p>
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub>
* are the four evaluations of the derivatives already computed during
* the step.</p>

View File

@ -34,7 +34,7 @@ import org.apache.commons.math4.util.FastMath;
* |-------------------------------
* | 1/6 (2-q)/6 (2+q)/6 1/6
* </pre>
* where q = sqrt(2)</p>
* where q = sqrt(2)
*
* @see EulerIntegrator
* @see ClassicalRungeKuttaIntegrator

View File

@ -43,7 +43,6 @@ import org.apache.commons.math4.util.FastMath;
* ]
* </li>
* </ul>
* </p>
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub>
* are the four evaluations of the derivatives already computed during
* the step.</p>

View File

@ -61,9 +61,8 @@ import org.apache.commons.math4.util.FastMath;
* for this code is available <a
* href="http://www.unige.ch/~hairer/prog/licence.txt">here</a>, for
* convenience, it is reproduced below.</p>
* </p>
*
* <table border="0" width="80%" cellpadding="10" align="center" bgcolor="#E0E0E0">
* <table border="0" width="80%" cellpadding="10" style="text-align: center; background-color: #E0E0E0" summary="odex redistribution policy">
* <tr><td>Copyright (c) 2004, Ernst Hairer</td></tr>
*
* <tr><td>Redistribution and use in source and binary forms, with or
@ -240,13 +239,13 @@ public class GraggBulirschStoerIntegrator extends AdaptiveStepsizeIntegrator {
* </pre>
* where err is the scaled error and k the iteration number of the
* extrapolation scheme (counting from 0). The default values are
* 0.65 for stepControl1 and 0.94 for stepControl2.</p>
* 0.65 for stepControl1 and 0.94 for stepControl2.
* <p>The step size is subject to the restriction:
* <pre>
* stepControl3^(1/(2k+1))/stepControl4 <= hNew/h <= 1/stepControl3^(1/(2k+1))
* stepControl3^(1/(2k+1))/stepControl4 &lt;= hNew/h &lt;= 1/stepControl3^(1/(2k+1))
* </pre>
* The default values are 0.02 for stepControl3 and 4.0 for
* stepControl4.</p>
* stepControl4.
* @param control1 first stepsize control factor (the factor is
* reset to default if lower than 0.0001 or greater than 0.9999)
* @param control2 second stepsize control factor (the factor
@ -292,8 +291,8 @@ public class GraggBulirschStoerIntegrator extends AdaptiveStepsizeIntegrator {
* maximal order that will be used is always even, it is twice the
* maximal number of columns in the extrapolation table.</p>
* <pre>
* order is decreased if w(k-1) <= w(k) * orderControl1
* order is increased if w(k) <= w(k-1) * orderControl2
* order is decreased if w(k-1) &lt;= w(k) * orderControl1
* order is increased if w(k) &lt;= w(k-1) * orderControl2
* </pre>
* <p>where w is the table of work per unit step for each order
* (number of function calls divided by the step length), and k is
@ -302,7 +301,7 @@ public class GraggBulirschStoerIntegrator extends AdaptiveStepsizeIntegrator {
* maximal number of columns is 9). The default values are 0.8 for
* orderControl1 and 0.9 for orderControl2.</p>
* @param maximalOrder maximal order in the extrapolation table (the
* maximal order is reset to default if order <= 6 or odd)
* maximal order is reset to default if order &lt;= 6 or odd)
* @param control1 first order control factor (the factor is
* reset to default if lower than 0.0001 or greater than 0.9999)
* @param control2 second order control factor (the factor
@ -403,7 +402,7 @@ public class GraggBulirschStoerIntegrator extends AdaptiveStepsizeIntegrator {
* @param useInterpolationErrorForControl if true, interpolation error is used
* for stepsize control
* @param mudifControlParameter interpolation order control parameter (the parameter
* is reset to default if <= 0 or >= 7)
* is reset to default if &lt;= 0 or &gt;= 7)
*/
public void setInterpolationControl(final boolean useInterpolationErrorForControl,
final int mudifControlParameter) {

View File

@ -47,7 +47,7 @@ import org.apache.commons.math4.util.MathArrays;
* |--------------------------------------------------------------------------------------------------------------------------------------------------
* | 1/20 0 16/45 0 49/180 49/180 1/20
* </pre>
* where q = &radic;21</p>
* where q = &radic;21
*
* @see EulerFieldIntegrator
* @see ClassicalRungeKuttaFieldIntegrator

View File

@ -43,7 +43,7 @@ import org.apache.commons.math4.util.FastMath;
* |--------------------------------------------------------------------------------------------------------------------------------------------------
* | 1/20 0 16/45 0 49/180 49/180 1/20
* </pre>
* where q = &radic;21</p>
* where q = &radic;21
*
* @see EulerIntegrator
* @see ClassicalRungeKuttaIntegrator

View File

@ -35,7 +35,6 @@ import org.apache.commons.math4.util.MathArrays;
* |----------
* | 0 1
* </pre>
* </p>
*
* @see EulerFieldIntegrator
* @see ClassicalRungeKuttaFieldIntegrator

View File

@ -37,7 +37,6 @@ import org.apache.commons.math4.ode.FieldODEStateAndDerivative;
* y(t<sub>n</sub> + &theta; h) = y (t<sub>n</sub> + h) + (1-&theta;) h [&theta; y'<sub>1</sub> - (1+&theta;) y'<sub>2</sub>]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> and y'<sub>2</sub> are the two
* evaluations of the derivatives already computed during the

View File

@ -30,7 +30,6 @@ package org.apache.commons.math4.ode.nonstiff;
* |----------
* | 0 1
* </pre>
* </p>
*
* @see EulerIntegrator
* @see ClassicalRungeKuttaIntegrator

View File

@ -34,7 +34,6 @@ import org.apache.commons.math4.ode.sampling.StepInterpolator;
* y(t<sub>n</sub> + &theta; h) = y (t<sub>n</sub> + h) + (1-&theta;) h [&theta; y'<sub>1</sub> - (1+&theta;) y'<sub>2</sub>]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> and y'<sub>2</sub> are the two
* evaluations of the derivatives already computed during the

View File

@ -47,7 +47,6 @@ import org.apache.commons.math4.util.MathArrays;
* |--------------------------
* | b1 b2 ... bs-1 bs
* </pre>
* </p>
*
* @see EulerFieldIntegrator
* @see ClassicalRungeKuttaFieldIntegrator

View File

@ -42,7 +42,6 @@ import org.apache.commons.math4.util.FastMath;
* |--------------------------
* | b1 b2 ... bs-1 bs
* </pre>
* </p>
*
* @see EulerIntegrator
* @see ClassicalRungeKuttaIntegrator

View File

@ -37,7 +37,6 @@ import org.apache.commons.math4.util.MathArrays;
* |--------------------
* | 1/8 3/8 3/8 1/8
* </pre>
* </p>
*
* @see EulerFieldIntegrator
* @see ClassicalRungeKuttaFieldIntegrator

View File

@ -47,7 +47,6 @@ import org.apache.commons.math4.ode.FieldODEStateAndDerivative;
* ]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub> are the four
* evaluations of the derivatives already computed during the

View File

@ -32,7 +32,6 @@ package org.apache.commons.math4.ode.nonstiff;
* |--------------------
* | 1/8 3/8 3/8 1/8
* </pre>
* </p>
*
* @see EulerIntegrator
* @see ClassicalRungeKuttaIntegrator

View File

@ -44,7 +44,6 @@ import org.apache.commons.math4.ode.sampling.StepInterpolator;
* ]
* </li>
* </ul>
* </p>
*
* where &theta; belongs to [0 ; 1] and where y'<sub>1</sub> to y'<sub>4</sub> are the four
* evaluations of the derivatives already computed during the

View File

@ -127,10 +127,9 @@
* automatic guess is wrong.
* </p>
*
* <p>
* <table border="1" align="center">
* <tr BGCOLOR="#CCCCFF"><td colspan=2><font size="+2">Fixed Step Integrators</font></td></tr>
* <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Name</td><td>Order</td></font></tr>
* <table border="1" style="text-align: center" summary="Fixed Step Integrators">
* <tr style="background-color: #CCCCFF"><td colspan=2 style="font-size: x-large">Fixed Step Integrators</td></tr>
* <tr style="background-color: #EEEEFF; font-size: larger"><td>Name</td><td>Order</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.EulerIntegrator Euler}</td><td>1</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.MidpointIntegrator Midpoint}</td><td>2</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.ClassicalRungeKuttaIntegrator Classical Runge-Kutta}</td><td>4</td></tr>
@ -138,11 +137,10 @@
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.ThreeEighthesIntegrator 3/8}</td><td>4</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.LutherIntegrator Luther}</td><td>6</td></tr>
* </table>
* </p>
*
* <table border="1" align="center">
* <tr BGCOLOR="#CCCCFF"><td colspan=3><font size="+2">Adaptive Stepsize Integrators</font></td></tr>
* <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Name</td><td>Integration Order</td><td>Error Estimation Order</td></font></tr>
* <table border="1" style="text-align: center" summary="Adaptive Stepsize Integrators">
* <tr style="background-color: #CCCCFF"><td colspan=3 style="font-size: x-large">Adaptive Stepsize Integrators</td></tr>
* <tr style="background-color: #EEEEFF; font-size: larger"><td>Name</td><td>Integration Order</td><td>Error Estimation Order</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.HighamHall54Integrator Higham and Hall}</td><td>5</td><td>4</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.DormandPrince54Integrator Dormand-Prince 5(4)}</td><td>5</td><td>4</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.DormandPrince853Integrator Dormand-Prince 8(5,3)}</td><td>8</td><td>5 and 3</td></tr>
@ -150,7 +148,6 @@
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.AdamsBashforthIntegrator Adams-Bashforth}</td><td>variable</td><td>variable</td></tr>
* <tr><td>{@link org.apache.commons.math4.ode.nonstiff.AdamsMoultonIntegrator Adams-Moulton}</td><td>variable</td><td>variable</td></tr>
* </table>
* </p>
*
* <p>
* In the table above, the {@link org.apache.commons.math4.ode.nonstiff.AdamsBashforthIntegrator

View File

@ -42,12 +42,11 @@ import org.apache.commons.numbers.core.Precision;
* it needs (time steps longer or shorter than the fixed time step and
* non-integer ratios are all allowed).</p>
*
* <p>
* <table border="1" align="center">
* <tr BGCOLOR="#CCCCFF"><td colspan=6><font size="+2">Examples (step size = 0.5)</font></td></tr>
* <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Start time</td><td>End time</td>
* <table border="1" style="text-align: center" summary="Examples (step size = 0.5)">
* <tr style="background-color: #CCCCFF"><td colspan=6 style="font-size: x-large">Examples (step size = 0.5)</td></tr>
* <tr style="background-color: #EEEEFF; font-size: large"><td>Start time</td><td>End time</td>
* <td>Direction</td><td>{@link StepNormalizerMode Mode}</td>
* <td>{@link StepNormalizerBounds Bounds}</td><td>Output</td></font></tr>
* <td>{@link StepNormalizerBounds Bounds}</td><td>Output</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#NEITHER NEITHER}</td><td>0.8, 1.3, 1.8, 2.3, 2.8</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#FIRST FIRST}</td><td>0.3, 0.8, 1.3, 1.8, 2.3, 2.8</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#LAST LAST}</td><td>0.8, 1.3, 1.8, 2.3, 2.8, 3.1</td></tr>
@ -81,7 +80,6 @@ import org.apache.commons.numbers.core.Precision;
* <tr><td>3.0</td><td>0.0</td><td>backward</td><td>{@link StepNormalizerMode#MULTIPLES MULTIPLES}</td><td>{@link StepNormalizerBounds#LAST LAST}</td><td>2.5, 2.0, 1.5, 1.0, 0.5, 0.0</td></tr>
* <tr><td>3.0</td><td>0.0</td><td>backward</td><td>{@link StepNormalizerMode#MULTIPLES MULTIPLES}</td><td>{@link StepNormalizerBounds#BOTH BOTH}</td><td>3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0</td></tr>
* </table>
* </p>
*
* @param <T> the type of the field elements
* @see FieldStepHandler

View File

@ -40,12 +40,11 @@ import org.apache.commons.numbers.core.Precision;
* it needs (time steps longer or shorter than the fixed time step and
* non-integer ratios are all allowed).</p>
*
* <p>
* <table border="1" align="center">
* <tr BGCOLOR="#CCCCFF"><td colspan=6><font size="+2">Examples (step size = 0.5)</font></td></tr>
* <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Start time</td><td>End time</td>
* <table border="1" style="text-align: center" summary="Examples (step size = 0.5)">
* <tr style="background-color: #CCCCFF"><td style="font-size: x-large">Examples (step size = 0.5)</td></tr>
* <tr style="background-color: #EEEEFF; font-size: large"><td>Start time</td><td>End time</td>
* <td>Direction</td><td>{@link StepNormalizerMode Mode}</td>
* <td>{@link StepNormalizerBounds Bounds}</td><td>Output</td></font></tr>
* <td>{@link StepNormalizerBounds Bounds}</td><td>Output</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#NEITHER NEITHER}</td><td>0.8, 1.3, 1.8, 2.3, 2.8</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#FIRST FIRST}</td><td>0.3, 0.8, 1.3, 1.8, 2.3, 2.8</td></tr>
* <tr><td>0.3</td><td>3.1</td><td>forward</td><td>{@link StepNormalizerMode#INCREMENT INCREMENT}</td><td>{@link StepNormalizerBounds#LAST LAST}</td><td>0.8, 1.3, 1.8, 2.3, 2.8, 3.1</td></tr>
@ -79,7 +78,6 @@ import org.apache.commons.numbers.core.Precision;
* <tr><td>3.0</td><td>0.0</td><td>backward</td><td>{@link StepNormalizerMode#MULTIPLES MULTIPLES}</td><td>{@link StepNormalizerBounds#LAST LAST}</td><td>2.5, 2.0, 1.5, 1.0, 0.5, 0.0</td></tr>
* <tr><td>3.0</td><td>0.0</td><td>backward</td><td>{@link StepNormalizerMode#MULTIPLES MULTIPLES}</td><td>{@link StepNormalizerBounds#BOTH BOTH}</td><td>3.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0</td></tr>
* </table>
* </p>
*
* @see StepHandler
* @see FixedStepHandler

View File

@ -23,7 +23,7 @@ import org.apache.commons.math4.random.RandomVectorGenerator;
/**
* Base class multi-start optimizer for a multivariate function.
* <br/>
* <br>
* This class wraps an optimizer in order to use it several times in
* turn with different starting points (trying to avoid being trapped
* in a local extremum when looking for a global one).
@ -101,7 +101,7 @@ public abstract class BaseMultiStartMultivariateOptimizer<PAIR>
* restarts. The {@code optimize} method returns the best point only.
* This method returns all the points found at the end of each starts,
* including the best one already returned by the {@code optimize} method.
* <br/>
* <br>
* The returned array as one element for each start as specified
* in the constructor. It is ordered with the results from the
* runs that did converge first, sorted from best to worst
@ -112,7 +112,7 @@ public abstract class BaseMultiStartMultivariateOptimizer<PAIR>
* an exception.
* This also means that if the first element is not {@code null}, it is
* the best point found across all starts.
* <br/>
* <br>
* The behaviour is undefined if this method is called before
* {@code optimize}; it will likely throw {@code NullPointerException}.
*

View File

@ -20,11 +20,11 @@ package org.apache.commons.math4.optim;
/**
* This interface specifies how to check if an optimization algorithm has
* converged.
* <br/>
* <br>
* Deciding if convergence has been reached is a problem-dependent issue. The
* user should provide a class implementing this interface to allow the
* optimization algorithm to stop its search according to the problem at hand.
* <br/>
* <br>
* For convenience, three implementations that fit simple needs are already
* provided: {@link SimpleValueChecker}, {@link SimpleVectorValueChecker} and
* {@link SimplePointChecker}. The first two consider that convergence is

Some files were not shown because too many files have changed in this diff Show More