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)