StrctTerm.diagonalize_penalty()

StrctTerm.diagonalize_penalty()#

StrctTerm.diagonalize_penalty(atol=1e-06)[source]#

Diagonalize the penalty via an eigenvalue decomposition.

This method computes a transformation that diagonalizes the penalty matrix and updates the internal basis function such that subsequent evaluations use the accordingly transformed basis. The penalty is updated to the diagonalized version.

Return type:

Self

Returns:

The modified term instance (self).

See also

Basis.diagonalize_penalty

The term calls this method internally. More details are documented there.

Examples

>>> x = jnp.linspace(0.0, 1.0, 4)
>>> basis = Basis(
...     jnp.column_stack([jnp.ones_like(x), x]),
...     xname="x",
...     penalty=jnp.eye(2),
... )
>>> term = StrctTerm.f(basis, scale=1.0).diagonalize_penalty()
>>> bool(is_diagonal(term.basis.penalty.value))
True