本文简要介绍 python 语言中 scipy.linalg.polar
的用法。
用法:
scipy.linalg.polar(a, side='right')#
计算极分解。
返回极分解的因子[1] u和p这样
a = up
(如果边是“right”) 或a = pu
(如果边是“left”),其中p是半正定的。根据形状a, 的行或列u是正交的。什么时候a是一个方阵,u是一个方阵。什么时候a不是方形的,“canonical polar decomposition”[2]被计算。- a: (m, n) 数组
要分解的数组。
- side: {‘left’, ‘right’},可选
确定是计算右极分解还是左极分解。如果边是“right”,那么
a = up
.如果边是“left”,那么a = pu
.默认值为“right”。
- u: (m, n) 数组
如果 a 是正方形,则 u 是单一的。如果 m > n,那么 a 的列是正交的,如果 m < n,那么 u 的行是正交的。
- p: ndarray
p 是厄米正半定。如果 a 是非奇异的,则 p 是正定的。 p 的形状是 (n, n) 或 (m, m),分别取决于边是“right” 还是“left”。
参数 ::
返回 ::
参考:
[1]R. A. Horn 和 C. R. Johnson,“Matrix Analysis”,剑桥大学出版社,1985 年。
[2]N. J. Higham,“矩阵函数:理论与计算”,SIAM,2008 年。
例子:
>>> import numpy as np >>> from scipy.linalg import polar >>> a = np.array([[1, -1], [2, 4]]) >>> u, p = polar(a) >>> u array([[ 0.85749293, -0.51449576], [ 0.51449576, 0.85749293]]) >>> p array([[ 1.88648444, 1.2004901 ], [ 1.2004901 , 3.94446746]])
一个非正方形的例子,m < n:
>>> b = np.array([[0.5, 1, 2], [1.5, 3, 4]]) >>> u, p = polar(b) >>> u array([[-0.21196618, -0.42393237, 0.88054056], [ 0.39378971, 0.78757942, 0.4739708 ]]) >>> p array([[ 0.48470147, 0.96940295, 1.15122648], [ 0.96940295, 1.9388059 , 2.30245295], [ 1.15122648, 2.30245295, 3.65696431]]) >>> u.dot(p) # Verify the decomposition. array([[ 0.5, 1. , 2. ], [ 1.5, 3. , 4. ]]) >>> u.dot(u.T) # The rows of u are orthonormal. array([[ 1.00000000e+00, -2.07353665e-17], [ -2.07353665e-17, 1.00000000e+00]])
另一个非正方形的例子,m > n:
>>> c = b.T >>> u, p = polar(c) >>> u array([[-0.21196618, 0.39378971], [-0.42393237, 0.78757942], [ 0.88054056, 0.4739708 ]]) >>> p array([[ 1.23116567, 1.93241587], [ 1.93241587, 4.84930602]]) >>> u.dot(p) # Verify the decomposition. array([[ 0.5, 1.5], [ 1. , 3. ], [ 2. , 4. ]]) >>> u.T.dot(u) # The columns of u are orthonormal. array([[ 1.00000000e+00, -1.26363763e-16], [ -1.26363763e-16, 1.00000000e+00]])
相关用法
- Python SciPy linalg.pinv用法及代码示例
- Python SciPy linalg.pascal用法及代码示例
- Python SciPy linalg.pinvh用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- 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用法及代码示例
- Python SciPy linalg.factorized用法及代码示例
- Python SciPy linalg.lu_factor用法及代码示例
- Python SciPy linalg.SuperLU用法及代码示例
- Python SciPy linalg.lsqr用法及代码示例
- Python SciPy linalg.cho_factor用法及代码示例
- Python SciPy linalg.fractional_matrix_power用法及代码示例
- Python SciPy linalg.eig_banded用法及代码示例
- Python SciPy linalg.tanhm用法及代码示例
- Python SciPy linalg.orthogonal_procrustes用法及代码示例
- Python SciPy linalg.use_solver用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.polar。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。