Source code for smpl.functions.functions

import numpy as np
import uncertainties.unumpy as unp
import scipy

from smpl import doc

[docs]@doc.append_plot() @doc.insert_str("Fac(x)") def fac(n): return scipy.special.gamma(n+1)
# general fit functions
[docs]@doc.append_plot(4) @doc.insert_str("const(x) = $m$") def const(x, m): # To get the right dimension return x-x + m
[docs]@doc.append_plot(2) @doc.insert_latex_eq() def linear(x, m): # lineare Funktion mit f(x) = m * x return(m*x)
[docs]@doc.append_plot(2, -1) @doc.insert_latex_eq() def line(x, a, b): # gerade mit = f(x) = m * x + b return (a*x + b)
# Gerade=line # Line=line
[docs]@doc.append_plot(3, 0.02, 3) @doc.insert_latex_eq() def cos_abs(x, a, f, phi): return a * np.abs(unp.cos(2*np.pi*f*(x-phi)))
[docs]@doc.append_plot(3, 0.02, 3) @doc.insert_latex_eq() def cos(x, a, f, phi): return a * unp.cos(2*np.pi*f*(x-phi))
[docs]@doc.append_plot(3, 0.02, 3) @doc.insert_latex_eq() def sin(x, a, f, phi): return a * unp.sin(2*np.pi*f*(x-phi))
[docs]@doc.append_plot(3, 0.02, 3) @doc.insert_latex_eq() def tan(x, a, f, phi): return a * unp.tan(2*np.pi*f*(x-phi))
[docs]@doc.append_plot(0, 5, 3, 0) @doc.insert_latex_eq() def lorentz(x, x_0, a, d, y): return a/(np.pi*d*(1+(x-x_0)**2/d**2)) + y
# Lorentz=lorentz
[docs]@doc.append_plot(0, 5, 3, 0) @doc.insert_latex_eq() def gauss(x, x_0, a, d, y): return a * unp.exp(-(x - x_0)**2 / 2 / d**2) + y
Gauss = gauss @doc.append_plot(0.5, 4) @doc.insert_latex_eq() def exponential(x, c, y_0): return unp.exp(c * x) * y_0 exp = exponential
[docs]@doc.append_plot(0.5, 4, xmin=0.1) @doc.insert_latex_eq() def log(x, c, y_0): return unp.log(c * x) * y_0
[docs]@doc.append_plot(1, 5, 0) @doc.insert_latex_eq() def square(x, x_0, a, y): return a*(x-x_0)**2+y
[docs]@doc.append_plot(1, 5, 0, -2) @doc.insert_latex_eq() def cube(x, a, b, c, d): return a*x**3+b*x**2+c*x+d
@doc.append_plot(1, 3.3, 0) @doc.insert_latex_eq() def order(x, a, k, y): return a*(x)**k+y
[docs]@doc.append_plot(1, 3.3, 0, xmin=0) @doc.insert_latex_eq() def sqrt(x, a, b, c): return a*unp.sqrt(x+b)+c