g@9646: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde g@9646: * Software engineering by g@9646: * Björnsen Beratende Ingenieure GmbH g@9646: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt g@9646: * g@9646: * This file is Free Software under the GNU AGPL (>=v3) g@9646: * and comes with ABSOLUTELY NO WARRANTY! Check out the g@9646: * documentation coming with Dive4Elements River for details. g@9646: */ g@9646: package org.dive4elements.river.artifacts.model.fixings; g@9646: g@9646: import java.util.List; g@9646: g@9646: import org.dive4elements.river.artifacts.math.fitting.LogLinearAlternative; g@9646: import org.dive4elements.river.artifacts.model.fixings.fitting.LinearLogLinearizedFitting; g@9646: import org.dive4elements.river.artifacts.model.fixings.fitting.LinearLogLinearizedFitting.Result; g@9646: g@9646: /** g@9646: * @author Gernot Belger g@9646: */ g@9646: final class LogLinearFittingOperation extends AbstractFittingOperation implements IFittingOperation { g@9646: g@9646: public LogLinearFittingOperation(final LogLinearAlternative function) { g@9646: super(function); g@9646: } g@9646: g@9646: @Override g@9646: public Fitting execute(final List data) { g@9646: g@9646: final double[] obsDischarges = new double[data.size()]; g@9646: final double[] obsWaterlevels = new double[data.size()]; g@9646: g@9646: for (int i = 0; i < data.size(); i++) { g@9646: final FittingData fittingData = data.get(i); g@9646: g@9646: obsDischarges[i] = fittingData.q; g@9646: obsWaterlevels[i] = fittingData.w; g@9646: } g@9646: g@9646: final LinearLogLinearizedFitting fitting = new LinearLogLinearizedFitting(obsDischarges, obsWaterlevels); g@9646: g@9646: final Result result = fitting.optimize(); g@9646: final double a = result.getA(); g@9646: final double b = result.getB(); g@9646: final double m = result.getM(); g@9646: final double chiSquare = result.getChiSquare(); g@9646: g@9646: final double[] parameters = new double[] { a, m, b }; g@9646: g@9646: return createFitting(parameters, chiSquare, data); g@9646: } g@9646: }