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 = b。你不能取反,A因为它是单数的。要查看此检查其排名;rank(A) == 4. A如果是非奇异的,它将是 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,你可以google l1-minimization,sparse encoding等。

于 2012-11-20T23:47:46.500 回答
0

看看它,然后在心里把方程式加起来。LHS 为零,右手边是正数,所以没有解!

于 2012-11-21T00:43:53.807 回答