我在 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 上是正确的。
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 位数字的准确性!
>> 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 上是正确的。
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 位数字的准确性!