x = [1; 2; 3]
x =
1
2
3
y = [4; 5; 6]
y =
4
5
6
x \ y
ans =
2.2857
Matlabはどのようにしてその結果を見つけましたか?(私は多くのフォーラムを検索しましたが、彼らが何を言っているのか理解できませんでした。この結果をもたらしたアルゴリズムを知りたいです。)
の MATLAB ドキュメントから\
:
A が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 コマンド ウィンドウでいつでも実行して、詳細情報を取得できます。
最小二乗法と疑似逆数に関する詳細を確認することをお勧めします。
このドキュメントはそれを説明する必要があります
http://www.mathworks.com/help/matlab/ref/mrdivide.html
アルゴリズムへのリンクはこちら
http://www.maths.lth.se/na/courses/NUM115/NUM115-11/backslash.html
ただし、matlab 内のソースははるかに簡単に確認できます。(ローカルに持っていないので確認できませんが、多くのmatlab関数のソースはmatlab内で利用できます)