Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/fitting/SQPow.java @ 4441:093f9333f66b
Fix logging statement
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 07 Nov 2012 13:54:49 +0100 |
parents | 59b14bc676ec |
children |
rev | line source |
---|---|
3100
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.math.fitting; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 public class SQPow |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 extends Function |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 public static final Derivative DERIVATIVE = |
3104
6391ca82141c
SQ: Name derivative S'(Q).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3100
diff
changeset
|
7 new Derivative("S'(Q) = a*b*Q^(b-1)") { |
3100
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 @Override |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 public de.intevation.flys.artifacts.math.Function |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 instantiate(double [] parameters) |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 final double a = parameters[0]; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 final double b = parameters[1]; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 return new de.intevation.flys.artifacts.math.Function() { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 @Override |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 public double value(double Q) { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 return a*b*Math.pow(Q, b-1); |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 }; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 }; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
3178
59b14bc676ec
Fitting: Link the functions to there inverses via getInverse().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3177
diff
changeset
|
25 public static final Function INSTANCE = new SQPow(); |
59b14bc676ec
Fitting: Link the functions to there inverses via getInverse().
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3177
diff
changeset
|
26 |
3100
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public SQPow() { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 super( |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 "sq-pow", |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 "S(Q) = a*Q^b", |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 new String [] { "a", "b" }); |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 @Override |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 public double value(double x, double [] parameters) { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 return parameters[0]*Math.pow(x, parameters[1]); |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 @Override |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 public double [] gradient(double q, double [] parameters) { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 double a = parameters[0]; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 double b = parameters[1]; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 double q_b = Math.pow(q, b); |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 return new double [] { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 q_b, |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 a*q_b*Math.log(q), |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 }; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 @Override |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 public Derivative getDerivative() { |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 return DERIVATIVE; |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 } |
3177
585c0b49e696
Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
54 |
585c0b49e696
Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
55 @Override |
585c0b49e696
Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
56 public Function getInverse() { |
585c0b49e696
Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
57 return InvSQPow.INSTANCE; |
585c0b49e696
Added inverses of the fitting functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3104
diff
changeset
|
58 } |
3100
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 } |
c0abfb695332
SQ: Add new power function.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |