00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(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 psPolynomial1D* psVectorFitPolynomial1D(
00066 psPolynomial1D* myPoly,
00067 const psVector* x,
00068 const psVector* y,
00069 const psVector* yErr
00070 );
00071
00072 psSpline1D *psVectorFitSpline1D(psSpline1D *mySpline,
00073 const psVector* x,
00074 const psVector* y,
00075 const psVector* yErr
00076 );
00077
00078 typedef
00079 psVector* (*psMinimizeLMChi2Func)(psImage *deriv,
00080 const psVector *params,
00081 const psArray *x);
00082
00083 psBool psMinimizeLMChi2(psMinimization *min,
00084 psImage *covar,
00085 psVector *params,
00086 const psVector *paramMask,
00087 const psArray *x,
00088 const psVector *y,
00089 const psVector *yErr,
00090 psMinimizeLMChi2Func func);
00091
00092 typedef
00093 psF32 (*psMinimizePowellFunc)(const psVector *params,
00094 const psArray *coords);
00095
00096 psBool psMinimizePowell(psMinimization *min,
00097 psVector *params,
00098 const psVector *paramMask,
00099 const psArray *coords,
00100 psMinimizePowellFunc func);
00101
00102 psVector *psMinimizeLMChi2Gauss1D(psImage *deriv,
00103 const psVector *params,
00104 const psArray *coords);
00105
00106 psVector *psMinimizePowellChi2Gauss1D(const psVector *params,
00107 const psArray *coords);
00108
00109 typedef
00110 psVector *(*psMinimizeChi2PowellFunc)(const psVector *params,
00111 const psArray *coords);
00112
00113 psBool psMinimizeChi2Powell(psMinimization *min,
00114 psVector *params,
00115 const psVector *paramMask,
00116 const psArray *coords,
00117 const psVector *value,
00118 const psVector *error,
00119 psMinimizeChi2PowellFunc func);
00120
00121
00122
00123
00124
00125 #endif
00126