OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "algomod.h"
16 #include "task.h"
17 #include "ranges.h"
18 #include "mathfunc.h"
19 
20 
28 {
29 public:
31  bool max, int itermax, float tol,
32  const Interval<float>& startinterval,
33  const Interval<float>* limitinterval);
49  virtual ~ExtremeFinder1D();
50 
51  void reStart( const Interval<float>& startinterval,
52  const Interval<float>* limitinterval);
62  float extremePos() const;
64  float extremeVal() const;
67  int nrIter() const;
70  int nextStep();
79 protected:
80 
81  float ax_,bx_,cx_;
82  float e_, d_;
83  float a_, b_;
84  float u_, w_, v_, x_;
85  float fw_, fv_, fx_;
86 
88  int iter_;
89  const float tol_;
91  const bool max_;
92  const int itermax_;
93 };
94 
95 
101 {
102 public:
104  const FloatMathFunction&,
105  bool max, int itermax, float tol,
106  const Interval<float>& startinterval,
107  const Interval<float>* limitinterval);
124 
125  void reStart( const Interval<float>& startinterval,
126  const Interval<float>* limitinterval);
136  float extremePos() const;
138  float extremeVal() const;
141  int nrIter() const;
144  int nextStep();
153 protected:
155  int iter;
156  const float tol;
157  const bool max;
158  const int itermax;
159 
162  float stopfuncval;
164 
165  bool isok;
167 };
168 
169 
177 {
178 
179 public:
180 
182  bool max, int itermax );
188  virtual ~ExtremeFinderND();
189 
190  template<class IDXABL>
191  void setStartPos( const IDXABL& sp )
192  {
193  for ( int idx=0; idx<n_; idx++ )
194  p_[idx] = sp[idx];
195  }
196 
197  int nextStep();
198  /*<!\retval 0 Finished
199  \retval 1 More to do
200  \retval -1 Error (no extreme found or
201  itermax reached The extreme value)
202  */
203 
204  int nrIter() const;
207  float extremeVal() const { return fret_; }
209  const float* extremePos() const { return p_; }
212  template<class IDXABL>
213  void extremePos( IDXABL& sp ) const
214  {
215  for ( int idx=0; idx<n_; idx++ )
216  sp[idx] = p_[idx];
217  }
220 private:
221 
222  float linExtreme(float*);
223 
224  float* p_;
226  float ftol_;
227  int n_;
228  int iter_;
229  float fret_;
230 
231  float* pt_;
232 
233  const bool max_;
234  const int itermax_;
236 };
237 
238 
MathFunctionND< float, float >
ExtremeFinder1D::cx_
float cx_
Definition: extremefinder.h:81
BisectionExtremeFinder1D::~BisectionExtremeFinder1D
virtual ~BisectionExtremeFinder1D()
BisectionExtremeFinder1D::limits_
Interval< float > * limits_
Definition: extremefinder.h:154
task.h
ExtremeFinder1D::max_
const bool max_
Definition: extremefinder.h:91
BisectionExtremeFinder1D::centerfuncval
float centerfuncval
Definition: extremefinder.h:163
ObjectSet< float >
ExtremeFinder1D::e_
float e_
Definition: extremefinder.h:82
BisectionExtremeFinder1D::func
const FloatMathFunction & func
Definition: extremefinder.h:166
ExtremeFinder1D::func_
const FloatMathFunction & func_
Definition: extremefinder.h:90
ExtremeFinder1D::b_
float b_
Definition: extremefinder.h:83
ExtremeFinder1D::tol_
const float tol_
Definition: extremefinder.h:89
ExtremeFinder1D::extremeVal
float extremeVal() const
ExtremeFinder1D::itermax_
const int itermax_
Definition: extremefinder.h:92
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
ExtremeFinderND::extremeVal
float extremeVal() const
Definition: extremefinder.h:207
BisectionExtremeFinder1D::max
const bool max
Definition: extremefinder.h:157
ExtremeFinderND::extremePos
void extremePos(IDXABL &sp) const
Sets the sp variable to the extreme position.
Definition: extremefinder.h:213
ExtremeFinder1D::iter_
int iter_
Definition: extremefinder.h:88
ExtremeFinder1D::nextStep
int nextStep()
ExtremeFinderND::nrIter
int nrIter() const
BisectionExtremeFinder1D::isok
bool isok
Definition: extremefinder.h:165
ExtremeFinderND
Finds the nearest local extreme position in ND's. Implementation of Powell's Quadratically Converge...
Definition: extremefinder.h:177
MathFunction
Mathematical function.
Definition: mathfunc.h:61
BisectionExtremeFinder1D::nextStep
int nextStep()
ExtremeFinder1D::nrIter
int nrIter() const
BisectionExtremeFinder1D::BisectionExtremeFinder1D
BisectionExtremeFinder1D(const FloatMathFunction &, bool max, int itermax, float tol, const Interval< float > &startinterval, const Interval< float > *limitinterval)
ExtremeFinderND::xi_
ObjectSet< float > xi_
Definition: extremefinder.h:225
ExtremeFinder1D::limits_
Interval< float > * limits_
Definition: extremefinder.h:87
ExtremeFinderND::iter_
int iter_
Definition: extremefinder.h:228
ExtremeFinderND::linExtreme
float linExtreme(float *)
BisectionExtremeFinder1D::extremePos
float extremePos() const
ExtremeFinderND::ExtremeFinderND
ExtremeFinderND(const FloatMathFunctionND &, bool max, int itermax)
ExtremeFinder1D::extremePos
float extremePos() const
ExtremeFinderND::nextStep
int nextStep()
ExtremeFinderND::p_
float * p_
Definition: extremefinder.h:224
ExtremeFinderND::pt_
float * pt_
Definition: extremefinder.h:231
ExtremeFinder1D::ExtremeFinder1D
ExtremeFinder1D(const FloatMathFunction &func, bool max, int itermax, float tol, const Interval< float > &startinterval, const Interval< float > *limitinterval)
ExtremeFinder1D::~ExtremeFinder1D
virtual ~ExtremeFinder1D()
ExtremeFinderND::fret_
float fret_
Definition: extremefinder.h:229
mathfunc.h
BisectionExtremeFinder1D::iter
int iter
Definition: extremefinder.h:155
ExtremeFinderND::setStartPos
void setStartPos(const IDXABL &sp)
Definition: extremefinder.h:191
BisectionExtremeFinder1D::nrIter
int nrIter() const
BisectionExtremeFinder1D::current
Interval< float > current
Definition: extremefinder.h:160
BisectionExtremeFinder1D::reStart
void reStart(const Interval< float > &startinterval, const Interval< float > *limitinterval)
ExtremeFinderND::func_
const FloatMathFunctionND & func_
Definition: extremefinder.h:235
BisectionExtremeFinder1D::stopfuncval
float stopfuncval
Definition: extremefinder.h:162
ExtremeFinderND::ftol_
float ftol_
Definition: extremefinder.h:226
ExtremeFinderND::itermax_
const int itermax_
Definition: extremefinder.h:234
ExtremeFinderND::n_
int n_
Definition: extremefinder.h:227
ExtremeFinderND::~ExtremeFinderND
virtual ~ExtremeFinderND()
BisectionExtremeFinder1D::itermax
const int itermax
Definition: extremefinder.h:158
BisectionExtremeFinder1D::tol
const float tol
Definition: extremefinder.h:156
ExtremeFinder1D
Finds extreme values in FloatMathFunctions.
Definition: extremefinder.h:28
ExtremeFinder1D::x_
float x_
Definition: extremefinder.h:84
ranges.h
BisectionExtremeFinder1D::extremeVal
float extremeVal() const
Interval< float >
BisectionExtremeFinder1D::startfuncval
float startfuncval
Definition: extremefinder.h:161
ExtremeFinderND::extremePos
const float * extremePos() const
Definition: extremefinder.h:209
ExtremeFinder1D::reStart
void reStart(const Interval< float > &startinterval, const Interval< float > *limitinterval)
SequentialTask
The generalization of something (e.g. a computation) where the steps must be done in sequence,...
Definition: task.h:125
BisectionExtremeFinder1D
Bisection Extreme Finder.
Definition: extremefinder.h:101
ExtremeFinder1D::fx_
float fx_
Definition: extremefinder.h:85
ExtremeFinderND::max_
const bool max_
Definition: extremefinder.h:233

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