为什么这个等式在Scilab上返回False?

时间:2017-03-19 19:02:50

标签: matrix vector linear-algebra equality scilab

我正在学习Scilab用于教育目的。

当处理高斯消元时,我们得到Ax = b。 " A"是具有来自线性方程的系数的矩阵," x"是带变量的矢量和" b"是"解决方案"来自线性系统。

假设A是:

    10.  - 7.      0.  
  - 3.     2.09    6.  
    5.   - 1.      5.  

而b是:

7.    
3.91  
6.   

在Scilab中使用高斯消元,我们得到x的值为:

  - 3.109D-14  
  - 1.         
    1.

观察: - 3.109D-14是一个接近于零的数字。

当我将矩阵乘法作为A * x时,我得到一个3x1向量,其元素与向量相同" b":

enter image description here

最后,我的疑问是:如果A * x与" b"具有相同的值,为什么在Scilab中等式返回False?

enter image description here

1 个答案:

答案 0 :(得分:1)

这可能是由于舍入错误以及浮点数学的固有局限性,正如普通人在他的评论中指出的那样。

另一件需要记住的事情是:Scilab控制台输出舍入值,因此内部通常会有更多小数位未显示,除非明确询问,例如: mprintf("x= %.30f", x(1));

为了避免这个问题,你可以尝试clean你的数组,也就是说,将非常小的数据包围到0.试着看看结果:

A*clean(x)==b