00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPALGEBRA_LINEAR_FIT_H
00009 #define IMPALGEBRA_LINEAR_FIT_H
00010
00011 #include "Vector2D.h"
00012
00013 #include <vector>
00014
00015 IMPALGEBRA_BEGIN_NAMESPACE
00016
00017
00018 class IMPALGEBRAEXPORT LinearFit {
00019 public:
00020
00021
00022
00023
00024
00025 LinearFit(const std::vector<algebra::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 void show(std::ostream &out=std::cout) const {
00038 out << "y = " << a_ << "x + " << b_ << std::endl;
00039 out << "Error = " << error_ << std::endl;
00040 }
00041
00042 private:
00043 void find_regression();
00044 void evaluate_error();
00045
00046 private:
00047 const algebra::Vector2Ds& data_;
00048 double a_, b_;
00049 double error_;
00050 };
00051
00052 IMPALGEBRA_END_NAMESPACE
00053
00054 #endif