jax.scipy.linalg.rsf2csf#
- jax.scipy.linalg.rsf2csf(T, Z, check_finite=True)[源代码][源代码]#
将实数Schur形式转换为复数Schur形式。
JAX 实现的
scipy.linalg.rsf2csf()。- 参数:
T (ArrayLike) – 形状为
(..., N, N)的数组,包含输入的实 Schur 形式。Z (ArrayLike) – 形状为
(..., N, N)的数组,包含相应的 Schur 变换矩阵。check_finite (bool) – JAX 未使用
- 返回:
包含与输入形状相同的数组
(T, Z)的元组,包含复数Schur形式及其相关的Schur变换矩阵。- 返回类型:
参见
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]]