
Lower end of the spectral interval of a rational approximation
Source:R/rational_wl2.R
rspde.xmin.RdComputes the value \(x_{\min} = 1/(1 + \mu_{\max}/\kappa_{\mathrm{lo}}^2)\) used by the weighted-L2 rational coefficients, where \(\mu_{\max}\) is the largest generalised eigenvalue of \((G, C)\) and \(\kappa_{\mathrm{lo}}\) is a lower bound for the values that \(\kappa\) can take.
Usage
rspde.xmin(
C = NULL,
G = NULL,
mesh = NULL,
kappa_ref = NULL,
nu = NULL,
diameter = NULL,
loc_mesh = NULL,
eigenvalue = c("bound", "exact")
)Arguments
- C
The mass matrix of the finite element discretisation.
- G
The stiffness matrix of the finite element discretisation.
- mesh
An optional mesh;
CandGare computed from it if they are not given, and it is used for the diameter of the domain.- kappa_ref
The reference value \(\kappa_{\mathrm{lo}}\). If
NULL, it is taken to besqrt(8 * nu) / diameter.- nu
The smoothness parameter, used for the default
kappa_ref.- diameter
The diameter of the domain, used for the default
kappa_ref. Computed frommeshif not given.- loc_mesh
Mesh locations, an alternative to
meshfor the diameter.- eigenvalue
Either
"bound"(the default), which uses the Gershgorin boundmax(rowSums(abs(G)) / diag(C))for \(\mu_{\max}\), or"exact", which computes the eigenvalue by Lanczos iteration. The bound is an over-estimate of \(\mu_{\max}\), and therefore gives a conservative (too small) \(x_{\min}\), which is the safe direction.
Details
The reference \(\kappa_{\mathrm{lo}}\) must be a lower bound: a reference above the true \(\kappa\) leaves part of the spectrum outside the fitted interval, and the error then grows by one to two orders of magnitude. A reference below the true \(\kappa\) is safe; the approximation then degrades gracefully towards the mesh-free fit. The default, \(\kappa_{\mathrm{lo}} = \sqrt{8\nu}/\mathrm{diam}\), corresponds to a range equal to the diameter of the domain.
Examples
x <- seq(from = 0, to = 1, length.out = 201)
fem <- rSPDE.fem1d(x)
# reference kappa corresponding to a range equal to the domain diameter
rspde.xmin(C = fem$C, G = fem$G, loc_mesh = x, nu = 0.5)
#> [1] 2.499938e-05
# a user-supplied lower bound for kappa
rspde.xmin(C = fem$C, G = fem$G, kappa_ref = 10)
#> [1] 0.0006246096