【问题标题】:Why this equality returns False on Scilab?为什么这个等式在 Scilab 上返回 False?
【发布时间】:2017-03-19 19:02:49
【问题描述】:

我学习 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?

【问题讨论】:

标签: matrix vector linear-algebra equality scilab


【解决方案1】:

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

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

为了规避这个问题,你可以尝试clean你的数组,即将非常小的实体四舍五入为0。试试看结果:

A*clean(x)==b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多