view flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/fitting/Function.java @ 2744:c1f2e792704a

FixA: Calculate Delta W/t, too. flys-artifacts/trunk@4479 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 23 May 2012 18:27:45 +0000
parents 8a6ce15ced7f
children 4dda67a893da
line wrap: on
line source
package de.intevation.flys.artifacts.math.fitting;

import org.apache.commons.math.FunctionEvaluationException;

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

import de.intevation.flys.utils.DoubleUtil;

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

    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 de.intevation.flys.artifacts.math.Function instantiate(
        final double [] parameters
    ) {
        return new de.intevation.flys.artifacts.math.Function() {

            @Override
            public double value(double x) {
                try {
                    return Function.this.value(x, parameters);
                }
                catch (FunctionEvaluationException fee) {
                    return Double.NaN;
                }
            }
        };
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org