Octave 只能在八度音阶中使用最多8位小数

Octave 只能在八度音阶中使用最多8位小数,octave,Octave,当以倍频程计算包含整数项(甚至3x3个矩阵)的矩阵的特征值时,有时它会报告一个浮点值,如9.1940e-17,而实际上它应该是零。 例如,当我绘制一些模为1的数字时,图中的值-2e-17变为1,但实际上应该是0 虽然我可以在以后将答案近似到小数点后几位,但在计算特征值时,它仍然会在内部计算到小数点后17位,从而浪费计算时间。从一开始,所有数量的小数点后8位是否可以使用 如果这是不可能的,那么在报告时,是否可以在脚本中一次性地告诉八度音阶,使所有数量接近小数点后8位?您所要求的不会有帮助,它会使情

当以倍频程计算包含整数项(甚至3x3个矩阵)的矩阵的特征值时,有时它会报告一个浮点值,如9.1940e-17,而实际上它应该是零。 例如,当我绘制一些模为1的数字时,图中的值-2e-17变为1,但实际上应该是0

虽然我可以在以后将答案近似到小数点后几位,但在计算特征值时,它仍然会在内部计算到小数点后17位,从而浪费计算时间。从一开始,所有数量的小数点后8位是否可以使用


如果这是不可能的,那么在报告时,是否可以在脚本中一次性地告诉八度音阶,使所有数量接近小数点后8位?

您所要求的不会有帮助,它会使情况变得更糟。将精度设置为8个小数点或有效数字不会使数值误差消失,它会将数值误差增加到该量级。简单计算一下:

x=1/3
y=x*6
现在您将得到1.9999998,这是一个更大的错误


有些库的作用正好相反,提高了精度。这叫八度音阶。

你所要求的不会有帮助,会让事情变得更糟。将精度设置为8个小数点或有效数字不会使数值误差消失,它会将数值误差增加到该量级。简单计算一下:

x=1/3
y=x*6
现在您将得到1.9999998,这是一个更大的错误

有些库的作用正好相反,提高了精度。在八度音程中称为。

作为补充,额外的精度不需要额外的时间。计算机处理的是整个数字,而不是单个数字

您可能想使用

A(abs(A)<1e-8) = 0;
计算最终结果A后,将接近零的值设置为零。

作为补充,额外的精度不会花费任何额外的时间。计算机处理的是整个数字,而不是单个数字

您可能想使用

A(abs(A)<1e-8) = 0;

在计算最终结果A后,将接近零的值设置为零。

请注意,我不是问为什么浮点数不能准确表示。请注意,我不是问为什么浮点数不能准确表示。我是否必须对每个矩阵元素都这样做,或者它对整个矩阵有效吗?我必须对每个矩阵元素这样做吗,或者它对整个矩阵有效吗?