だから私は次の連立方程式を持っています
x1 - x2 = 20
x2 - x3 = 30
x3 - x4 = 75
x4 - x5 = -49
-x1 + x5 = -20
Matlabを使用してシステムを解決するにはどうすればよいですか?私は少し立ち往生しています。
解決策がない可能性は十分にありますが、誰かが私にそれを行う方法を教えてくれれば、それは素晴らしいことです!
まず、この方程式を行列表記に変換します。
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 = b
。A
特異であるため、の逆をとることはできません。これを確認するには、ランクを確認してください。rank(A) == 4
。A
特異でない場合は5になります。
したがって、左から乗算すると、最も適切なx
近似値が見つかるはずです。これは最適化問題です。との間の誤差を最小限に抑える必要があります。通常、人々は最小二乗法を使用します。つまり、残差の二乗和を最小化します。これは、次のように疑似逆行列によって実行できます。b
A
Ax
b
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-最小化、スパースエンコーディングなどをグーグルで検索できます。
それを見て、精神的に方程式を足し合わせてください。LHSはゼロで、右側はポジティブなものなので、解決策はありません。