.. note::
    :class: sphx-glr-download-link-note

    Click :ref:`here <sphx_glr_download_examples_documentation_fitting_withreport.py>` to download the full example code
.. rst-class:: sphx-glr-example-title

.. _sphx_glr_examples_documentation_fitting_withreport.py:


doc_fitting_withreport.py
=========================




.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    [[Fit Statistics]]
        # fitting method   = leastsq
        # function evals   = 83
        # data points      = 1001
        # variables        = 4
        chi-square         = 498.811759
        reduced chi-square = 0.50031270
        Akaike info crit   = -689.222517
        Bayesian info crit = -669.587497
    [[Variables]]
        amp:     13.9121945 +/- 0.14120288 (1.01%) (init = 13)
        period:  5.48507045 +/- 0.02666492 (0.49%) (init = 2)
        shift:   0.16203677 +/- 0.01405661 (8.67%) (init = 0)
        decay:   0.03264538 +/- 3.8014e-04 (1.16%) (init = 0.02)
    [[Correlations]] (unreported correlations are < 0.100)
        C(period, shift) =  0.797
        C(amp, decay)    =  0.582
        C(amp, shift)    = -0.297
        C(amp, period)   = -0.243
        C(shift, decay)  = -0.182
        C(period, decay) = -0.150





|


.. code-block:: default

    ##
    import warnings
    warnings.filterwarnings("ignore")
    ##
    # <examples/doc_fitting_withreport.py>
    from numpy import exp, linspace, pi, random, sign, sin

    from lmfit import Parameters, fit_report, minimize

    p_true = Parameters()
    p_true.add('amp', value=14.0)
    p_true.add('period', value=5.46)
    p_true.add('shift', value=0.123)
    p_true.add('decay', value=0.032)


    def residual(pars, x, data=None):
        """Model a decaying sine wave and subtract data."""
        vals = pars.valuesdict()
        amp = vals['amp']
        per = vals['period']
        shift = vals['shift']
        decay = vals['decay']

        if abs(shift) > pi/2:
            shift = shift - sign(shift)*pi
        model = amp * sin(shift + x/per) * exp(-x*x*decay*decay)
        if data is None:
            return model
        return model - data


    random.seed(0)
    x = linspace(0.0, 250., 1001)
    noise = random.normal(scale=0.7215, size=x.size)
    data = residual(p_true, x) + noise

    fit_params = Parameters()
    fit_params.add('amp', value=13.0)
    fit_params.add('period', value=2)
    fit_params.add('shift', value=0.0)
    fit_params.add('decay', value=0.02)

    out = minimize(residual, fit_params, args=(x,), kws={'data': data})

    print(fit_report(out))
    # <end examples/doc_fitting_withreport.py>


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** ( 0 minutes  0.094 seconds)


.. _sphx_glr_download_examples_documentation_fitting_withreport.py:


.. only :: html

 .. container:: sphx-glr-footer
    :class: sphx-glr-footer-example



  .. container:: sphx-glr-download

     :download:`Download Python source code: fitting_withreport.py <fitting_withreport.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: fitting_withreport.ipynb <fitting_withreport.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
