这是我所需要做的-

我有这个方程

Ax=y

其中一个是合理的m*n矩阵(m<=n),以及x和y是矢量的 右尺寸。我知道,我不知道什么x是平等的。我 还知道有没有x在斧头等于完全y。我想找到的矢量x'这样的那个斧头'是尽可能靠近 y。意思是(斧'-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

我不明白的文件。有人可以请出示 我如何使用这些功能为解决我的问题。

谢谢你!!!

有帮助吗?

解决方案

SVD是对的情况下m < n,因为你真的没有足够的自由度。

该文件为lstsq不要看起来非常有帮助的。我相信这是最少的方配合,为的情况下m>。

如果m < n,你会想 SVD.

其他提示

更新的文档可能有点更有帮助...看起来像你想要

numpy.linalg.lstsq(A, y)

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

<强> A = <强>ûΣ V Ť

,其中    的ûû Ť = <强> I ;    的 V V Ť = <强> I

因此,如果

<强> X A = <强>ý

然后

<强> X ûΣ V Ť = <强>ÿ

<强> X ûΣ V Ť V = <强>ý V

<强> X ûΣ = <强>ý V

<强>û Ť <强> X Σ = <强>ý V

<强> X Σ = <强>ûý V

<强> X = <强>Σ -1 û Ťÿ V

<强> X = <强> V ŤΣ -1 û Ťý

因此,考虑的SVD的 A 您可以得到的 X


虽然对于一般的矩阵的 AB != <强> BA 下,这是事实为向量的 X 其的 X U = = <强>û Ť <强> X

例如,考虑的 X =(X,Y),的û =(A,B; C,d):

<强> X û =(X,Y)(A,B; C,d)

=(XA + YC,XB +码)

=(AX + CY,BX + DY)

=(A,C,B,d)(X; Y)

= <强>û Ť <强> X

当你看到在价值观这是相当明显的 X ü为圆点的产品的 X 并在 U型列下,并且在值的û Ť <强> X 是所述的 X 的点积和行的的û Ť,和行数和列在换位的关系

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top