我在 matlab 中通过矩阵求解线性方程得到了错误的答案

I am getting a wrong answer for the linear equation solving by matrices in matlab

>> K=[6,31,221;31,221,1801;221,1801,15665]

K =

       6          31         221
      31         221        1801
     221        1801       15665

>> f=[31;197;1543]

f =

      31
     197
    1543

>> lambda=inv(K)*f

lambda =

2.1413
0.5472
0.0054

我什至使用 K\f 选项。但它给出了相同的结果。但这是不正确的,对吧?正确答案应该是 lambda = 2.1728 0.6070 -0.0102

那我们看看是不是MATLAB不会矩阵运算。如果 lambda = inv(K)*f,则 K*lambda = f。这是正确的吗?

lambda = K\f
lambda =
       2.1413
      0.54725
     0.005374

K*lambda
ans =
           31
          197
         1543

如果我们假设 lambda = [2.1728; 0.6070; -0.0102] 是正确的,让我们看看会得到什么:

f = K*lambda
f =
         29.6
       183.13
       1413.6

我会把钱花在 MATLAB 上是正确的。

computation on wolfram alpha

wolfram alpha 同意 MATLAB,...2 反对 1。你真的有理由相信结果应该不同吗?

我想我明白了!

要得到另一个(错误的)答案,我想你做到了:

>> K=[6,31,221;31,221,1801;221,1801,15665];

>> inv(K)

ans =

1.5647   -0.6276    0.0501
-0.6276    0.3235   -0.0283
0.0501   -0.0283    0.0026

>> iK=[  1.5647   -0.6276    0.0501;
-0.6276    0.3235   -0.0283;
0.0501   -0.0283    0.0026];

>> f=[31;197;1543];

>> iK*f

ans =

2.1728
0.6070
-0.0102

这是行不通的,因为当您手动复制 inv(K) 的值时,您没有采用 matlab 计算的精确值(虽然不精确但足够接近),而是采用了显示的值,所以只有 4 位数字的准确性!