本文简要介绍 python 语言中 scipy.linalg.cossin 的用法。
用法:
scipy.linalg.cossin(X, p=None, q=None, separate=False, swap_sign=False, compute_u=True, compute_vh=True)#计算正交/酉矩阵的cosine-sine (CS) 分解。
X 是一个
(m, m)正交/酉矩阵,分区如下,其中左上块的形状为(p, q):┌ ┐ │ I 0 0 │ 0 0 0 │ ┌ ┐ ┌ ┐│ 0 C 0 │ 0 -S 0 │┌ ┐* │ X11 │ X12 │ │ U1 │ ││ 0 0 0 │ 0 0 -I ││ V1 │ │ │ ────┼──── │ = │────┼────││─────────┼─────────││────┼────│ │ X21 │ X22 │ │ │ U2 ││ 0 0 0 │ I 0 0 ││ │ V2 │ └ ┘ └ ┘│ 0 S 0 │ 0 C 0 │└ ┘ │ 0 0 I │ 0 0 0 │ └ ┘U1、U2、V1、V2分别是尺寸为(p,p)、(m-p,m-p)、(q,q)和(m-q,m-q)的方正交/酉矩阵,以及C和S是(r, r)非负对角矩阵满足C^2 + S^2 = I其中r = min(p, m-p, q, m-q)。此外,单位矩阵的秩分别为
min(p, q) - r、min(p, m - q) - r、min(m - p, q) - r和min(m - p, m - q) - r。X 可以由其自身提供,也可以由块规范 p、q 或其子块在可从中派生形状的迭代中提供。请参阅下面的示例。
- X: 数组,可迭代
当
p、q被省略时,要分解的复单位或实正交矩阵,或子块X11、X12、X21、X22的可迭代矩阵。- p: 整数,可选
左上块
X11的行数,仅在 X 作为数组给出时使用。- q: 整数,可选
左上块
X11的列数,仅在 X 作为数组给出时使用。- separate: 布尔型,可选
如果
True,则返回低级分量而不是矩阵因子,即(u1,u2)、theta、(v1h,v2h)而不是u、cs、vh。- swap_sign: 布尔型,可选
如果
True,则-S,-I块将位于左下方,否则(默认情况下)它们将位于右上方块中。- compute_u: 布尔型,可选
如果
False,则不会计算u并返回一个空数组。- compute_vh: 布尔型,可选
如果
False,则不会计算vh并返回一个空数组。
- u: ndarray
当
compute_u=True时,包含由块U1(pxp) 和U2(m-pxm-p) 正交/酉矩阵组成的块对角正交/酉矩阵。如果separate=True,这包含(U1, U2)的元组。- cs: ndarray
- 具有上述结构的cosine-sine 因子。
如果
separate=True,这包含theta数组,其中包含以弧度表示的角度。
- vh: ndarray
当
compute_vh=True`, contains the block diagonal orthogonal/unitary matrix consisting of the blocks ``V1H(qxq) 和V2H(m-qxm-q) 正交/酉矩阵时。如果separate=True,这包含(V1H, V2H)的元组。
参数 ::
返回 ::
参考:
[1]布莱恩·D·萨顿。计算完整的 CS 分解。数字。算法,50(1):33-65,2009。
例子:
>>> import numpy as np >>> from scipy.linalg import cossin >>> from scipy.stats import unitary_group >>> x = unitary_group.rvs(4) >>> u, cs, vdh = cossin(x, p=2, q=2) >>> np.allclose(x, u @ cs @ vdh) True同样可以通过子块输入,而无需
p和q。另外让我们跳过u的计算>>> ue, cs, vdh = cossin((x[:2, :2], x[:2, 2:], x[2:, :2], x[2:, 2:]), ... compute_u=False) >>> print(ue) [] >>> np.allclose(x, u @ cs @ vdh) True
相关用法
- Python SciPy linalg.cosm用法及代码示例
- Python SciPy linalg.coshm用法及代码示例
- Python SciPy linalg.convolution_matrix用法及代码示例
- Python SciPy linalg.companion用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- Python SciPy linalg.cho_factor用法及代码示例
- Python SciPy linalg.cholesky用法及代码示例
- Python SciPy linalg.cho_solve_banded用法及代码示例
- Python SciPy linalg.cho_solve用法及代码示例
- Python SciPy linalg.circulant用法及代码示例
- Python SciPy linalg.cholesky_banded用法及代码示例
- Python SciPy linalg.cg用法及代码示例
- Python SciPy linalg.cgs用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.polar用法及代码示例
- Python SciPy linalg.rsf2csf用法及代码示例
- Python SciPy linalg.hessenberg用法及代码示例
- Python SciPy linalg.tril用法及代码示例
- Python SciPy linalg.triu用法及代码示例
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.ishermitian用法及代码示例
- Python SciPy linalg.invhilbert用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.cossin。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
