jax.scipy.linalg.rsf2csf#

jax.scipy.linalg.rsf2csf(T, Z, check_finite=True)[原始碼]#

將實數 Schur 形式轉換為複數 Schur 形式。

scipy.linalg.rsf2csf() 的 JAX 實作。

參數:
  • T (ArrayLike) – 形狀為 (..., N, N) 的陣列,包含輸入的實數 Schur 形式。

  • Z (ArrayLike) – 形狀為 (..., N, N) 的陣列,包含對應的 Schur 轉換矩陣。

  • check_finite (bool) – JAX 未使用

回傳值:

陣列元組 (T, Z),形狀與輸入相同,包含複數 Schur 形式和相關聯的 Schur 轉換矩陣。

回傳型別:

tuple[Array, Array]

另請參閱

jax.scipy.linalg.schur():Schur 分解

範例

>>> A = jnp.array([[0., 3., 3.],
...                [0., 1., 2.],
...                [2., 0., 1.]])
>>> Tr, Zr = jax.scipy.linalg.schur(A)
>>> Tc, Zc = jax.scipy.linalg.rsf2csf(Tr, Zr)

實數和複數形式都可用於將輸入矩陣重建為 float32 精度

>>> jnp.allclose(Zr @ Tr @ Zr.T, A, atol=1E-5)
Array(True, dtype=bool)
>>> jnp.allclose(Zc @ Tc @ Zc.conj().T, A, atol=1E-5)
Array(True, dtype=bool)

實數值的 Schur 形式僅為準上三角矩陣,如此例所示

>>> with jax.numpy.printoptions(precision=2, suppress=True):
...   print(Tr)
[[ 3.76 -2.17  1.38]
 [ 0.   -0.88 -0.35]
 [ 0.    2.37 -0.88]]

相比之下,複數形式是真正的上三角矩陣

>>> with jnp.printoptions(precision=2, suppress=True):
...   print(Tc)
[[ 3.76+0.j    1.29-0.78j  2.02-0.5j ]
 [ 0.  +0.j   -0.88+0.91j -2.02+0.j  ]
 [ 0.  +0.j    0.  +0.j   -0.88-0.91j]]