jax.scipy.linalg.schur#
- jax.scipy.linalg.schur(a, output='real')[源代码]#
计算 Schur 分解
scipy.linalg.schur()
的 JAX 实现。矩阵 A 的 Schur 形式 T 满足
\[A = Z T Z^H\]其中 Z 是酉矩阵,T 对于复值 Schur 分解是上三角矩阵(即
output="complex"
),对于实值 Schur 分解是拟上三角矩阵(即output="real"
)。在拟三角情况下,对角线可能包含与 A 的复值特征值对相关的 2x2 块。- 参数:
a (ArrayLike) – 形状为
(..., N, N)
的输入数组output (str) – 指定是计算
"real"
(默认) 还是"complex"
Schur 分解。
- 返回:
数组元组
(T, Z)
T
是一个形状为(..., N, N)
的数组,包含输入的上三角 Schur 形式。Z
是一个形状为(..., N, N)
的数组,包含酉 Schur 变换矩阵。
- 返回类型:
另请参阅
jax.scipy.linalg.rsf2csf()
:将实 Schur 形式转换为复 Schur 形式。jax.lax.linalg.schur()
:Schur 分解的 XLA 风格 API。
示例
一个 3x3 矩阵的 Schur 分解
>>> a = jnp.array([[1., 2., 3.], ... [1., 4., 2.], ... [3., 2., 1.]]) >>> T, Z = jax.scipy.linalg.schur(a)
Schur 形式
T
通常是拟上三角的,但在这种情况下是真正的上三角,因为输入矩阵是对称的>>> T Array([[-2.0000005 , 0.5066295 , -0.43360388], [ 0. , 1.5505103 , 0.74519426], [ 0. , 0. , 6.449491 ]], dtype=float32)
变换矩阵
Z
是酉矩阵>>> jnp.allclose(Z.T @ Z, jnp.eye(3), atol=1E-5) Array(True, dtype=bool)
输入可以从输出中重建
>>> jnp.allclose(Z @ T @ Z.T, a) Array(True, dtype=bool)