Changeset 7160 for trunk/psLib/test/math/tst_psMinimizeLMM.c
- Timestamp:
- May 22, 2006, 12:30:04 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/test/math/tst_psMinimizeLMM.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/math/tst_psMinimizeLMM.c
r7130 r7160 13 13 #define NUM_ITERATIONS 100 14 14 #define ERR_TOL 1e-6 15 #define NUM_DATA_POINTS 10015 #define NUM_DATA_POINTS 300 16 16 #define NUM_PARAMS 3 17 17 float expectedParm[NUM_PARAMS]; … … 23 23 { 24 24 return params->data.F32[0] * 25 expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]))) +25 expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1]))) + 26 26 params->data.F32[2]; 27 27 } … … 32 32 ) 33 33 { 34 deriv->data.F32[0] = expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]))); 35 deriv->data.F32[1] = - params->data.F32[0] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1])) * 36 expf(- params->data.F32[1] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]))); 34 deriv->data.F32[0] = expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1]))); 35 deriv->data.F32[1] = params->data.F32[0] * (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1])) / params->data.F32[1] / params->data.F32[1] / params->data.F32[1] * expf(- (PS_SQR(x->data.F32[0]) + PS_SQR(x->data.F32[1]) / 2.0 / PS_SQR(params->data.F32[1]))); 37 36 deriv->data.F32[2] = 1.0; 38 37 } … … 80 79 81 80 trueParams->data.F32[0] = 100.0; // Normalisation 82 trueParams->data.F32[1] = 0.1; // Shape81 trueParams->data.F32[1] = 3.0; // Width 83 82 trueParams->data.F32[2] = 10.0; // Background 84 83 … … 94 93 x->data.F32[1] = 10.0 * psRandomUniform(rng) - 5.0; 95 94 ordinates->data[i] = x; 96 coordinates->data.F32[i] = function(params, x) + 0.1 * psRandomGaussian(rng); // Add some noise 95 // Add some noise 96 coordinates->data.F32[i] = function(params, x) + 0.1 * (2.0 * psRandomGaussian(rng) - 1.0); 97 97 errors->data.F32[i] = 0.1; 98 98 printf("Data %ld: (%f, %f) --> %f\n", i, x->data.F32[0], x->data.F32[1], coordinates->data.F32[i]);
Note:
See TracChangeset
for help on using the changeset viewer.
