Only one technique adequately estimates parameter errors when the parameter values where found by optimisation - Monte Carlo simulations. In relax this can be implemented by using a series of functions from the monte_carlo user function class. Firstly the number of simulations needs to be set

[firstnumber=68] # Monte Carlo simulations. monte_carlo.setup(number=500)

For each simulation, randomised relaxation curves will be fit using exactly the same methodology as the original exponential curves. These randomised curves are created by back calculation from the fitted model parameter values and then each point on the curve randomised using the error values set earlier in the script

[firstnumber=70] monte_carlo.create_data()

As a grid search for each simulation would be too computationally expensive, the starting point for optimisation for each simulation can be set to the position of the optimised parameter values of the model

[firstnumber=71] monte_carlo.initial_values()

Then exactly the same optimisation as was used for the model can be performed

[firstnumber=72] minimise.execute('newton', constraints=False)

The parameter errors are then determined as the standard deviation of the optimised parameter values of the simulations

[firstnumber=73] monte_carlo.error_analysis()

The relax user manual (PDF), created 2020-08-26.