Matlab解决了超定系统给出的错误答案

时间:2014-04-25 14:49:55

标签: matlab

gam = 1 / (2^0.5);

R = [1 0 gam 0 0 -1 -gam 0 0 0;
    0 0 gam 0 1 0 gam 0 0 0;
    0 gam 0 1 0 0 0 -gam -1 0;
    0 -gam 0 0 -1 0 0 -gam 0 0;
    0 0 0 0 0 1 0 gam 0 0;
    0 0 0 0 0 0 0 gam 0 1;
    0 0 0 0 0 0 gam 0 1 0;
    0 0 0 0 0 0 -gam 0 0 -1];

% 8 rows, 10 columns

f = 1.0e+04 *

         0
   -1.9799
    0.4243
    4.3000
         0
    0.1000
         0
    1.2728
    1.0000
   -0.8000

我想解决R' * a = f。使用a = R' \ f给出

a =

   1.0e+04 *

   -0.9727
    3.5182
    3.3273
    4.1818
   -0.5636
    9.2545
    4.6364
    9.7455

然而

R'*a = 1.0e+04 *

   -0.9727
   -0.6043
    1.7999
    3.3273
   -0.6636
    0.4091
   -0.4371
    0.8357
    1.3091
   -0.4909

这不是f。那是因为没有解决方案吗?你是如何解决的?

1 个答案:

答案 0 :(得分:0)

根据定义,过度确定的系统没有解决方案。如the documentation中所述,在过度确定的系统上使用\(左分区)给出的结果最接近于最小二乘意义上的解。