回 帖 发 新 帖 刷新版面

主题:郁闷的问题

请问高手们,为什么sin(pi)不等于0,而sin(pi/2)却能等于1呢?

回复列表 (共4个回复)

沙发

没啥好奇怪的
matlab里面的pi只是一个双精度有限位数的数字,不是圆周率的pi
类似
sin(pi*1e100)
sin(pi*1e200)
sin(pi/2*1e200)
不会得到正确的结果的,即使只有一个pi,出现偏差也是正常的,结果影响不大
但是像sin(pi*1e100),就得考虑算法问题了

板凳

那为什么sin(pi/2)等于1呢

3 楼

你用泰勒公式展开自己算下
满足精度退出
pi/2的情形也不是绝对等于1吧,只是等于一个1.00000000的数而已
都得看数据类型满足的精度

4 楼


你可以定义 pi=sym('pi');
这样pi就定义成了代表3.1415-----的符号变量,并且没有精度亏损。
此时计算sin(pi)得到的结果是0

我来回复

您尚未登录,请登录后再回复。点此登录或注册