IMP  2.2.1
The Integrative Modeling Platform
ParabolicFit.h
Go to the documentation of this file.
1 /**
2  * \file IMP/algebra/ParabolicFit.h
3  * \brief fit the data with parabola
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPALGEBRA_PARABOLIC_FIT_H
10 #define IMPALGEBRA_PARABOLIC_FIT_H
11 
12 #include "Vector2D.h"
13 #include "GeometricPrimitiveD.h"
14 #include <vector>
15 
16 IMPALGEBRA_BEGIN_NAMESPACE
17 
18 //! Calculate parabola that fits best the input data points
19 class IMPALGEBRAEXPORT ParabolicFit2D : public GeometricPrimitiveD<2> {
20  public:
21  //! Constructor
22  /**
23  \param[in] data vector of pairs (VectorD<2>) with x and their
24  corresponding y values
25  */
26  ParabolicFit2D(const Vector2Ds& data);
27 
28  //! fit error
29  double get_fit_error() const { return error_; }
30 
31  //! get a value (a*x^2)
32  double get_a() const { return a_; }
33 
34  //! get b value (b*x)
35  double get_b() const { return b_; }
36 
37  //! get c value (constant)
38  double get_c() const { return c_; }
39 
41  out << "y = " << a_ << "x^2 + " << b_ << "x + " << c_ << std::endl;
42  out << "Error = " << error_ << std::endl;
43  });
44 
45  private:
46  void find_regression(const Vector2Ds& data);
47  void evaluate_error(const Vector2Ds& data);
48 
49  private:
50  double a_, b_, c_;
51  double error_;
52 };
53 
55 #ifndef IMP_DOXYGEN
56 typedef ParabolicFit2D ParabolicFit;
57 #endif
58 
59 IMPALGEBRA_END_NAMESPACE
60 
61 #endif /* IMPALGEBRA_PARABOLIC_FIT_H */
Basic types used by IMP.
double get_b() const
get b value (b*x)
Definition: ParabolicFit.h:35
Simple 2D vector class.
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
base::Vector< VectorD< 2 > > Vector2Ds
Definition: VectorD.h:393
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed.
Calculate parabola that fits best the input data points.
Definition: ParabolicFit.h:19
double get_c() const
get c value (constant)
Definition: ParabolicFit.h:38
double get_fit_error() const
fit error
Definition: ParabolicFit.h:29
double get_a() const
get a value (a*x^2)
Definition: ParabolicFit.h:32