# Exponential¶

class plasmapy.analysis.fit_functions.Exponential(params: Optional[Tuple[float, ]] = None, param_errors: Optional[Tuple[float, ]] = None)

A sub-class of AbstractFitFunction to represent an exponential with an offset.

\begin{align}\begin{aligned}y &= f(x) = a \, e^{\alpha \, x}\\\left( \frac{\delta y}{|y|} \right)^2 &= \left( \frac{\delta a}{a} \right)^2 + (x \, \delta \alpha)^2 + (\alpha \, \delta x)^2\end{aligned}\end{align}

where $$a$$ and $$\alpha$$ are the real constants to be fitted and $$x$$ is the independent variable. $$\delta a$$, $$\delta \alpha$$, and $$\delta x$$ are the respective uncertainties for $$a$$, $$\alpha$$, and $$x$$.

Parameters

Attributes Summary

 curve_fit_results The results returned by the curve fitting routine used by curve_fit. latex_str LaTeX friendly representation of the fit function. param_errors The associated errors of the fitted params. param_names Names of the fitted parameters. params The fitted parameters for the fit function. rsq Coefficient of determination (r-squared) value of the fit.

Methods Summary

 __call__(x[, x_err, reterr]) Direct call of the fit function $$f(x)$$. curve_fit(xdata, ydata, **kwargs) Use a non-linear least squares method to fit the fit function to (xdata, ydata), using scipy.optimize.curve_fit. func(x, a, alpha) The fit function, a exponential function. func_err(x[, x_err, rety]) Calculate dependent variable uncertainties $$\delta y$$ for dependent variables $$y=f(x)$$. root_solve(*args, **kwargs) The root $$f(x_r) = 0$$ for the fit function.

Attributes Documentation

curve_fit_results

The results returned by the curve fitting routine used by curve_fit. This is typically from scipy.stats.linregress or scipy.optimize.curve_fit.

latex_str
param_errors

The associated errors of the fitted params.

param_names

Names of the fitted parameters.

params

The fitted parameters for the fit function.

rsq

Coefficient of determination (r-squared) value of the fit.

\begin{align}\begin{aligned}r^2 &= 1 - \frac{SS_{res}}{SS_{tot}}\\SS_{res} &= \sum\limits_{i} (y_i - f(x_i))^2\\SS_{tot} &= \sum\limits_{i} (y_i - \bar{y})^2\end{aligned}\end{align}

where $$(x_i, y_i)$$ are the sample data pairs, $$f(x_i)$$ is the fitted dependent variable corresponding to $$x_i$$, and $$\bar{y}$$ is the average of the $$y_i$$ values.

The $$r^2$$ value is an indicator of how close the points $$(x_i, y_i)$$ lie to the model $$f(x)$$. $$r^2$$ values range between 0 and 1. Values close to 0 indicate that the points are uncorrelated and have little tendency to lie close to the model, whereas, values close to 1 indicate a high correlation to the model.

Methods Documentation

__call__(x, x_err=None, reterr=False)

Direct call of the fit function $$f(x)$$.

Parameters
• x (array_like) – Dependent variables.

• x_err (array_like, optional) – Errors associated with the independent variables x. Must be of size one or equal to the size of x.

• reterr (bool, optional) – (Default: False) If True, return an array of uncertainties associated with the calculated independent variables

Returns

curve_fit(xdata, ydata, **kwargs)None

Use a non-linear least squares method to fit the fit function to (xdata, ydata), using scipy.optimize.curve_fit. This will set the attributes parameters, parameters_err, and rsq.

The results of scipy.optimize.curve_fit can be obtained via curve_fit_results.

Parameters
• xdata (array_like) – The independent variable where data is measured. Should be 1D of length M.

• ydata (array_like) – The dependent data associated with xdata.

• **kwargs – Any keywords accepted by scipy.optimize.curve_fit.

Raises
func(x, a, alpha)

The fit function, a exponential function.

$f(x) = a \, e^{\alpha \, x}$

where $$a$$ and $$\alpha$$ are real constants and $$x$$ is the independent variable.

Parameters
• x (array_like) – Independent variable.

• a (float) – value for the exponential “normalization” constant, $$a$$

• alpha (float) – value for the growth constant, $$\alpha$$

Returns

y – dependent variables corresponding to x

Return type

array_like

func_err(x, x_err=None, rety=False)

Calculate dependent variable uncertainties $$\delta y$$ for dependent variables $$y=f(x)$$.

$\left( \frac{\delta y}{|y|} \right)^2 = \left( \frac{\delta a}{a} \right)^2 + (x \, \delta \alpha)^2 + (\alpha \, \delta x)^2$
Parameters
• x (array_like) – Independent variables to be passed to the fit function.

• x_err (array_like, optional) – Errors associated with the independent variables x. Must be of size one or equal to the size of x.

• rety (bool) – Set True to also return the associated dependent variables $$y = f(x)$$.

Returns

• err (numpy.ndarray) – The calculated uncertainties $$\delta y$$ of the dependent variables ($$y = f(x)$$) of the independent variables x.

• y (numpy.ndarray, optional) – (if rety == True) The associated dependent variables $$y = f(x)$$.

Notes

• A good reference for formulating propagation of uncertainty expressions is:

J. R. Taylor. An Introduction to Error Analysis: The Study of Uncertainties in Physical Measurements. University Science Books, second edition, August 1996 (ISBN: 093570275X)

root_solve(*args, **kwargs)

The root $$f(x_r) = 0$$ for the fit function. An exponential has no real roots.

Parameters
Returns

• root (float) – The root value for the given fit parameters.

• err (float) – The uncertainty in the calculated root for the given fit parameters and parameters_err.