I am happy to announce PolyChaos.jl
, a collection of functions for orthogonal polynomials, quadrature rules, and polynomial chaos expansions.
What’s the idea?
Let’s say you have some non-negative function w: \Omega \longrightarrow \mathbb{R} and you would like to find the polynomals that are orthogonal relative to w. That’s the core functionality of PolyChaos.jl
.
Why is that useful? Once you know the orthogonal polynomials, you can compute quadrature rules such aus Gauss, Gauss-Radau, Gauss-Lobatto. These quadrature rules allow you to solve integrals
The numbers (\omega_i, \tau_i) for i = 1, \dots, N are the quadrature rule that PolyChaos.jl
computes.
Finally, orthgonal polynomials are intricately linked to random variables. For example, Hermite polynomials (more specifically, probabilists’ Hermite polynomials) happen to be the orthogonal polynomials relative to the probability distribution of a standard Gaussian random variable, the well-known density w(x) = \exp(-x^2/2)/\sqrt{2 \pi}. The mathematical method that investigates the relation between orthogonal polynomials and random variables is called polynomial chaos expansion, dating back to the infamous Norbert Wiener. Polynomial chaos is to random variables what Fourier series is to periodic signals – it allows you to represent some complicated mathematical object by a few deterministic numbers. Too abstract? Think of a Gaussian random variable – everything you need to know about it are its mean and variance. PolyChaos.jl
let’s you compute polynomial chaos expansions of random variables.
I am fully aware that there are several great packages for quadrature out there such as QuadGK
, FastGaussQuadrature.jl
or ApproxFun.jl
. As I see it, PolyChaos.jl
is a complement, and by no means a replacement for those excellent packages. If you are interested in how these quadrature rules come about, then perhaps PolyChaos.jl
can provide insight(s).
The idea for the package was born out of the need to have a Julia package for polynomial chaos expansions (there was also a poster at JuliaCon 2018). There is still a lot that can be added (and I will create issues for that) so any form of contribution is welcome!
This being my first software project I am sure there will be unexpected stuff to happen. Regardless, it has been a great experience so far and I am actively using the package for my research. Let’s see what happens!