返回信息流我在matlab中用到sin(pi)和cos(pi/2),结果显示sin(pi)为1.224646799147353e-016,cos(pi/2)=6.123233995736766e-017,在多次数值运算后,这些原始值对后来的结果造成了极大的误差,请问如何使本应该为零的正弦值和余弦值为零?
这是一条镜像帖。来源:北邮人论坛 / matlab / #2648同步于 2008/1/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
【求助】如何让sin(pi)为零?
MsStephenson
2008/1/12镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
pi只是是圆周率的近似
任何数值计算都会存在精度的问题
通常情况sin(pi)足够小了,如果它对你的计算结果产生巨大影响,我觉得首先应该检查一下计算过程对不对,确定究竟是误差还是错误
如果一定要sin(pi)和cos(pi/2)为0
那就自己定义两个变量sin_pi = 0; cos_pi2 = 0;吧
或者sin_pi = sprintf('%.15f',sin(pi)), 这样可以自定义小数点后的0数
我也觉得是计算过程不对。。
【 在 QuestionMark 的大作中提到: 】
: pi只是是圆周率的近似
: 任何数值计算都会存在精度的问题
: 通常情况sin(pi)足够小了,如果它对你的计算结果产生巨大影响,我觉得首先应该检查一下计算过程对不对,确定究竟是误差还是错误
: ...................
我倒是觉得可能是计算过程正确,但是很小的误差在大量多次计算时积累导致最终结果的误差很大,在做数值计算的时候碰到过类似的情况
【 在 Jarod 的大作中提到: 】
: 我也觉得是计算过程不对。。
听起来像混沌
【 在 Goldfather 的大作中提到: 】
: 我倒是觉得可能是计算过程正确,但是很小的误差在大量多次计算时积累导致最终结果的误差很大,在做数值计算的时候碰到过类似的情况