2

x=[1;2;3]

x =

 1
 2
 3

y=[4;5;6]

y =

 4
 5
 6

x\y

答案=

2.2857

Matlab 是如何找到这个结果的?(我搜索了很多论坛,但我不明白他们在说什么。我想知道给出这个结果的算法。)

4

2 回答 2

5

来自 MATLAB 文档\

如果 A 是具有 M 个分量的M-by-N矩阵M < or > N,B 是具有 M 个分量的列向量,或者是具有多个这样的列的矩阵,则X = A\B它是方程组的欠定或超定系统的最小二乘解A*X = B

在这里,您的系统不是欠定/超定。因为两者都有 3 行。因此,您可以将方程式可视化为:

xM=y
M=inv(x)*y

现在,由于您的矩阵不是方形的,它将使用 SVD 计算伪逆。所以,

M=pinv(x)*y;

您将获得 M 的值为 2.2857。

另一种解释可以是:它将为您提供xM=y最小二乘意义上的解决方案。您可以按如下方式验证这一点:

M=lsqr(x,y)

这将为您提供 M = 2.2857 的值。

您可以随时help \在 MATLAB 命令窗口中获取更多信息。

鼓励您查看有关最小二乘和伪逆的更多详细信息。

于 2013-03-02T00:42:02.467 回答
-1

这个文档应该解释它

http://www.mathworks.com/help/matlab/ref/mrdivide.html

这是算法的链接

http://www.maths.lth.se/na/courses/NUM115/NUM115-11/backslash.html

不过,您可以更轻松地在 matlab 中查看源代码。(我在本地没有它,所以我无法检查,但很多 matlab 函数的来源在 matlab 中可用)

于 2013-03-02T00:38:08.790 回答