OpendTect  6.3
extremefinder.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Kristofer Tingdahl
8  Date: 4-11-2002
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "algomod.h"
15 #include "task.h"
16 #include "ranges.h"
17 #include "mathfunc.h"
18 
19 
27 {
28 public:
30  bool max, int itermax, float tol,
31  const Interval<float>& startinterval,
32  const Interval<float>* limitinterval);
48  virtual ~ExtremeFinder1D();
49 
50  void reStart( const Interval<float>& startinterval,
51  const Interval<float>* limitinterval);
61  float extremePos() const;
63  float extremeVal() const;
66  int nrIter() const;
69  int nextStep();
78 protected:
79 
80  float ax_,bx_,cx_;
81  float e_, d_;
82  float a_, b_;
83  float u_, w_, v_, x_;
84  float fw_, fv_, fx_;
85 
87  int iter_;
88  const float tol_;
90  const bool max_;
91  const int itermax_;
92 };
93 
94 
100 {
101 public:
103  const FloatMathFunction&,
104  bool max, int itermax, float tol,
105  const Interval<float>& startinterval,
106  const Interval<float>* limitinterval);
122  virtual ~BisectionExtremeFinder1D();
123 
124  void reStart( const Interval<float>& startinterval,
125  const Interval<float>* limitinterval);
135  float extremePos() const;
137  float extremeVal() const;
140  int nrIter() const;
143  int nextStep();
152 protected:
154  int iter;
155  const float tol;
156  const bool max;
157  const int itermax;
158 
161  float stopfuncval;
163 
164  bool isok;
166 };
167 
168 
176 {
177 
178 public:
179 
181  bool max, int itermax );
187  virtual ~ExtremeFinderND();
188 
189  template<class IDXABL>
190  void setStartPos( const IDXABL& sp )
191  {
192  for ( int idx=0; idx<n_; idx++ )
193  p_[idx] = sp[idx];
194  }
195 
196  int nextStep();
197  /*<!\retval 0 Finished
198  \retval 1 More to do
199  \retval -1 Error (no extreme found or
200  itermax reached The extreme value)
201  */
202 
203  int nrIter() const;
206  float extremeVal() const { return fret_; }
208  const float* extremePos() const { return p_; }
211  template<class IDXABL>
212  void extremePos( IDXABL& sp ) const
213  {
214  for ( int idx=0; idx<n_; idx++ )
215  sp[idx] = p_[idx];
216  }
219 private:
220 
221  float linExtreme(float*);
222 
223  float* p_;
225  float ftol_;
226  int n_;
227  int iter_;
228  float fret_;
229 
230  float* pt_;
231 
232  const bool max_;
233  const int itermax_;
235 };
#define mExpClass(module)
Definition: commondefs.h:157
Interval< float > * limits_
Definition: extremefinder.h:153
int iter_
Definition: extremefinder.h:87
float b_
Definition: extremefinder.h:82
const float * extremePos() const
Definition: extremefinder.h:208
const bool max_
Definition: extremefinder.h:232
const bool max_
Definition: extremefinder.h:90
const FloatMathFunction & func_
Definition: extremefinder.h:89
float fx_
Definition: extremefinder.h:84
Mathematical function.
Definition: mathfunc.h:59
float stopfuncval
Definition: extremefinder.h:161
float x_
Definition: extremefinder.h:83
Finds the nearest local extreme position in ND&#39;s. Implementation of Powell&#39;s Quadratically Convergent...
Definition: extremefinder.h:175
int n_
Definition: extremefinder.h:226
Interval< float > * limits_
Definition: extremefinder.h:86
bool isok
Definition: extremefinder.h:164
float centerfuncval
Definition: extremefinder.h:162
The generalization of something (e.g. a computation) where the steps must be done in sequence...
Definition: task.h:147
const bool max
Definition: extremefinder.h:156
Interval< float > current
Definition: extremefinder.h:159
const FloatMathFunctionND & func_
Definition: extremefinder.h:234
const FloatMathFunction & func
Definition: extremefinder.h:165
Bisection Extreme Finder.
Definition: extremefinder.h:99
float ftol_
Definition: extremefinder.h:225
float cx_
Definition: extremefinder.h:80
int iter_
Definition: extremefinder.h:227
float * p_
Definition: extremefinder.h:223
float * pt_
Definition: extremefinder.h:230
const float tol_
Definition: extremefinder.h:88
const int itermax_
Definition: extremefinder.h:233
float fret_
Definition: extremefinder.h:228
const int itermax_
Definition: extremefinder.h:91
float e_
Definition: extremefinder.h:81
void setStartPos(const IDXABL &sp)
Definition: extremefinder.h:190
Finds extreme values in FloatMathFunctions.
Definition: extremefinder.h:26
float startfuncval
Definition: extremefinder.h:160
void extremePos(IDXABL &sp) const
Sets the sp variable to the extreme position.
Definition: extremefinder.h:212
float extremeVal() const
Definition: extremefinder.h:206
int iter
Definition: extremefinder.h:154
const float tol
Definition: extremefinder.h:155
const int itermax
Definition: extremefinder.h:157
ObjectSet< float > xi_
Definition: extremefinder.h:224

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017