comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/math/fitting/LogLinear.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/fitting/LogLinear.java@59b14bc676ec
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
1 package org.dive4elements.river.artifacts.math.fitting;
2
3 public class LogLinear
4 extends Function
5 {
6 public static final Derivative DERIVATIVE =
7 new Derivative("W'(Q) = a*m/(m*Q + b)") {
8
9 @Override
10 public org.dive4elements.river.artifacts.math.Function
11 instantiate(double [] parameters)
12 {
13 final double a = parameters[0];
14 final double m = parameters[1];
15 final double b = parameters[2];
16
17 return new org.dive4elements.river.artifacts.math.Function() {
18 @Override
19 public double value(double Q) {
20 return a*m/(m*Q + b);
21 }
22 };
23 }
24 };
25
26 public static final Function INSTANCE = new LogLinear();
27
28 public LogLinear() {
29 super(
30 "log-linear",
31 "W(Q) = a*ln(m*Q + b)",
32 new String [] { "a", "m", "b" });
33 }
34
35 @Override
36 public double value(double x, double [] parameters) {
37 return parameters[0]*Math.log(parameters[1]*x + parameters[2]);
38 }
39
40 @Override
41 public double [] gradient(double x, double [] parameters) {
42 double a = parameters[0];
43 double m = parameters[1];
44 double b = parameters[2];
45
46 double lin = m*x + b;
47
48 return new double [] {
49 Math.log(lin),
50 a*x / lin,
51 a / lin
52 };
53 }
54
55 @Override
56 public Derivative getDerivative() {
57 return DERIVATIVE;
58 }
59
60 @Override
61 public Function getInverse() {
62 return InvLogLinear.INSTANCE;
63 }
64 }
65 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org