archimedes.approximation.Basis¶
- class archimedes.approximation.Basis¶
A finite-dimensional family of basis functions \(\{\phi_i\}_{i=1}^n\).
Basisonly defines the basis functions and evaluates them, without any notion of a target domain or coefficient vector.FunctionSpacecombines aBasiswith a domain and quadrature rule to define an inner product space, andFunctionfurther combines aFunctionSpacewith expansion coefficients.Available implementations include:
BSplineBasis: B-spline basis functionsConcatBasis: Concatenation of multiple basesConstrainedBasis: Constrained linear combination of another basisCubicHermiteBasis: Cubic Hermite basis functionsFourierBasis: Trigonometric basis functions on a periodic intervalLagrangeBasis: Lagrange polynomial basis functionsMonomialBasis: Monomial (power series) basis functionsOrthogonalPolynomialBasis: Classical orthogonal polynomial basesPiecewiseBasis: Basis constructed by tiling multiple local basesTensorBasis: Multi-dimensional basis formed by a tensor product
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__()¶
- 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.
- abstractmethod evaluate(
- x: ndarray,
- 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
- abstract property Parameters: type[ReferenceDomain.Parameters]¶
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.