我正在学习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":
最后,我的疑问是:如果A * x与" b"具有相同的值,为什么在Scilab中等式返回False?
答案 0 :(得分:1)
这可能是由于舍入错误以及浮点数学的固有局限性,正如普通人在他的评论中指出的那样。
另一件需要记住的事情是:Scilab控制台输出舍入值,因此内部通常会有更多小数位未显示,除非明确询问,例如: mprintf("x= %.30f", x(1));
为了避免这个问题,你可以尝试clean
你的数组,也就是说,将非常小的数据包围到0.试着看看结果:
A*clean(x)==b