主题:郁闷的问题
yfchenth
[专家分:110] 发布于 2008-06-29 15:29:00
请问高手们,为什么sin(pi)不等于0,而sin(pi/2)却能等于1呢?
回复列表 (共4个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2008-06-29 16:25:00
没啥好奇怪的
matlab里面的pi只是一个双精度有限位数的数字,不是圆周率的pi
类似
sin(pi*1e100)
sin(pi*1e200)
sin(pi/2*1e200)
不会得到正确的结果的,即使只有一个pi,出现偏差也是正常的,结果影响不大
但是像sin(pi*1e100),就得考虑算法问题了
板凳
yfchenth [专家分:110] 发布于 2008-06-29 19:55:00
那为什么sin(pi/2)等于1呢
3 楼
dongyuanxun [专家分:7180] 发布于 2008-06-30 19:02:00
你用泰勒公式展开自己算下
满足精度退出
pi/2的情形也不是绝对等于1吧,只是等于一个1.00000000的数而已
都得看数据类型满足的精度
4 楼
magic.cg [专家分:110] 发布于 2008-07-15 15:01:00
你可以定义 pi=sym('pi');
这样pi就定义成了代表3.1415-----的符号变量,并且没有精度亏损。
此时计算sin(pi)得到的结果是0
我来回复