4

A*(A\D)以下の結果が等しくない可能性はどのようにありDますか?

ここに画像の説明を入力してください

それは降伏するはずDです-これはOctaveドキュメントの抜粋です:

線形方程式のシステムは、数値解析に遍在しています。線形方程式のセットAx=bを解くには、左除算演算子'\'を使用します。x=A \ b

以下はそれを試してみたい人のためのコードです:

A = [1,1,1;0,0,0;2,1,2;2,1,2;3,5,6]
D = [1;2;3;4;5]
% A is of rank 3:
rank(A)
% therefore the system Ax=D has a unique solution
x = A\D
% but Octave has not given the good solution:
A*x

Matlabでもまったく同じ結果が得られると誰かが言っています。

2012年10月10日編集:答えを読んだ後、私が重大な間違いを犯した場所を指摘させてください。「Aはランク3であるため、システムAx = Dには独自の解決策があります」という主張は絶対に間違っています!ちなみに、上記のドキュメントは非常に戸惑います。

4

2 に答える 2

7

A5行あり、ですD。どちらも3列あります。したがって、3つの変数を持つ5つの方程式の過剰決定システムがあります。ほとんどの場合、制約が多すぎるため、方程式を正確に解くことができないことを意味します。

一度やったら

x = A\D;

最小二乗解が得られます。

 0.8333
-1.5000
 1.6667

この解決策は何ですか?これは、誤差の二乗和を最小化するソリューションです。エラーを計算してみましょう:

  r = A*x-D;
  totalError = sum( r.^2);

これは、エラーが小さいxものを見つけることができないことを意味します。sum(sqr(A*x-D))

ちょっとした注意:あなたの場合、ゼロの行もあります-これにより、実際の方程式の数は4になります

もう一度見てみましょうA*(A\D)

>> A* (A\D)

ans =

    1.0000
         0
    3.5000
    3.5000
    5.0000

おなじみですね![1; 2; 3;4;5]に非常に近い。最初の行と最後の行は同じです。ゼロの行を配置するため、2番目はゼロです。3行目と4行目では、Aにはまったく同じ行がありますが、Bには異なる値があります。これはに対応します。

2*x+ 1*y + 2*z  = 3;
2*x+ 1*y + 2*z  = 4;

そして、あなたは彼らの平均を持っています!平均は距離の合計を3と4に最小化する値であるため、これは理にかなっています。


これはもっと簡単な例です。次の連立方程式を解きたいとします。

   x = 1;
   x = 2;

明らかに、同時にxすることはできません。エラーの二乗和を最小化するソリューションは次のとおりです。121.5

   A = [1;1];
   b = [1;2];
   A\b
   ans =
    1.5000
于 2012-10-08T10:20:30.333 に答える
2

システムAが過剰に決定されているため(Aは長方形)、システムを正確に解くことはできません

長方形行列 Aが長方形の場合、mldivideは最小二乗解を返します。MATLABは、QR分解を使用して過剰決定系を解決します(qrを参照)。劣決定システムの場合、MATLABは最大数のゼロ要素を持つ解を返します。

于 2012-10-08T10:20:20.740 に答える