本文簡要介紹 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
(p
xp
) 和U2
(m-p
xm-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
(q
xq
) 和V2H
(m-q
xm-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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。