首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab中的数值计算问题

matlab中的数值计算问题
EN

Stack Overflow用户
提问于 2014-01-26 06:13:29
回答 1查看 100关注 0票数 0

在这个问题中,我将在matlab中讨论数值计算问题,并希望获得今后如何避免这些问题/错误的经验。

例如,让我们考虑以下简单的代码

代码语言:javascript
复制
t = 0.4 + 0.1 - 0.5

t =

     0

很好,但是

代码语言:javascript
复制
u = 0.4 - 0.5 + 0.1

u =

   2.7756e-17

当然,它也是0,但是为什么不在第一次计算得到相同的结果?或者有什么不同?也请看。

代码语言:javascript
复制
v = (sin(2*pi) = = sin(4*pi)) 

v = (sin(2*pi)==sin(4*pi))

v =

     0

它表明正弦函数不是周期性的,所以在这种情况下,一般的建议是什么??引入一些epsilon?

代码语言:javascript
复制
V=((sin(2*pi)-sin(4*pi))<eps)

V =

     0

代码语言:javascript
复制
EPS=0.000000000000001

EPS =

   1.0000e-15

>> V=((sin(2*pi)-sin(4*pi))<EPS)

V =

     1

请帮帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 07:37:37

得到这些结果是正常的,因为在Matlab中浮点相对精度是

代码语言:javascript
复制
eps('double')

ans =

   2.2204e-16

对于V=((sin(2*pi)-sin(4*pi))<eps),因为

代码语言:javascript
复制
sin(2*pi)-sin(4*pi)

ans =

   2.4493e-16

它比eps('double')大,所以它的结果是V=0

对于V=((sin(2*pi)-sin(4*pi))<EPS),因为EPS>2.4493e-16,所以它的结果将是V=1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21360387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档