Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/fitting/LinearRegressionSqrtErrorFunction.java @ 9646:0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
author | Gernot Belger <g.belger@bjoernsen.de> |
---|---|
date | Mon, 02 Dec 2019 17:56:15 +0100 |
parents | |
children |
rev | line source |
---|---|
9646
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
2 * Software engineering by |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
5 * |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
9 */ |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
10 package org.dive4elements.river.artifacts.model.fixings.fitting; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
11 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
12 import org.apache.commons.math3.analysis.MultivariateFunction; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
13 import org.apache.commons.math3.analysis.UnivariateFunction; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
14 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
15 import org.apache.commons.math3.stat.regression.SimpleRegression; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
16 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
17 /** |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
18 * @author Gernot Belger |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
19 * |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
20 */ |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
21 final class LinearRegressionSqrtErrorFunction implements MultivariateFunction, UnivariateFunction { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
22 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
23 private final double[] obsDischarges; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
24 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
25 private final double[] obsWaterlevels; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
26 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
27 private final double waterlevelMean; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
28 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
29 private final double waterlevelDeviation; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
30 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
31 private final double[] standardizedWaterlevel; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
32 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
33 private final SQRTFunction sqrtFunction; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
34 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
35 private final TargetFunction targetFunction; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
36 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
37 public LinearRegressionSqrtErrorFunction(final double[] obsDischarges, final double[] obsWaterlevels, final TargetFunction targetFunction) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
38 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
39 this.obsDischarges = obsDischarges; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
40 this.obsWaterlevels = obsWaterlevels; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
41 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
42 this.sqrtFunction = new SQRTFunction(obsWaterlevels); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
43 this.targetFunction = targetFunction; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
44 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
45 final DescriptiveStatistics stats = new DescriptiveStatistics(obsWaterlevels); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
46 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
47 // Compute mean and standard deviation |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
48 this.waterlevelMean = stats.getMean(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
49 this.waterlevelDeviation = stats.getStandardDeviation(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
50 // -mittelwert durch standardabweichung /z-transformation) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
51 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
52 // initialize the standardizedSample, which has the same length as the sample |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
53 this.standardizedWaterlevel = new double[obsWaterlevels.length]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
54 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
55 for (int i = 0; i < obsWaterlevels.length; i++) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
56 this.standardizedWaterlevel[i] = (obsWaterlevels[i] - this.waterlevelMean) / this.waterlevelDeviation; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
57 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
58 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
59 @Override |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
60 public double value(final double[] point) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
61 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
62 final double a = point[0]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
63 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
64 return value(a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
65 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
66 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
67 @Override |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
68 public double value(final double a) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
69 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
70 final double error = calc_sqrt_trans(a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
71 if (Double.isNaN(error)) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
72 return Double.POSITIVE_INFINITY; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
73 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
74 return error; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
75 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
76 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
77 private double calc_sqrt_trans(final double a) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
78 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
79 final double[] waterlevels = calc_stage_trans(a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
80 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
81 return this.sqrtFunction.calc_sqrt(waterlevels); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
82 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
83 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
84 private double[] calc_stage_trans(final double a) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
85 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
86 final double[] params = calc_parameters_trans(a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
87 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
88 final double b = params[0]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
89 final double m = params[1]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
90 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
91 return this.targetFunction.calc_stages(a, b, m); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
92 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
93 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
94 public double[] calc_parameters_trans(final double a) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
95 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
96 // stages_obs_trans = trans_stages(stages_obs, parameter_a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
97 final double[] transWaterlevels = trans_stages(this.obsWaterlevels, a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
98 final double[] discharges = this.obsDischarges; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
99 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
100 // FIXME: z-nromalizing? |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
101 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
102 // printArray(discharges); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
103 // printArray(transWaterlevels); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
104 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
105 // final DescriptiveStatistics stats = new DescriptiveStatistics(transWaterlevels); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
106 // |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
107 // // Compute mean and standard deviation |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
108 // final double mean = stats.getMean(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
109 // final double deviation = stats.getStandardDeviation(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
110 // |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
111 // final double[] normWaterlevel = new double[transWaterlevels.length]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
112 // for (int i = 0; i < transWaterlevels.length; i++) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
113 // normWaterlevel[i] = (transWaterlevels[i] - mean) / deviation; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
114 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
115 final SimpleRegression regression = new SimpleRegression(true); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
116 for (int i = 0; i < discharges.length; i++) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
117 regression.addData(discharges[i], transWaterlevels[i]); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
118 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
119 final double normSlope = regression.getSlope(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
120 final double normIntercept = regression.getIntercept(); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
121 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
122 // unnormalize |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
123 // final double slope = normSlope * deviation; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
124 // final double intercept = normIntercept + mean; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
125 final double slope = normSlope; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
126 final double intercept = normIntercept; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
127 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
128 return new double[] { intercept, slope }; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
129 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
130 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
131 // private void printArray(final double[] discharges) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
132 // for (final double d : discharges) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
133 // System.out.print(d); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
134 // System.out.print(", "); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
135 // } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
136 // System.out.println(" "); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
137 // } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
138 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
139 private double[] trans_stages(final double[] waterlevels, final double a) { |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
140 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
141 final double[] transWaterlevels = new double[waterlevels.length]; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
142 for (int i = 0; i < transWaterlevels.length; i++) |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
143 transWaterlevels[i] = Math.exp(waterlevels[i] / a); |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
144 |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
145 return transWaterlevels; |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
146 } |
0380717105ba
Implemented alternative fitting strategy for Log-Linear function.
Gernot Belger <g.belger@bjoernsen.de>
parents:
diff
changeset
|
147 } |