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

时间:2015-01-14 14:55:53

标签: matlab matrix-inverse

>> 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

3 个答案:

答案 0 :(得分:3)

因此,让我们检查它的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上是正确的。

答案 1 :(得分:2)

我想我得到了这个!

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

>> 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位精度!

答案 2 :(得分:1)

computation on wolfram alpha

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

computation on wolfram alpha