FiniteElementBasis#
- class skfda.representation.basis.FiniteElementBasis(vertices, cells, domain_range=None)[source]#
Finite element basis.
Given a n-dimensional grid made of simplices, each element of the basis is a piecewise linear function that takes the value 1 at exactly one vertex and 0 in the other vertices.
- Parameters:
vertices (_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – The vertices of the grid.
cells (_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – A list of individual cells, consisting in the indexes of \(n+1\) vertices for an n-dimensional domain space.
domain_range (Tuple[Tuple[float, float], ...] | Sequence[float] | Sequence[Sequence[float]] | None) –
Examples
>>> from skfda.representation.basis import FiniteElementBasis >>> basis = FiniteElementBasis( ... vertices=[[0, 0], [0, 1], [1, 0], [1, 1]], ... cells=[[0, 1, 2], [1, 2, 3]], ... domain_range=[(0, 1), (0, 1)], ... )
Evaluates all the functions in the basis in a list of discrete values.
>>> basis([[0.1, 0.1], [0.6, 0.6], [0.1, 0.2], [0.8, 0.9]]) array([[[ 0.8], [ 0. ], [ 0.7], [ 0. ]], [[ 0.1], [ 0.4], [ 0.2], [ 0.2]], [[ 0.1], [ 0.4], [ 0.1], [ 0.1]], [[ 0. ], [ 0.2], [ 0. ], [ 0.7]]])
>>> from scipy.spatial import Delaunay >>> import numpy as np >>> >>> n_points = 10 >>> points = np.random.uniform(size=(n_points, 2)) >>> delaunay = Delaunay(points) >>> basis = FiniteElementBasis( ... vertices=delaunay.points, ... cells=delaunay.simplices, ... ) >>> basis.n_basis 10
Methods
coordinate_basis_and_coefs
(coefs, key)Return a fdatabasis for the coordinate functions indexed by key.
copy
([domain_range])Basis copy.
derivative
(*[, order])Construct a FDataBasis object containing the derivative.
derivative_basis_and_coefs
(coefs[, order])Return basis and coefficients of the derivative.
evaluate
(eval_points, *[, derivative])Evaluate Basis objects and its derivatives.
Return the Gram Matrix of a basis.
inner_product_matrix
([other])Return the Inner Product Matrix of a pair of basis.
Return wether the domain range has been set explicitly.
plot
(*args, **kwargs)Plot the basis object or its derivatives.
rescale
([domain_range])Return a copy of the basis with a new domain range.
to_basis
()Convert the Basis to FDatabasis.
- coordinate_basis_and_coefs(coefs, key)[source]#
Return a fdatabasis for the coordinate functions indexed by key.
- copy(domain_range=None)[source]#
Basis copy.
- Parameters:
self (T) –
domain_range (DomainRangeLike | None) –
- Return type:
T
- derivative(*, order=1)[source]#
Construct a FDataBasis object containing the derivative.
- Parameters:
order (int) – Order of the derivative. Defaults to 1.
- Returns:
Derivative object.
- Return type:
- derivative_basis_and_coefs(coefs, order=1)[source]#
Return basis and coefficients of the derivative.
- evaluate(eval_points, *, derivative=0)[source]#
Evaluate Basis objects and its derivatives.
Evaluates the basis functions at a list of given values.
Deprecated since version 0.8: Use normal calling notation instead.
- Parameters:
eval_points (ArrayLike) – List of points where the basis is evaluated.
derivative (int) –
order of the derivative.
Deprecated since version 0.4: Use derivative method instead.
- Returns:
Matrix whose rows are the values of the each basis function or its derivatives at the values specified in eval_points.
- Return type:
- gram_matrix()[source]#
Return the Gram Matrix of a basis.
The Gram Matrix is defined as
\[G_{ij} = \langle\phi_i, \phi_j\rangle\]where \(\phi_i\) is the ith element of the basis. This is a symmetric matrix and positive-semidefinite.
- inner_product_matrix(other=None)[source]#
Return the Inner Product Matrix of a pair of basis.
The Inner Product Matrix is defined as
\[I_{ij} = \langle\phi_i, \theta_j\rangle\]where \(\phi_i\) is the ith element of the basis and \(\theta_j\) is the jth element of the second basis. This matrix helps on the calculation of the inner product between objects on two basis and for the change of basis.
- Parameters:
other (Basis | None) – Basis to compute the inner product matrix. If not basis is given, it computes the matrix with itself returning the Gram Matrix
- Returns:
Inner Product Matrix of two basis
- Return type:
NDArrayFloat
- is_domain_range_fixed()[source]#
Return wether the domain range has been set explicitly.
This is useful when using a basis for converting a dataset, since if this is not explicitly assigned it can be changed to the domain of the data.
- Returns:
True if the domain range has been fixed. False otherwise.
- Return type:
- rescale(domain_range=None)[source]#
Return a copy of the basis with a new domain range.
- Parameters:
domain_range (DomainRangeLike | None) – Definition of the interval where the basis defines a space. Defaults uses the same as the original basis.
self (T) –
- Returns:
Rescaled copy.
- Return type:
T