Provides support for linear algebra in the form of {@link org.jscience.mathematics.vector.Matrix matrices} and {@link org.jscience.mathematics.vector.Vector vectors}.
With the {@link org.jscience.mathematics.vector.Matrix Matrix} class, you should be able to resolve linear systems of equations involving any kind of elements such as {@link org.jscience.mathematics.number.Rational Rational}, {@link org.jscience.mathematics.number.ModuloInteger ModuloInteger} (modulo operations), {@link org.jscience.mathematics.number.Complex Complex}, {@link org.jscience.mathematics.function.RationalFunction RationalFunction}, etc. The main requirement being that your element class implements the mathematical {@link org.jscience.mathematics.structure.Field Field} interface.
Most {@link org.jscience.mathematics.number numbers} and even invertible matrices themselves may implement this interface. Non-commutative multiplication is supported which allows for the resolution of systems of equations with invertible matrix coefficients (matrices of matrices).
For classes embedding automatic error calculation (e.g. {@link org.jscience.mathematics.number.Real Real} or {@link org.jscience.physics.amount.Amount Amount}), the error on the solution obtained tells you if can trust that solution or not (e.g. system close to singularity). The following example illustrates this point.
Let's say you have a simple electric circuit composed of 2 resistors in series
with a battery. You want to know the voltage (U1, U2) at the nodes of the
resistors and the current (I) traversing the circuit.[code]
import static org.jscience.physics.units.SI.*;
Amount(70.0 ± 7.3E-1) mA
. When the inputs have no error specified,
the error on the result corresponds to calculations numeric errors only
(which might increase significantly if the matrix is close to singularity).