aboutsummaryrefslogtreecommitdiffstats
path: root/methods/powell/linmin.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'methods/powell/linmin.hpp')
-rw-r--r--methods/powell/linmin.hpp105
1 files changed, 0 insertions, 105 deletions
diff --git a/methods/powell/linmin.hpp b/methods/powell/linmin.hpp
deleted file mode 100644
index 962b052..0000000
--- a/methods/powell/linmin.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-#ifndef LINMIN_HPP
-#define LINMIN_HPP
-#define OPT_HEADER
-#include "mnbrak.hpp"
-#include "brent.hpp"
-#include <core/opt_traits.hpp>
-
-namespace opt_utilities
-{
- template <typename rT,typename pT>
- class func_adaptor
- :public func_obj<rT,rT>
- {
- private:
- const pT p1,xi1;
- const func_obj<rT,pT>* pfoo;
- func_adaptor(){}
- func_adaptor(const func_adaptor&)
- :func_obj<rT,rT>(),p1(),xi1(),pfoo(0)
- {}
-
- public:
- /*
- void set_origin(pT& p2)
- {
- p1=p2;
- }
-
- void set_direction(pT& xi2)
- {
- xi1=xi2;
- }
-
- void set_func_obj(func_obj<rT,pT>& foo)
- {
- pfoo=&foo;
- }*/
- public:
- func_adaptor(const pT& _p,const pT& _xi,const func_obj<rT,pT>& pf)
- :p1(_p),xi1(_xi),pfoo(&pf)
- {}
-
- private:
- func_obj<rT,rT>* do_clone()const
- {
- return new func_adaptor(*this);
- }
-
- rT do_eval(const rT& x)
- {
- //assert(p1.size()==xi1.size());
-
- pT xt;
- opt_eq(xt,p1);
- for(size_t i=0;i<get_size(xt);++i)
- {
- //get_element(xt,i)+=x*get_element((pT)xi1,i);
- set_element(xt,i,
- get_element(xt,i)+x*get_element((pT)xi1,i));
- //get_element((pT)xi1,i);
- }
- return const_cast<func_obj<rT,pT>&>(*pfoo).eval(xt);
- //return x;
- }
- };
-
-
- template<typename rT,typename pT>
- void linmin(pT& p,pT& xi,rT& fret,func_obj<rT,pT>& func)
- {
-
- // assert(p.size()==10);
- //assert(xi.size()==10);
- func_adaptor<rT,pT> fadpt(p,xi,func);
-
- int j=0;
- const rT TOL=sqrt(std::numeric_limits<rT>::epsilon());
- rT xx=0,xmin=0,fx=0,fb=0,fa=0,bx=0,ax=0;
- int n=(int)get_size(p);
-
-
- ax=0.;
- xx=1.;
-
-
- mnbrak(ax,xx,bx,fa,fx,fb,fadpt);
- //cout<<xx<<endl;
- fret=brent(ax,xx,bx,fadpt,TOL,xmin);
- //cout<<xmin<<endl;
- for(j=0;j<n;++j)
- {
- //get_element(xi,j)*=xmin;
- set_element(xi,j,
- get_element(xi,j)*xmin);
- //get_element(p,j)+=get_element(xi,j);
- set_element(p,j,
- get_element(p,j)+get_element(xi,j));
- }
- // delete xicom_p;
- //delete pcom_p;
- }
-}
-
-
-#endif