00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef EXPONENTIALFIT_H
00030 #define EXPONENTIALFIT_H
00031
00032 #include "Fit.h"
00033
00034 class ExponentialFit : public Fit
00035 {
00036 Q_OBJECT
00037
00038 public:
00039 ExponentialFit(ApplicationWindow *parent, QwtPlotCurve *c, bool expGrowth = false);
00040 ExponentialFit(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end, bool expGrowth = false);
00041 ExponentialFit(ApplicationWindow *parent, Graph *g, bool expGrowth = false);
00042 ExponentialFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, bool expGrowth = false);
00043 ExponentialFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle,
00044 double start, double end, bool expGrowth = false);
00045 ExponentialFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1, bool expGrowth = false);
00046
00047 double eval(double *par, double x){return par[0]*exp(-x/par[1]) + par[2];};
00048 bool isExponentialGrowth(){return is_exp_growth;};
00049
00050 private:
00051 void init();
00052 void customizeFitResults();
00053 void calculateFitCurveData(double *X, double *Y);
00054
00055 bool is_exp_growth;
00056 };
00057
00058 class TwoExpFit : public Fit
00059 {
00060 Q_OBJECT
00061
00062 public:
00063 TwoExpFit(ApplicationWindow *parent, QwtPlotCurve *c);
00064 TwoExpFit(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end);
00065 TwoExpFit(ApplicationWindow *parent, Graph *g);
00066 TwoExpFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00067 TwoExpFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00068 TwoExpFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00069
00070 double eval(double *par, double x){return par[0]*exp(-x/par[1]) + par[2]*exp(-x/par[3]) + par[4];};
00071
00072 private:
00073 void init();
00074 void calculateFitCurveData(double *X, double *Y);
00075 };
00076
00077 class ThreeExpFit : public Fit
00078 {
00079 Q_OBJECT
00080
00081 public:
00082 ThreeExpFit(ApplicationWindow *parent, QwtPlotCurve *c);
00083 ThreeExpFit(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end);
00084 ThreeExpFit(ApplicationWindow *parent, Graph *g);
00085 ThreeExpFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00086 ThreeExpFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00087 ThreeExpFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00088
00089 double eval(double *par, double x){return par[0]*exp(-x/par[1]) + par[2]*exp(-x/par[3]) + par[4]*exp(-x/par[5]) + par[6];};
00090
00091 private:
00092 void init();
00093 void calculateFitCurveData(double *X, double *Y);
00094 };
00095 #endif