文章目录
-
- QR和RQ分解
- 其他函数
QR和RQ分解
记为方阵,分别为正交单位阵和上三角阵,则形如的分解为QR分解;形如的分解为RQ分解。
在scipy.linalg
中,为二者提供了相同的参数,除了待分解矩阵a
之外,还有下列参数
overwrite_a
默认为False
,为True
时,将在矩阵分解时覆盖a
的值lwork
工作数组的尺寸mode
默认'full'
,用于调整返回值,可选4个参数'full'
:返回和'r'
:返回'economic'
:返回和,但是合并在一起'raw'
:返回和矩阵
pivoting
默认False
,当为True
时,计算,但要求选择合适的,从而让的对角线非递增check_finite
默认为True
,表示检查是否有限
import numpy as np
import scipy.linalg as sl
A = np.random.rand(3,3)
q1,r1 = sl.qr(A)
r2,qr = sl.rq(A)
结果得到和分别为,可见二者并不相等。
但是的确是等于的。
>>> q1@r1
array([[0.81677429, 0.63368526, 0.84867074],
[0.22394697, 0.10848293, 0.58357567],
[0.90375906, 0.37051483, 0.06042968]])
>>> q2@r2
array([[-0.09631134, -0.22572231, -0.15900946],
[ 0.01719633, -0.05246553, -0.90632485],
[ 0.23552571, -0.94691613, 1.13446376]])
>>> r2@q2
array([[0.81677429, 0.63368526, 0.84867074],
[0.22394697, 0.10848293, 0.58357567],
[0.90375906, 0.37051483, 0.06042968]])
其他函数
除了qr
和rq
这两个函数外,scipy.linalg
还提供了其他与qr
分解相关的函数。
qr_multiply(a,c)
,在对进行分解之后,返回,其参数中,overwrite_a, overwrite_c, privoting
与qr
函数中的作用相同,或可类比。此外,还有其他两个参数
mode
可选left
或right
,分别表示返回或conjugate
为True
时,返回Q
的复共轭
qr_update(Q, R, u, v)
,若是QR分解,则返回的QR分解。此函数也支持overwrite_qruv, check_finite
参数。
qr_delete(Q,R,k,p)
和qr_insert(Q,R,u,k)
分别用于矩阵的删减和增添,对于而言,前者从第行/列删掉行/列;后者在第行/列插入。
这两个函数均支持check_finite
,覆写开关分别是overwrite_qr
和overwrite_qru
,通过which
来调整插入/删除的是行还是列,即which='row'
时,针对行操作,为'cols'
时,针对列操作。
版权声明:本文为博主作者:微小冷原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/m0_37816922/article/details/129717813