00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef PS_MINIMIZE_H
00018 #define PS_MINIMIZE_H
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "psVector.h"
00029 #include "psMemory.h"
00030 #include "psArray.h"
00031 #include "psImage.h"
00032 #include "psMatrix.h"
00033 #include "psFunctions.h"
00034 #include "psStats.h"
00035 #include "psTrace.h"
00036 #include "psError.h"
00037 #include "psConstants.h"
00038
00039 typedef struct
00040 {
00041 psS32 maxIter;
00042 psF32 tol;
00043 psF32 value;
00044 psS32 iter;
00045 psF32 lastDelta;
00046 }
00047 psMinimization;
00048
00049 psMinimization *psMinimizationAlloc(psS32 maxIter,
00050 psF32 tol
00051 );
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 psPolynomial1D* psVectorFitPolynomial1D(
00067 psPolynomial1D* myPoly,
00068 const psVector* x,
00069 const psVector* y,
00070 const psVector* yErr
00071 );
00072
00073 psSpline1D *psVectorFitSpline1D(psSpline1D *mySpline,
00074 const psVector* x,
00075 const psVector* y,
00076 const psVector* yErr
00077 );
00078
00079
00080 typedef
00081 psF64 (*psMinimizeLMChi2Func)(psVector *deriv,
00082 psVector *params,
00083 psVector *x);
00084
00085 psBool psMinimizeLMChi2(psMinimization *min,
00086 psImage *covar,
00087 psVector *params,
00088 const psVector *paramMask,
00089 const psArray *x,
00090 const psVector *y,
00091 const psVector *yErr,
00092 psMinimizeLMChi2Func func);
00093
00094 psBool p_psMinLM_GuessABP (psImage *Alpha,
00095 psVector *Beta,
00096 psVector *Params,
00097 psImage *alpha,
00098 psVector *beta,
00099 psVector *params,
00100 psF64 lambda);
00101
00102 psF64 p_psMinLM_SetABX (psImage *alpha,
00103 psVector *beta,
00104 psVector *params,
00105 const psArray *x,
00106 const psVector *y,
00107 const psVector *dy,
00108 psMinimizeLMChi2Func func);
00109
00110 typedef
00111 psF32 (*psMinimizePowellFunc)(const psVector *params,
00112 const psArray *coords);
00113
00114 psBool psMinimizePowell(psMinimization *min,
00115 psVector *params,
00116 const psVector *paramMask,
00117 const psArray *coords,
00118 psMinimizePowellFunc func);
00119
00120 psVector *psMinimizeLMChi2Gauss1D(psImage *deriv,
00121 const psVector *params,
00122 const psArray *coords);
00123
00124 psVector *psMinimizePowellChi2Gauss1D(const psVector *params,
00125 const psArray *coords);
00126
00127 typedef
00128 psVector *(*psMinimizeChi2PowellFunc)(const psVector *params,
00129 const psArray *coords);
00130
00131 psBool psMinimizeChi2Powell(psMinimization *min,
00132 psVector *params,
00133 const psVector *paramMask,
00134 const psArray *coords,
00135 const psVector *value,
00136 const psVector *error,
00137 psMinimizeChi2PowellFunc func);
00138
00139
00140 bool psGaussJordan (psImage *a, psVector *b);
00141
00142
00143
00144 #endif // #ifndef PS_MINIMIZE_H
00145