(Python科学计算包)NumPy文档:10.1 线性代数
翻译者:Keengle(http://www.kgblog.net )
10.1 线性代数(linalg)
以下函数包含于numpy.linalg包中。
inv(A)
返回2维数组的(矩阵)的逆。这个结果X,就是满足 dot( A,X)等于eye( *A.shape ) (在机器精度范围内)。
solve(A,b)
计算线性方程Ax=b的解,其中A是一个2维数组,b是一个1维或2维的数组。
tensorsolve(A,b,axes=None)
计算以下多下标线性方程的解xkl,
![]()
tensorinv(A,ind=2)
计算A的张量逆阵,张量是这样定义的:tensordot(Ainv,A)是一个单位算子。
cholesky(A)
返回A的对称正定矩阵分解L。对称正定矩阵分解是指,当A=AH,且xHAx
0,对所有x都成立,则A的分解可以从这个等式解出来:A=LLH,其中L是下三角矩阵。
eigvals(A)
返回满足方程Ax=
x的所有解(
),也就是A的特征值。
eig(A)
返回满足方程Ax=
x的所有解元组(
, x )。返回的元组的第一个元素包含所有的特征值。第二个元素包含了所有的特征向量在各列(x[:,i]是第i个特征向量)。
eigvalsh(U)
eigh(U)
这两个函数跟eigvals和eig的唯一不同点就是它们只对共轭矩阵有效,也就是满足UH=U(只需要用到下三角的部分就可以了).
svd(A)
计算2维矩阵A的奇异值分解。每一个m*n的矩阵都可以分解为一对单位矩阵,U=UH(m*m)和V=VH(n*n),和一个m*n的“对角”矩阵
,满足A=U
VH。而
仅有的非零的部分就是上面的r*r块,其中r=min(m,n)。这个svd函数返回三个数组组成的元组:(U,
,VH)。矩阵的奇异值就是1维的数组
。如果需要,数组
可以计算出来,先生成r*r的对角块,再将它嵌入到一个全0矩阵中。如下:
>>> A=random.rand(3,5) >>> from numpy.dual import svd; U,s,Vh=svd(A) >>> r=min( *A.shape ); Sig=zeros_like(A); >>> Sig[:r,:r]=diag(s); print Sig [[ 2.18326497 0. 0. 0. 0. ] [ 0. 0.69966943 0. 0. 0. ] [ 0. 0. 0.230158 0. 0. ]] |
pinv(A,rcond=10-10)
返回A的一般化的伪逆阵。对于可逆矩阵,这跟inverse是一模一样的。
det(A)
返回数组的行列式的值。数组的行列式的值等于它的奇异值的乘积。
lstsq(A,b,rcond=10-10)
返回(x, resides, rank, s ),其中x使得resids=||Ax-b||2最小化。Rank就是A的秩,s是奇异值以降序序列输出。奇异值如果小于s[0]*rcond就看作是0。如果A的秩小于A的列数或大于行数,resids将返回一个空数组。
注:转载请注明出处http://www.kgblog.net 。
最新评论