Matrix 为什么这个等式在Scilab上返回False?
我学习Scilab是为了教育目的 当处理高斯消去法时,我们得到Ax=b。“A”是带有线性方程组系数的矩阵,“x”是带有变量的向量,“b”是带有线性系统“解”的向量 假设A是: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
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
可能重复的