jax.scipy.linalg.hessenberg#
- jax.scipy.linalg.hessenberg(a: ArrayLike, *, calc_q: Literal[False], overwrite_a: bool = False, check_finite: bool = True) Array [source]#
- jax.scipy.linalg.hessenberg(a: ArrayLike, *, calc_q: Literal[True], overwrite_a: bool = False, check_finite: bool = True) tuple[Array, Array]
计算矩阵的 Hessenberg 形式
JAX 实现的
scipy.linalg.hessenberg()
。矩阵 A 的 Hessenberg 形式 H 满足
\[A = Q H Q^H\]其中 Q 为酉矩阵,H 在第一条次对角线以下为零。
- 参数:
a – 形状为
(..., N, N)
的数组calc_q – 如果为 True,则计算
Q
矩阵(默认值:False)overwrite_a – JAX 未使用
check_finite – JAX 未使用
- 返回值:
如果
calc_q
为 True,则返回一个数组元组(H, Q)
,否则返回一个数组H
H
的形状为(..., N, N)
,是a
的 Hessenberg 形式Q
的形状为(..., N, N)
,是相关的酉矩阵
示例
计算一个 4x4 矩阵的 Hessenberg 形式
>>> a = jnp.array([[1., 2., 3., 4.], ... [1., 4., 2., 3.], ... [3., 2., 1., 4.], ... [2., 3., 2., 2.]]) >>> H, Q = jax.scipy.linalg.hessenberg(a, calc_q=True) >>> with jnp.printoptions(suppress=True, precision=3): ... print(H) [[ 1. -5.078 1.167 1.361] [-3.742 5.786 -3.613 -1.825] [ 0. -2.992 2.493 -0.577] [ 0. 0. -0.043 -1.279]]
注意次对角线位置上的零。可以使用
Q
向量重建原始矩阵>>> a_reconstructed = Q @ H @ Q.conj().T >>> jnp.allclose(a_reconstructed, a) Array(True, dtype=bool)