## SciPy – 13 – integrazione – 3 Luciana Myriam Nicolosi

Continuo da qui, copio qui.

A few functions are also provided in order to perform simple Gaussian `quadrature` over a fixed interval. The first is `fixed_quad` which performs fixed-order Gaussian quadrature. The second function is quadrature which performs Gaussian quadrature of multiple orders until the difference in the integral estimate is beneath some tolerance supplied by the user. These functions both use the module `special.orthogonal` which can calculate the roots and quadrature weights of a large variety of orthogonal polynomials (the polynomials themselves are available as special functions returning instances of the polynomial class —e.g. `special.legendre`).

Metodo di Romberg
Romberg’s method is another method for numerically evaluating an integral. See the help function for `romberg` for further details.

Integrazione a campioni
If the samples are equally-spaced and the number of samples available is `2k+1` for some integer `k`, then Romberg `romb` integration can be used to obtain high-precision estimates of the integral using the available samples. Romberg integration uses the trapezoid rule at step-sizes related by a power of two and then performs Richardson extrapolation on these estimates to approximate the integral with a higher-degree of accuracy.

In case of arbitrary spaced samples, the two functions `trapz` (defined in `numpy`) and `simps` are available. They are using Newton-Coates formulas of order 1 and 2 respectively to perform integration. The trapezoidal rule approximates the function as a straight line between adjacent points, while Simpson’s rule approximates the function between three adjacent points as a parabola.

For an odd number of samples that are equally spaced Simpson’s rule is exact if the function is a polynomial of order 3 or less. If the samples are not equally spaced, then the result is exact only if the function is a polynomial of order 2 or less. This corresponds exactly to whereas integrating the second function does not correspond to because the order of the polynomial in `f2` is larger than two.

Integrazione rapida usando funzioni callback di basso livello
A user desiring reduced integration times may pass a C function pointer through `scipy.LowLevelCallable` to `quad`, `dblquad`, `tplquad` or `nquad` and it will be integrated and return a result in Python. The performance increase here arises from two factors. The primary improvement is faster function evaluation, which is provided by compilation of the function itself. Additionally we have a speedup provided by the removal of function calls between C and Python in `quad`. This method may provide a speed improvements of ~2x for trivial functions such as sine but can produce a much more noticeable improvements (10x+) for more complex functions. This feature then, is geared towards a user with numerically intensive integrations willing to write a little C to reduce computation time significantly.

Siccome entra in gioco `Cython` salto; ho problemi di settaggio, da risolvere solo se fosse davvero da usarsi. Posta un commento o usa questo indirizzo per il trackback.