jax.scipy.linalg.hessenberg#
- jax.scipy.linalg.hessenberg(a: ArrayLike, *, calc_q: Literal[False], overwrite_a: bool = False, check_finite: bool = True) Array [原始碼]#
- 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)