翻译者: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,且xHAx0,对所有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=UVH。而仅有的非零的部分就是上面的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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。