作业帮 > 数学 > 作业

matlab中det([1 2 3;4 5 6;7 8 9])为什么得出一个非常小的数而不是0,而det([2 3 4;

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/06/04 11:48:53
matlab中det([1 2 3;4 5 6;7 8 9])为什么得出一个非常小的数而不是0,而det([2 3 4;5 6 7;8 9 10])是0.
matlab中det([1 2 3;4 5 6;7 8 9])为什么得出一个非常小的数而不是0,而det([2 3 4;
计算机中的数值是浮点数,不是我们理解的实数,所以当我们输入一个矩阵时,里面的元素和我们输入的数据是有一点点误差的.LU分解时,对矩阵的一些元素进行了减法,扩大了这些误差,所以本来应该是零的值很可能变成一个很小的值.第二个矩阵的行列式恰好等于零是因为运气好正好没扩大误差.嗯,如果你想深入分析,最好先看看浮点数系统(floating-points system).然后自己编一个精度更低的浮点数系统模拟器,再算算,就可以体会到期间的奥妙了.