schur#
- class brainunit.lax.schur(x, compute_schur_vectors=True, sort_eig_vals=False, select_callable=None)#
Schur decomposition.
Compute the Schur decomposition \(A = Q \cdot T \cdot Q^H\) where \(T\) is upper-triangular (quasi-triangular for real matrices) and \(Q\) is unitary.
- Parameters:
x (saiunit.Quantity |
Array|ndarray|number|bool) – A batch of square matrices with shape[..., n, n].compute_schur_vectors (
bool) – IfTrue, compute the Schur vectorsQ. Default isTrue.sort_eig_vals (
bool) – IfTrue, sort eigenvalues. Default isFalse.select_callable (
Callable[...,Any] |None) – A function used to select eigenvalues for reordering. Default isNone.
- Return type:
tuple[saiunit.Quantity |Array,Array] |list[Array] |tuple[saiunit.Quantity |Array]- Returns:
t (Array or Quantity) – The Schur form. If
xhas a unit,tpreserves that unit.q (Array) – The Schur vectors (unitless). Only returned when
compute_schur_vectorsisTrue.
Examples
>>> import jax.numpy as jnp >>> import saiunit as u >>> import saiunit.lax as sulax >>> A = jnp.array([[1.0, 2.0], [3.0, 4.0]]) * u.second >>> t, q = sulax.schur(A) >>> u.get_unit(t) == u.second True