3

だから私は次の連立方程式を持っています

 x1 - x2 =  20
 x2 - x3 =  30
 x3 - x4 =  75
 x4 - x5 = -49
-x1 + x5 = -20

Matlabを使用してシステムを解決するにはどうすればよいですか?私は少し立ち往生しています。

解決策がない可能性は十分にありますが、誰かが私にそれを行う方法を教えてくれれば、それは素晴らしいことです!

4

2 に答える 2

9

まず、この方程式を行列表記に変換します。

A = [ 1 -1  0  0  0
      0  1 -1  0  0
      0  0  1 -1  0
      0  0  0  1 -1
     -1  0  0  0  1];

b = [ 20
      30
      75
     -49
     -20];

xあなたは与えることを見つけようとしていますAx = bA特異であるため、の逆をとることはできません。これを確認するには、ランクを確認してください。rank(A) == 4A特異でない場合は5になります。

したがって、左から乗算すると、最も適切なx近似値が見つかるはずです。これは最適化問題です。との間の誤差を最小限に抑える必要があります。通常、人々は最小二乗法を使用します。つまり、残差の二乗和を最小化します。これは、次のように疑似逆行列によって実行できます。bAAxb

x = pinv(A) * b

与える

x =

   31.8000
   23.0000
    4.2000
  -59.6000
    0.6000

最良の近似はによって見つけられます

b2 = A*x


b2 =

    8.8000
   18.8000
   63.8000
  -60.2000
  -31.2000

最小二乗誤差は次のようになります

e = norm(b-b2)

e =

   25.0440

最小二乗法に代わる他の方法を試して最小化するAx-b場合は、l1-最小化、スパースエンコーディングなどをグーグルで検索できます。

于 2012-11-20T23:47:46.500 に答える
0

それを見て、精神的に方程式を足し合わせてください。LHSはゼロで、右側はポジティブなものなので、解決策はありません。

于 2012-11-21T00:43:53.807 に答える