matlab涉及小数运算精度问题

delta_w=0.05*pi

N3=11*pi/delta_w

k3=0:N3-1
请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于这个错误,导致我矩阵长度不匹配,求大家看看这是怎么回事

matlab计算时默认的采用double类型的数据,所以绝大多数的数值都是存在误差的。
在比较两个数是否相等时,就判断这两个数的差是否在误差内,在内部就认为想等,在外部就认为不等。
你出现的这个问题正好是由于这个原因,
d1=220-N3
d1= 2.842170943040401e-014

而d2=eps(220)=2.842170943040401e-014

现在是一个更特殊的情况d1=d2,所以正好认为N3与220不是一个数,而是一个比220要小且大于219的数,所以会出现这种情况。

对你的程序,你可以根据程序逻辑用N3=ceil(11*pi/delta_w)或者N3=round(11*pi/delta_w)来代替你的语句
温馨提示:内容为网友见解,仅供参考
无其他回答

matlab涉及小数运算精度问题
matlab计算时默认的采用double类型的数据,所以绝大多数的数值都是存在误差的。在比较两个数是否相等时,就判断这两个数的差是否在误差内,在内部就认为想等,在外部就认为不等。你出现的这个问题正好是由于这个原因,d1=220-N3 d1= 2.842170943040401e-014 而d2=eps(220)=2.842170943040401e-014 ...

为什么matlab在判断含小数的变量的算数运算结果是否等于某常量时不正确...
这个问题涉及到计算机内部浮点数表示的精度问题。在计算机中,浮点数使用有限的二进制位来表示实数,因此不能精确地表示所有的实数。这会导致在进行浮点数计算时可能出现舍入误差,从而影响了精确的比较。在你提到的情况下,2.76 - 1 的结果实际上是一个近似值,因为它涉及到浮点数的运算。当你进行 2....

matlab如何解决小数点有限导致结果不正确
这个并不是因为结果很大,而是 (1.5) ^ (1\/(10^40)) 这个数非常接近1——大约在40位有效数字之后才有差别,而双精度浮点数的分辨率仅为16位有效数字,这样和1相减的结果会被截断为0。如果想避免这个问题,可以考虑采用符号运算的可变精度求解,例如 a = (1-(sym(1.5))^(1\/(10^40)))*1...

matlab计算高精度小数?
事实上MATLAB的计算精度远不止你说的15位,只是结果一般以精简的形式表示。要提高结果得显示精度,有两个方法:1,用vpa函数,这个函数并不是简单地提高运算结果得显示精度,而是在整个计算过程中以你要求的精度进行计算。如以40位浮点数运算:>>1-vpa(1.234e-25,40)ans =实际精确结果不到40位小数,故以世界结果显示。

matlab计算高精度小数?
事实上MATLAB的计算精度远不止你说的15位,只是结果一般以精简的形式表示。要提高结果得显示精度,有两个方法:用vpa函数,这个函数并不是简单地提高运算结果得显示精度,而是在整个计算过程中以你要求的精度进行计算。如以40位浮点数运算:>>1-vpa(1.234e-25,40)ans =实际精确结果不到40位小数,故...

Matlab计算精确度问题?
1),比2大的最小数就是1+eps(2)。那么,这种不连续的存储必然导致一些舍入误差。1\/3的浮点存储就不会是精确的1\/3,所以有时候1.0\/3*3不会等于1,而是等于0.99999...Matlab中默认是双精度浮点类型(double),这个精度已经很高了。可以通过对应的设置来避免这种浮点计算误差。

用Matlab 计算出的结果不满足精度要求 如何提高有效数位?
1、修改程序算法 2、修改数据类型,如digits设置小数位数

为什么MATLAB的小数点后两位不能保留?
结论:在MATLAB中,要保留小数点后两位,可以使用digits和vpa方法。然而,这种方法并非最佳,因为它涉及符号型运算和精度控制,可能会导致速度变慢。下面是一种可能的改写方式:当需要在MATLAB中保留小数点后两位时,可以利用digits和vpa函数。首先,通过输入指定数值并确定保留位数,然后将其拆分为整数和小数...

Matlab怎么修改显示数值格式\/精度\/小数位数
1、第一先双击电脑上的“matlab”软件,打开它。2、然后在命令行输入pi,输入结果只有四位小数,精度较低。3、接着在左上方“主页”一栏中,点击“预设”按钮。4、弹出对话框,能看到“命令行窗口”的预设项:数值显示格式。5、选择切换数值格式,下面以“long”为例,选择数值格式为“long”。6、...

matlab如何设置计算精度
1、我们使用电脑打开matlab。2、在命令行窗口中输入代码:[0:0.1:1]。3、点击回车,我们可以看到结果从0开始每次增加0.1到1结束。4、赋予变量x从0到1等值增大的值。在命令行窗口中输入代码:x=[0:0.1:1]。5、点击回车后便会显示出x变量的赋值结果,我们可以看到x变量内值从0到1每次增加0....

相似回答