用matlab求解方程组

Bel*_*ish 3 matlab system equations

所以我有以下方程组

 x1 - x2 =  20
 x2 - x3 =  30
 x3 - x4 =  75
 x4 - x5 = -49
-x1 + x5 = -20
Run Code Online (Sandbox Code Playgroud)

我如何使用Matlab解决系统?我有点卡住了.

很有可能没有解决方案,但如果有人能让我知道如何做到那就太棒了!

pet*_*hor 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];
Run Code Online (Sandbox Code Playgroud)

你正在努力寻找x捐赠Ax = b.你不能采取逆,A因为它是单数.要看这个检查它的等级; rank(A) == 4.如果A是非单数的话,它将是5 .

所以,你应该找到从左边乘以最佳x近似值.这是一个优化的问题:你希望尽量减少之间的误差和.通常,人们使用最小二乘法.也就是说,您最小化残差的平方和.这可以通过伪逆来完成,如下所示:bAAxb

x = pinv(A) * b
Run Code Online (Sandbox Code Playgroud)

x =

   31.8000
   23.0000
    4.2000
  -59.6000
    0.6000
Run Code Online (Sandbox Code Playgroud)

找到最佳近似值

b2 = A*x


b2 =

    8.8000
   18.8000
   63.8000
  -60.2000
  -31.2000
Run Code Online (Sandbox Code Playgroud)

发现最小二乘误差

e = norm(b-b2)

e =

   25.0440
Run Code Online (Sandbox Code Playgroud)

如果你想尝试其他方法替代最小化方法来最小化Ax-b,你可以谷歌l1最小化,稀疏编码等.

  • 现在回答我同意的答案.+1 (2认同)