annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/fitting/Log.java @ 4655:cd44d28d0fbc

Move the access to artifact data to the Access object Use BedHeightAccess class to receive the data from the artifact. This abstracts the data access from the actual artifact.
author Björn Ricks <bjoern.ricks@intevation.de>
date Tue, 11 Dec 2012 09:44:04 +0100
parents 585c0b49e696
children
rev   line source
2569
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.math.fitting;
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 public class Log
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 extends Function
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 {
3009
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
6 public static final Derivative DERIVATIVE =
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
7 new Derivative("W'(Q) = m/(Q+b)") {
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
8
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
9 @Override
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
10 public de.intevation.flys.artifacts.math.Function
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
11 instantiate(double [] parameters)
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
12 {
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
13 final double m = parameters[0];
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
14 final double b = parameters[1];
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
15
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
16 return new de.intevation.flys.artifacts.math.Function() {
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
17 @Override
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
18 public double value(double Q) {
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
19 return m/(Q+b);
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
20 }
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
21 };
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
22 }
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
23 };
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
24
3177
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
25 public static final Function INSTANCE = new Log();
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
26
2569
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 public Log() {
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 super("log", "W(Q) = m*ln(Q + b)", new String [] { "m", "b" });
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 }
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 @Override
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 public double value(double x, double [] parameters) {
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 return parameters[0]*Math.log(x + parameters[1]);
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 }
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 @Override
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 public double [] gradient(double x, double [] parameters) {
3165
6b13d7e7b403 FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3009
diff changeset
38 double m = parameters[0];
6b13d7e7b403 FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3009
diff changeset
39 double b = parameters[1];
6b13d7e7b403 FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3009
diff changeset
40 double b_x = b + x;
2569
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 return new double [] {
3165
6b13d7e7b403 FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3009
diff changeset
42 Math.log(b_x),
6b13d7e7b403 FixA: Added more debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3009
diff changeset
43 m/b_x
2569
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 };
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 }
3009
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
46
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
47 @Override
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
48 public Derivative getDerivative() {
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
49 return DERIVATIVE;
4dda67a893da FixA: Added the derivatives of all fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2569
diff changeset
50 }
3177
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
51
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
52 @Override
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
53 public Function getInverse() {
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
54 return InvLog.INSTANCE;
585c0b49e696 Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3165
diff changeset
55 }
2569
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 }
0dd58ab7e118 Added functions to be used for fitting in the "Fixierungsanalyse" and "Extremwertermittlung".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org