view flys-artifacts/src/main/java/org/dive4elements/river/artifacts/math/fitting/Function.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/fitting/Function.java@585c0b49e696
children
line wrap: on
line source
package org.dive4elements.river.artifacts.math.fitting;

import org.apache.commons.math.FunctionEvaluationException;

import org.apache.commons.math.optimization.fitting.ParametricRealFunction;

import org.dive4elements.river.utils.DoubleUtil;

public abstract class Function
implements            ParametricRealFunction
{
    protected String    name;
    protected String    description;
    protected String [] parameterNames;
    protected double [] initialGuess;

    public static abstract class Derivative {

        protected String description;

        public Derivative() {
        }

        public Derivative(String description) {
            this.description = description;
        }

        public String getDescription() {
            return description;
        }

        public abstract org.dive4elements.river.artifacts.math.Function
            instantiate(double [] parameters);

    } // interface Derivative

    public Function() {
    }

    public Function(
        String    name,
        String    description,
        String [] parameterNames
    ) {
        this(name,
            description,
            parameterNames,
            DoubleUtil.fill(parameterNames.length, 1d));
    }

    public Function(
        String    name,
        String    description,
        String [] parameterNames,
        double [] initialGuess
    ) {
        this.name           = name;
        this.description    = description;
        this.parameterNames = parameterNames;
        this.initialGuess   = initialGuess;
    }

    public String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

    public String [] getParameterNames() {
        return parameterNames;
    }

    public double [] getInitialGuess() {
        return initialGuess;
    }

    public org.dive4elements.river.artifacts.math.Function instantiate(
        final double [] parameters
    ) {
        return new org.dive4elements.river.artifacts.math.Function() {

            @Override
            public double value(double x) {
                try {
                    return Function.this.value(x, parameters);
                }
                catch (FunctionEvaluationException fee) {
                    return Double.NaN;
                }
            }
        };
    }

    public abstract Derivative getDerivative();

    public abstract Function getInverse();
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org