diff options
Diffstat (limited to 'examples/fitting.hs')
-rw-r--r-- | examples/fitting.hs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/fitting.hs b/examples/fitting.hs new file mode 100644 index 0000000..8298c52 --- /dev/null +++ b/examples/fitting.hs | |||
@@ -0,0 +1,24 @@ | |||
1 | -- nonlinear least-squares fitting | ||
2 | |||
3 | import Numeric.GSL.Fitting | ||
4 | import Numeric.LinearAlgebra | ||
5 | |||
6 | xs = map return [0 .. 39] | ||
7 | sigma = 0.1 | ||
8 | ys = map return $ toList $ fromList (map (head . expModel [5,0.1,1]) xs) | ||
9 | + scalar sigma * (randomVector 0 Gaussian 40) | ||
10 | |||
11 | dat :: [([Double],[Double],Double)] | ||
12 | |||
13 | dat = zipWith3 (,,) xs ys (repeat sigma) | ||
14 | |||
15 | expModel [a,lambda,b] [t] = [a * exp (-lambda * t) + b] | ||
16 | |||
17 | expModelDer [a,lambda,b] [t] = [[exp (-lambda * t), -t * a * exp(-lambda*t) , 1]] | ||
18 | |||
19 | (sol,path) = fitModel 1E-4 1E-4 20 (resM expModel, resD expModelDer) dat [1,0,0] | ||
20 | |||
21 | main = do | ||
22 | print dat | ||
23 | print path | ||
24 | print sol | ||