Lines 193-229
Link Here
|
193 |
} |
193 |
} |
194 |
while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS ); |
194 |
while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS ); |
195 |
|
195 |
|
196 |
gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance ); |
196 |
gsl_matrix *J = gsl_matrix_alloc(pSolver->fdf->n, pSolver->fdf->p); |
197 |
|
197 |
if (J != NULL) { |
198 |
// |
198 |
gsl_multifit_fdfsolver_jac(pSolver, J); |
199 |
// determine the fitted values... |
199 |
|
200 |
// |
200 |
gsl_multifit_covar( J, 0.0, pMatrixCovariance ); |
201 |
for( i=0; i<NUM_PARAMS; i++ ) { |
201 |
|
202 |
dXInitial[i] = gsl_vector_get( pSolver->x, i ); |
202 |
// |
203 |
} |
203 |
// determine the fitted values... |
204 |
|
204 |
// |
205 |
for( i=0; i<iLength; i++ ) { |
205 |
for( i=0; i<NUM_PARAMS; i++ ) { |
206 |
vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial ); |
206 |
dXInitial[i] = gsl_vector_get( pSolver->x, i ); |
207 |
vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i]; |
207 |
} |
208 |
} |
208 |
|
209 |
|
209 |
for( i=0; i<iLength; i++ ) { |
210 |
// |
210 |
vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial ); |
211 |
// fill in the parameter values and covariance matrix... |
211 |
vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i]; |
212 |
// |
212 |
} |
213 |
for( i=0; i<NUM_PARAMS; i++ ) { |
213 |
|
214 |
vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); |
214 |
// |
215 |
for( j=0; j<NUM_PARAMS; j++ ) { |
215 |
// fill in the parameter values and covariance matrix... |
216 |
vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); |
216 |
// |
217 |
} |
217 |
for( i=0; i<NUM_PARAMS; i++ ) { |
|
|
218 |
vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); |
219 |
for( j=0; j<NUM_PARAMS; j++ ) { |
220 |
vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); |
221 |
} |
222 |
} |
223 |
|
224 |
// |
225 |
// determine the value of chi^2/nu |
226 |
// |
227 |
scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); |
228 |
|
229 |
bReturn = true; |
230 |
|
231 |
gsl_matrix_free( J ); |
218 |
} |
232 |
} |
219 |
|
|
|
220 |
// |
221 |
// determine the value of chi^2/nu |
222 |
// |
223 |
scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); |
224 |
|
225 |
bReturn = true; |
226 |
|
227 |
gsl_matrix_free( pMatrixCovariance ); |
233 |
gsl_matrix_free( pMatrixCovariance ); |
228 |
} |
234 |
} |
229 |
gsl_multifit_fdfsolver_free( pSolver ); |
235 |
gsl_multifit_fdfsolver_free( pSolver ); |