00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPALGEBRA_PARABOLIC_FIT_H
00009 #define IMPALGEBRA_PARABOLIC_FIT_H
00010
00011 #include "Vector2D.h"
00012
00013 #include <vector>
00014
00015 IMPALGEBRA_BEGIN_NAMESPACE
00016
00017
00018 class IMPALGEBRAEXPORT ParabolicFit {
00019 public:
00020
00021
00022
00023
00024
00025 ParabolicFit(const std::vector<VectorD<2> >& data);
00026
00027
00028 double get_fit_error(double x) const { return error_; }
00029
00030
00031 double get_a() const { return a_; }
00032
00033
00034 double get_b() const { return b_; }
00035
00036
00037 double get_c() const { return c_; }
00038
00039
00040 void show(std::ostream &out=std::cout) const {
00041 out << "y = " << a_ << "x^2 + " << b_ << "x + " << c_ << std::endl;
00042 out << "Error = " << error_ << std::endl;
00043 }
00044
00045 private:
00046 void find_regression();
00047 void evaluate_error();
00048
00049 private:
00050 const algebra::Vector2Ds& data_;
00051 double a_, b_, c_;
00052 double error_;
00053 };
00054
00055 IMPALGEBRA_END_NAMESPACE
00056
00057 #endif