Rational functions
hpq-FEM: approximate functions using a mesh (h) of rational functions of numerator degree p and denominator degree q.
$$ p(x) = \frac{a_0 + a_1 x + a_2 x^2 \cdots a_p x^p}{1 + b_1 x + b_2 x^2 \cdots b_q x^q} $$
The main goal is to reduce the number of degrees-of-freedom in the problem while still approximating the solution within the error tolerance.
Evaluating Polynomials
Two methods are optimal.
Langrange
$$ p(x) = \left(\prod_i (x - x_i)\right) \sum_i \frac{w_j }{(x - x_i)} f(x_i) $$
with
$$ w_j = \frac{1}{\prod_{1\neq j} x_j - x_i} $$
Barycentric
$$ p(x) = \frac {\sum_i \frac{w_j }{x - x_i} f(x_i)} {\sum_i \frac{w_j }{x - x_i}} $$
with the same weigths $w_i$.
The barycentric one becomes unstable when $x$ deviates to much from $x_i$. The Langrange version does not suffer from this instability.
Rational functions can be evaluated using two Langrange evaluations, dividing both results in the end.
Solving
We want to approximate $f(x)$ with $p(x)$. We do this by equating the values on a set of points $x_i$. Take $y_i = f(x_i)$ and set $p(x_i) = y_i$.
$$ \frac{a_0 + a_1 x_i + a_2 x_i^2 \cdots a_p x_i^p}{ 1 + b_1 x_i + b_2 x_i^2 \cdots b_q x_i^q} = y_i $$
$$ a_0 + a_1 x_i + a_2 x_i^2 \cdots a_p x_i^p = y_i (1 + b_1 x_i + b_2 x_i^2 \cdots b_q x_i^q) $$
$$ a_0 + a_1 x_i + a_2 x_i^2 \cdots a_p x_i^p = y_i + b_1 y_ix_i + b_2 y_ix_i^2 \cdots b_q y_i x_i^q $$
$$ a_0 + a_1 x_i + a_2 x_i^2 \cdots a_p x_i^p
- b_1 y_i x_i - b_2 y_ix_i^2 \cdots b_q y_i x_i^q = y_i $$
or equivalently
$$ a_0 + a_1 x_i + a_2 x_i^2 \cdots a_p x_i^p - b_1 y_i x_i - b_2 y_i x_i^2 \cdots b_q y_i x_i^q) = y_i $$
This can be solved using the system
$$ \begin{bmatrix} 1 & x_0 & x_0^2 & \cdots &x_0^p & -y_0 x_0 & -y_0 x_0^2 & \cdots & -y_0 x_0^q \\ \vdots & \vdots &\vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & x_n & x_n^2 & \cdots &x_n^p & -y_n x_n & -y_n x_n^2 & \cdots & -y_n x_n^q \\ \end{bmatrix} \begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_p \\ b_1 \\ \vdots \\ b_q \end{bmatrix} = \begin{bmatrix} y_0 \\ y_1 \\ \vdots \\ y_n \\ \end{bmatrix} $$
where $n = p + q + 1$.
Method from Numerical Recipes
$$ y_i = y_i + e \frac{e_i}{|e_i|} $$
$$ \begin{bmatrix} 1 & x_0 & x_0^2 & \cdots & x_0^p & -y_0' x_0 & -y_0' x_0^2 & \cdots & -y_0' x_0^q \\ \vdots & \vdots &\vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & x_n & x_n^2 & \cdots &x_n^p & -y_n x_n & -y_n x_n^2 & \cdots & -y_n x_n^q \\ \end{bmatrix} \begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_p \\ b_1 \\ \vdots \\ b_q \end{bmatrix} = \begin{bmatrix} y_0' \\ y_1 \\ \vdots \\ y_n \\ \end{bmatrix} $$
Degrees of freedom
The degrees of freedom of an element is
$$ p + q + 1 $$
Adaptive improvement
Increase $p$
Increase $q$
Subdivide
An element $(p,q)$ can subdivided in two elements of degree $(p_a, q_a)$ and $(p_b, q_b)$ if we allow the total degrees of freedom to increase by one, we are constraint by
$$ p_a + q_a + p_b + q_b = p + q $$
The number of subdivision options is equal to the number of ways $p+q$ can be distributed into four bins. This is the stars-and-bars problem with solution:
$$ \binom{p + q + 3}{p + q} $$
Benchmark problem
$$ \begin{aligned} u(0) &= γ_0 \\ u(1) &= γ_1 \\ -u'' &= f \end{aligned} $$
with $γ_0$, $γ_1$ and $f$ such that exact solution is
$$ u(x) = \mathrm{atan} \left(60\left(x - \frac{\pi}{3}\right) \right) $$
References
-
x-FEM: Using discontinuous elements to model discontinuities on a fixed mesh. https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwi6h_GWusDfAhU2FjQIHU5-CZUQFjABegQIAhAC&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.332.6687%26rep%3Drep1%26type%3Dpdf&usg=AOvVaw10mBHu6KIcshB_aaZkv7xG
-
hp-adaptive FEM. https://www.researchgate.net/profile/Leszek_Demkowicz/publication/257821115_A_Fully_Automatic_hp-Adaptivity/links/595c43a8aca272f3c0889aa7/A-Fully-Automatic-hp-Adaptivity.pdf?origin=publication_detail
-
Rational approximation. https://arxiv.org/pdf/math/0101042.pdf
-
Numerical Recipes 3rd edition page 248.
-
Comentary on the numerical recipes algorithm. https://chasethedevil.github.io/post/rational_fit/
-
Alternative design matrix. https://math.stackexchange.com/questions/924482/least-squares-regression-matrix-for-rational-functions
-
The remez / minimax implementation in Chebfun appears to be the state of the art for rational approximation. https://people.maths.ox.ac.uk/trefethen/remezR2_arxiv.pdf http://www.chebfun.org/ http://www.chebfun.org/docs/guide/guide04.html http://www.chebfun.org/examples/approx/RationalAbsx.html https://github.com/chebfun/chebfun/blob/master/minimax.m https://jncf2018.lip6.fr/files/slides/filip.pdf
-
https://people.maths.ox.ac.uk/trefethen/barycentric.pdf
-
https://people.maths.ox.ac.uk/trefethen/publication/PDF/2011_138.pdf
-
AAA algorithm. https://arxiv.org/abs/1612.00337 http://guettel.com/rktoolbox/examples/html/example_aaa.html http://www.chebfun.org/examples/approx/AAAApprox.html https://jncf2018.lip6.fr/files/slides/filip.pdf https://people.maths.ox.ac.uk/trefethen/AAAfinal.pdf
-
AAA-Lawson. https://arxiv.org/pdf/1705.10132.pdf
-
History of rational approximation and Floater-Hormann. http://www.alglib.net/interpolation/rational.php https://cs.fit.edu/~dmitra/SciComp/13Spr/MikeChirstian-NRPresentation.pdf
https://github.com/chebfun/chebfun/blob/a26ae3cab130646c05fca428c1cbdfdd95208a49/minimax.m
- Optimiality of Barycentric evaluation. https://www.researchgate.net/profile/Richard_Baltensperger/publication/226684962_Recent_Developments_in_Barycentric_Rational_Interpolation/links/00b4951518a41531de000000.pdf http://eprints.maths.ox.ac.uk/1400/1/NA-11-11.pdf http://faculty.cs.tamu.edu/schaefer/research/pyramid.pdf