Provides support for fairly simple symbolic math analysis (to solve algebraic equations, integrate, differentiate, calculate expressions, and so on).

{@link org.jscience.mathematics.functions.Function Functions} defined in this package can be {@link org.jscience.mathematics.functions.Function.Variable multivariate} and operate on any kind of {@link org.jscience.mathematics.matrices.Operable Operable} element such as physical quantities, matrices, all types of numbers or even the functions themselves (functions of functions)! Here is an example using {@link org.jscience.mathematics.numbers.Complex complex} {@link org.jscience.mathematics.functions.Polynomial polynomial} functions:


        // f(x) = 1 + 2x + ix²
        Polynomial x = Polynomial.valueOf(Complex.ONE, Variable.X);
        Constant one = Constant.valueOf(Complex.ONE);
        Constant two = Constant.valueOf(Complex.valueOf(2, 0));
        Constant i = Constant.valueOf(Complex.I);
        Polynomial fx = (Polynomial) one.plus(two.times(x)).plus(i.times(x.pow(2)));

        System.out.println(fx);
        System.out.println(fx.pow(2));
        System.out.println(fx.differentiate(Variable.X));
        System.out.println(fx.integrate(Variable.Y));
        System.out.println(fx.compose(fx));

        // Calculates expression.
        Variable.X.setValue(Complex.valueOf(2, 3)); // Context local
        System.out.println(fx.evaluate());

       > [1.0 + 0.0i] + [2.0 + 0.0i]x + [0.0 + 1.0i]x²
       > [1.0 + 0.0i] + [4.0 + 0.0i]x + [4.0 + 2.0i]x² + [0.0 + 4.0i]x³ + [-1.0 + 0.0i]x4
       > [2.0 + 0.0i] + [0.0 + 2.0i]x
       > [1.0 + 0.0i]y + [2.0 + 0.0i]xy + [0.0 + 1.0i]x²y
       > [3.0 + 1.0i] + [4.0 + 4.0i]x + [-2.0 + 6.0i]x² + [-4.0 + 0.0i]x³ + [0.0 - 1.0i]x4
       > -7.0 + 1.0i