comparison artifacts/src/main/java/org/dive4elements/river/artifacts/math/fitting/InvPow.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/math/fitting/InvPow.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.math.fitting;
2
3 public class InvPow
4 extends Function
5 {
6 public static final Derivative DERIVATIVE =
7 new Derivative("Q'(W) = ((W-d)/a)^(1/c)/(c*(W-d))") {
8
9 @Override
10 public org.dive4elements.river.artifacts.math.Function
11 instantiate(double [] parameters)
12 {
13 double a = parameters[0];
14 final double c = parameters[1];
15 final double d = parameters[2];
16 final double _1a = 1d/a;
17 final double _1c = 1d/c;
18
19 return new org.dive4elements.river.artifacts.math.Function() {
20 @Override
21 public double value(double W) {
22 double Wd = W-d;
23 return Math.pow(Wd*_1a, _1c)/(c*Wd);
24 }
25 };
26 }
27 };
28
29 public static final Function INSTANCE = new InvPow();
30
31 public InvPow() {
32 super(
33 "pow",
34 "Q(W) = ((W-d)/a)^(1/c)",
35 new String [] { "a", "c", "d" });
36 }
37
38 @Override
39 public double value(double W, double [] parameters) {
40 double a = parameters[0];
41 double c = parameters[1];
42 double d = parameters[2];
43 return Math.pow((W-d)/a, 1d/c);
44 }
45
46 @Override
47 public double [] gradient(double W, double [] parameters) {
48 double a = parameters[0];
49 double c = parameters[1];
50 double d = parameters[2];
51 double _1c = 1d/c;
52 double Wdac = Math.pow((W-d)/a, 1d/c);
53 double Wd = W-d;
54 return new double [] {
55 -Wdac/(a*c),
56 (Wdac*Math.log(Wd/a))/(c*c),
57 -Wdac/(c*Wd)
58 };
59 }
60
61 @Override
62 public Derivative getDerivative() {
63 // TODO: Implement me!
64 return null;
65 }
66
67 @Override
68 public Function getInverse() {
69 return Pow.INSTANCE;
70 }
71 }
72 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org