# Which is best package for integration(and differentiation)?

**URL:** https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461
**Category:** Numerics
**Tags:** question
**Created:** [January 30, 2022, 10:06am UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461 "2022-01-30T10:06:52Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)
#### Post date: [January 30, 2022, 10:06am UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/1 "2022-01-30T10:06:52Z")

</div>

I’m new in Julia and have no idea of which are good packages for integration. I have checked juliapackages and observer, but everything is explained on a math level far above mine.  
Thank you for your advice.

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [January 30, 2022, 10:27am UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/2 "2022-01-30T10:27:49Z")

</div>

Quadrature.jl is a wrapper to all of the packages, so that should make it easy to play with them.

[https://github.com/SciML/Quadrature.jl](https://github.com/SciML/Quadrature.jl)

It also has some niceties like automatic differentiation overloads.

---

<div class="post-metadata">

### Author: ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)
#### Post date: [January 30, 2022, 10:54am UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/3 "2022-01-30T10:54:44Z")

</div>

Thank you.  
One question if you don’t mind, Could you explain what is quadrature method?  
From what I have seen it’s one of the methods of numerical integration.

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [January 30, 2022, 11:24am UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/4 "2022-01-30T11:24:49Z")

</div>

Quadrature is just the name for numerical integration methods.

---

<div class="post-metadata">

### Author: ![ctkelley](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctkelley/32/10684_2.png) [@ctkelley](https://discourse.julialang.org/u/ctkelley)
#### Post date: [January 30, 2022, 12:50pm UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/5 "2022-01-30T12:50:45Z")

</div>

I’ve been happy with

[https://github.com/JuliaApproximation/FastGaussQuadrature.jl](https://github.com/JuliaApproximation/FastGaussQuadrature.jl)

It is, as the name of the package indicates, specialized. Gaussian quadratures is, IMHO, the best choice for general integration over intervals. If you want to integrate over sets in higher dimension or need Monte Carlo integration, best to look elsewhere.

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [January 30, 2022, 1:42pm UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/6 "2022-01-30T13:42:37Z")

</div>

> [@ctkelley](#):
>
> Gaussian quadratures is, IMHO, the best choice for general integration over intervals.

Two problems: (1) in general you know your error tolerance, but not the corresponding order of the quadrature scheme, and (2) in general your integrand might have some localized bad behavior (e.g. a sharp peak or an endpoint singularity). These issues make adaptive quadrature (e.g. [QuadGK.jl](https://github.com/JuliaMath/QuadGK.jl)) a better default choice in my opinion than a fixed-order Gaussian quadrature rule.

Specialized Gaussian-quadrature schemes are fantastic when you know more about your integrand, however, especially if you are integrating many similar functions. Especially if your integrands have a _known_ bad behavior that you can [factor out with a custom weight function](https://arxiv.org/abs/1912.06870).

> [@matic\_lauko](#):
>
> Could you explain what is quadrature method?

Historically, “quadrature” was just a synonym for “integration”. Nowadays, it is used almost exclusively in the context of numerical integration, where a “quadrature method” refers to an algorithm for numerical integration — a “quadrature rule” refers to a specific approximation of an integral by a sum (a set of “quadrature points” where you evaluate the integrand and “quadrature weights” by which you multiply each integrand value in the sum).

---

<div class="post-metadata">

### Author: ![blackeneth](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blackeneth/32/10353_2.png) [@blackeneth](https://discourse.julialang.org/u/blackeneth)
#### Post date: [January 30, 2022, 11:44pm UTC](https://discourse.julialang.org/t/which-is-best-package-for-integration-and-differentiation/75461/7 "2022-01-30T23:44:46Z")

</div>

If integrating smooth, well behaved and friendly functions in one dimension, the goto is QuadGK.jl .
