latqcdtools.math.num_int
=============

`integrateData(xdata, ydata, method='trapezoid')`
 
    Wrapper to integrate data. 

    Args:
        xdata (array-like)
        ydata (array-like)
        method (str, optional): Integration method. Defaults to 'trapezoid'. Possibilities include:
                                > 'simpson' : Simpson rule.
                                > 'trapezoid' : Trapezoidal rule.

    Returns:
        float: Area under ydata. 
    
`integrateFunction(func, a, b, method='persistent', args=(), stepsize=None, limit=1000, epsrel=1.49e-08, epsabs=1.49e-08)`
 
    Wrapper to integrate functions. Allows to conveniently adjust the stepsize, and can vectorize scipy.quad, 
    which otherwise does not like to handle numpy arrays.

    Args:
        func (func): Integrand. 
        a (float): Lower integration limit.
        b (float): Upper integration limit.
        method (str,optional): Integration method. Defaults to 'persistent_quad_trap'. Possibilities are:
                                > 'persistent' : Try various methods until something works. 
                                > 'quad' : Gaussian quadrature.
                                > 'trapezoid' : Trapezoidal rule.
        args (tuple, optional): Arguments to func. Defaults to ().
        stepsize (float, optional): _description_. Defaults to None.
        limit (int, optional): Upper bound on number of subintervals used in the adaptive algorithm. Defaults to 1000.
        epsrel (float, optional): Relative error tolerance. Defaults to 1.49e-8.
        epsabs (float, optional): Absolute error tolerance. Defaults to 1.49e-8.

    Returns:
        float: Integral of func from a to b. 
    
`solveIVP(dydt, t0, tf, y0, method='RK45', args=(), epsrel=1.49e-08, epsabs=1.49e-08) -> numpy.ndarray`
 
    Wrapper to solve an initial value problem of the form

    dy/dt = dydt(t, y)
    y(t0) = y0

    Args:
        dydt (func): RHS of IVP. Must have signature dydt(t,y).
        t0 (float): initial time 
        tf (float): final time 
        y0 (array-like): y(t0)
        method (str, optional): Integration method. Defaults to 'RK45'.
        args (tuple, optional): Arguments to dydt. Defaults to ().
        epsrel (float, optional): Relative error tolerance. Defaults to 1.49e-8.
        epsabs (float, optional): Absolute error tolerance. Defaults to 1.49e-8.

    Returns:
        array-like: y(tf)