numpy线性代数基本帮助

时间:2009-05-16 12:53:23

标签: python numpy scipy linear-algebra svd

这就是我需要做的事情 -

我有这个等式 -

Ax = y

其中A是有理m * n矩阵(m <= n),并且x和y是矢量 合适的大小。我知道A和y,我不知道x等于什么。一世 也知道没有x,其中Ax等于y。 我想找到向量x',使Ax'尽可能接近 年。意味着(Ax' - y)尽可能接近(0,0,0,... 0)。

我知道我需要使用lstsq函数: http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#lstsq

或svd功能: http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#svd

我根本不懂文档。有人可以出示吗 我如何使用这些功能来解决我的问题。

非常感谢!!!

3 个答案:

答案 0 :(得分:2)

updated documentation可能会更有帮助......看起来像你想要的

numpy.linalg.lstsq(A, y)

答案 1 :(得分:0)

SVD适用于m <1的情况。 n,因为你没有足够的自由度。

lstsq的文档看起来不太有用。我相信这是最小二乘拟合,对于m> 1的情况。 Ñ

如果m&lt; ñ,你需要SVD

答案 2 :(得分:0)

矩阵A的SVD给出正交矩阵U和V以及对角矩阵Σ,使得

A = U Σ V T

,其中     U U T = ;     V V T =

因此,如果

x A = y

然后

x U Σ V T = y

x U Σ V T V = y V

x U Σ = y V

U T x Σ = y V

x Σ = U y V

x = Σ -1 U T y < / strong> V

x = V T Σ -1 U < / strong> T y

因此,给定 A 的SVD,您可以获得 x


虽然对于一般矩阵 AB != BA ,矢量 x 的确如此 x U = = U T x

例如,考虑 x =(x,y), U =(a,b; c,d):

x U =(x,y)(a,b; c,d)

=(xa + yc,xb + yd)

=(ax + cy,bx + dy)

=(a,c; b,d)(x; y)

= U T x

当您查看 x U 中的值 x 以及 U的列时,这是相当明显的 U T x 中的值是 x 和行的点积 U T ,以及换位中行和列的关系