FunctionBase.cxx
Go to the documentation of this file.
1 
12 // for truncation warning in debug mode
13 #ifdef _MSC_VER
14 #include "msdevstudio/MSconfig.h"
15 #endif
16 
17 #include "FunctionBase.h"
18 
19 #include <cassert>
20 
21 using std::string;
22 using std::vector;
23 
24 namespace hippodraw {
25 
31 {
32  m_name = "nil";
33 }
34 
39 FunctionBase ( const FunctionBase & fb )
40  : m_name ( fb.m_name ),
41  m_parm_names ( fb.m_parm_names ),
42  m_parms ( fb.m_parms )
43 {
44 }
45 
47 {
48 }
49 
52 clone () const
53 {
54  assert ( false );
55  return 0;
56 }
57 
58 void
61 {
62 }
63 
64 void
66 setName ( const char * name )
67 {
68  m_name = name;
69 }
70 
72 {
73  assert ( ! m_parm_names.empty () );
74 
75  size_t size = m_parm_names.size ();
76  m_parms.resize ( size );
77 // m_fixed.resize ( size, false );
78 
79 }
80 
81 const string & FunctionBase::name () const
82 {
83  return m_name;
84 }
85 
86 const vector < string > & FunctionBase::parmNames ( ) const
87 {
88  return m_parm_names;
89 }
90 
91 void
93 setParmNames ( const std::vector < std::string > & names )
94 {
95  m_parm_names = names;
96  resize ();
97 }
98 
99 const vector < double > & FunctionBase::getParameters () const
100 {
101  return m_parms;
102 }
103 
104 void
106 setParameters ( const std::vector< double > & incr )
107 {
108  vector< double >::const_iterator it = incr.begin ();
109  setParameters ( it );
110 }
111 
112 vector < double > ::const_iterator
114 setParameters ( std::vector < double > :: const_iterator it )
115 {
116  unsigned int size = m_parms.size();
117  for ( unsigned int i = 0; i < size; i++ ) {
118  m_parms[i] = *it++;
119  }
120 
121  return it;
122 }
123 
124 bool
127 {
128  return true;
129 }
130 
138 double FunctionBase::integrate ( double a, double b ) const
139 {
140  int n = 10;
141  double h = (b - a)/n;
142  double x = a;
143  double sumt = operator()( a ) / 2;
144 
145  for( int i = 1; i <= n - 1; i++ )
146  {
147  x += h;
148  sumt += operator()( x );
149  }
150 
151  sumt = ( sumt + operator()( b ) / 2 ) * h;
152 
153  return sumt;
154 }
155 
156 int FunctionBase::size () const
157 {
158  return m_parm_names.size ();
159 }
160 
162 {
163  return false;
164 }
165 
167 {
168 }
169 
171 {
172 }
173 
175 {
176  return 0;
177 }
178 
179 double
181 operator () ( const std::vector < double > & v ) const
182 {
183  assert ( v.size () == 1 );
184 
185  return this -> operator () ( v.front () );
186 }
187 
188 double
190 derivByParm ( int, double ) const
191 {
192  assert ( false );
193  return 0.;
194 }
195 
196 void
199 {
200  assert ( false );
201 }
202 
203 double
205 operator () ( double ) const
206 {
207  assert ( false );
208  return 0.;
209 }
210 
211 unsigned int
213 dimensions () const
214 {
215  return 1;
216 }
217 
218 } // namespace hippodraw
219 

Generated for HippoDraw Class Library by doxygen