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

Matrix 为什么这个等式在Scilab上返回False?,matrix,vector,linear-algebra,equality,scilab,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

我学习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.
Obs:-3.109D-14是一个接近零的数字

当我以A*x的形式进行矩阵乘法时,我得到一个3x1向量,其分量与向量“b”相同:

最后,我的疑问是:如果A*x的值与“b”相同,为什么在Scilab中下面的等式返回False


这可能是由于舍入误差和浮点数学固有的局限性,正如正常人在他的评论中所指出的那样

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

为了避免这个问题,您可以尝试
清理
数组,也就是说,将非常小的enties取整为0。尝试查看以下结果:

A*clean(x)==b
可能重复的