NonLinearFit.h
Go to the documentation of this file.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 NONLINEARFIT_H
00030 #define NONLINEARFIT_H
00031
00032 #include "Fit.h"
00033
00034 class NonLinearFit : public Fit
00035 {
00036 Q_OBJECT
00037
00038 public:
00039 NonLinearFit(ApplicationWindow *parent, Graph *g);
00040 NonLinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00041 NonLinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00042 NonLinearFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00043
00044 double eval(double *par, double x);
00045
00046 virtual void setParametersList(const QStringList& lst);
00047 virtual void setFormula(const QString& s);
00048
00049 QMap<QString, double> constants(){return d_constants;};
00050 void setConstant(const QString& parName, double val);
00051 void removeConstant(const QString& parName){d_constants.remove(parName);};
00052 void removeConstants(){d_constants.clear();};
00053 int constantsCount(){return d_constants.size();};
00054 QList<QString> constantsList(){return d_constants.keys();};
00055 double constValue(const QString& name){return d_constants.value(name);};
00056
00057 virtual QString legendInfo();
00058
00059 protected:
00060 QString logFitInfo(int iterations, int status);
00061 FunctionCurve* insertFitFunctionCurve(const QString& name, double *x, double *y, int penWidth);
00062
00063 private:
00064 void calculateFitCurveData(double *X, double *Y);
00065 void init();
00066
00067 QMap<QString, double> d_constants;
00068 };
00069 #endif