Python 第三方模块 科学计算 SciPy模块4 线性代数2

八.Linalg模块
3.分解
(2)SVD:

对矩阵进行SVD:[<U>,<s>,<Vh>=]scipy.linalg.svd(<a>[,full_matrices=True,compute_uv=True,overwrite_a=False,check_finite=True,lapack_driver='gesdd'])
  #分解为<a>=<U>*<s>*<vh>
  #参数说明:其他参数同scipy.linalg.lu()
    full_matrices:True,则U/Vh的形状为M×M/N×N
                  为False,则U/Vh的形状为M×K/K×N,K=min(M,N)
    compute_uv:指定是否返回U/Vh;bool
    lapack_drive:指定用于求解的LAPACK driver;"gesdd"(Divide-and-Conquer approach)/"gesvd"(General Rectangular Approach)
      #MATLAB/Octave使用"gesvd"
    U:返回左奇异矩阵;为M×K ndarray
    s:返回奇异值矩阵;为K×K ndarray
    Vh:返回右奇异矩阵;为K×N ndarray

######################################################################################################################

[<s>=]scipy.linalg.svdvals(<a>[,overwrite_a=False,check_finite=True])

######################################################################################################################

[<S>=]scipy.linalg.diagsvd(<s>,<M>,<N>)

######################################################################################################################

通过SVD求线性空间的标准正交基:[<Q>=]scipy.linalg.orth(<A>[,rcond=None])
  #参数说明:
  	A:指定1组基;为M×N array-like(每行为1个基)
  	rcond:指定小奇异值的截断点;float,默认为eps*max(M,N)
  	  #小于rcond*max(all sigular value)的奇异值会被认为是0
  	Q:返回标准正交基;为M×K ndarray,K为<A>的有效秩

#实例:
>>> linalg.orth([[2,3,0],[1,2,0],[0,0,2]])
array([[-0.85065081,  0.        , -0.52573111],
       [-0.52573111,  0.        ,  0.85065081],
       [ 0.        ,  1.        ,  0.        ]])
>>> linalg.orth([[2,3,0],[1,2,3]])
array([[-0.68469764, -0.72882724],
       [-0.72882724,  0.68469764]])

######################################################################################################################

通过SVD求矩阵的零空间的标准正交基:[<Z>=]scipy.linalg.null_space(<A>[,rcond=None])
  #参数说明:其他参数同scipy.linalg.orth()
	Z:返回标准正交基;为N×K ndarray

######################################################################################################################

对矩阵进行极分解:[<u>,<p>=]scipy.linalg.polar(<a>[,side='right'])

(3)Cholesky分解:

对方阵进行Cholesky分解:[<c>=]scipy.linalg.cholesky(<a>[,lower=False,overwrite_a=False,check_finite=True])
对带状埃尔米特正定矩阵进行Cholesky分解:[<cb>=]scipy.linalg.cholesky_banded(<ab>[,overwrite_ab=False,lower=False,check_finite=True])
  #分解为<a>=<c>*<c>^T或<a>=<c>^T*<c>
  #参数说明:其他参数同scipy.linalg.eigh()
  	a:指定原矩阵;为M×M array-like
  	ab:指定带状埃尔米特正定矩阵;(u+1)×M array-like
  	  #格式参见官方文档
  	c:返回三角矩阵;为M×M ndarray
  	cb:返回;(u+1)×M ndarray
  	  #格式和<ab>相同

######################################################################################################################

scipy.linalg.cho_factor(<a>[,lower=False,overwrite_a=False,check_finite=True])

######################################################################################################################

scipy.linalg.cho_solve(<c_and_lower>,<b>[,overwrite_b=False,check_finite=True])
scipy.linalg.cho_solve_banded(<cb_and_lower>,<b>[,overwrite_b=False,check_finite=True])

######################################################################################################################

对矩阵进行LDLt分解或Bunch-Kaufman factorization:[<lu>,<d>,<perm>=]scipy.linalg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值