archimedes.approximation.MonomialBasis¶
- class archimedes.approximation.MonomialBasis(n_basis: int)¶
Monomial (power series) basis on an interval.
The basis functions are \(\{1, t, t^2, \ldots, t^{n-1}\}\), with reference domain \([-1, 1]\). Other intervals \(x \in [a, b]\) are affinely mapped onto the reference domain.
- Parameters:
n_basis (int) – Number of basis functions. The basis spans polynomials of degree
0throughn_basis - 1.
Warning
Monomial bases are inherently ill-conditioned for high degrees; prefer orthogonal polynomial bases for high-degree polynomial approximation.
See also
OrthogonalPolynomialBasisOrthogonal polynomial families (Legendre, Chebyshev, Jacobi, Hermite, Laguerre); preferred for numerical conditioning and spectral accuracy.
FunctionSpace.monomialConvenience constructor for a
FunctionSpacebuilt on this basis.
Methods
boundary_dofs([order])Indices of the degrees of freedom at the left/right ends of the domain.
evaluate(x[, deriv, side])Evaluate all
n_basisbasis functions atx.Attributes
The target-domain parameters this basis expects.
Whether this basis is orthonormal with respect to a probability measure (unit mass) rather than the raw weight of the associated
Measure.Number of independent variables the basis functions take.
Number of basis functions in this basis.
- __init__(n_basis: int) None¶
- boundary_dofs(order: int = 0) tuple[int | None, int | None]¶
Indices of the degrees of freedom at the left/right ends of the domain.
Can be used for example to set boundary conditions or enforce continuity at the domain endpoints.
- Parameters:
order (int, optional) – Derivative order to look up. Default 0 (the endpoint value).
- Returns:
left, right – Index into this basis’s functions, or
Nonewhere there is no degree of freedom of that order at that end.- Return type:
int or None
Notes
Only meaningful for nodal families (e.g.
LagrangeBasis) with nodes at the endpoints. Modal families (e.g.OrthogonalPolynomialBasis) and nodal bases with interior-only nodes (Gauss-Legendre points, for instance) do not have boundary DOFs.
- evaluate(x, deriv: int = 0, *, side: str = RIGHT, **domain_kwargs)¶
Evaluate all
n_basisbasis functions atx.- Parameters:
x (array_like) – Evaluation points, shape
(npts,).deriv (int, optional) – Order of derivative to evaluate. Default 0.
side ({"right", "left"}, optional) – Which one-sided limit to take where the basis is two-valued. Default
"right". Irrelevant for smooth bases.**domain_kwargs – Target-domain parameters; see the subclass docstring.
- Returns:
phi – Basis values (or
deriv-th derivatives), shape(npts, n_basis).- Return type:
ndarray
- property Parameters: type¶
The target-domain parameters this basis expects.
A
Parameterssubclass (e.g.UnitInterval.Parameters). Returns the type, not an instance.Determines which reference domain the basis is defined on, for example:
UnitIntervalfor \([-1, 1]\).HalfLinefor \([0, \infty)\).RealLinefor \((-\infty, \infty)\).
- density: bool = False¶
Whether this basis is orthonormal with respect to a probability measure (unit mass) rather than the raw weight of the associated
Measure.Only meaningful for orthogonal polynomial families based on a
Measure(in particularOrthogonalPolynomialBasis); other families should leave thisFalse.
- n_basis: int¶
Number of basis functions in this basis.
- ndim: int = 1¶
Number of independent variables the basis functions take.
Typically 1, since most bases are univariate.
TensorBasisis the exception, with one variable per tensored factor.