为什么在matlab中输入sin(pi)得出的结果不是0,而是 >> sin(pi) ans = 1.2246e-016

为什么在matlab中输入sin(pi)得出的结果不是0,而是
>> sin(pi)
ans =
1.2246e-016
换成>> sin(sym(pi))
ans =
0
却可以得到结果,为什么同样是三角函数,cos(pi)可以是-1

数值计算系统,就是不理论的。只能无限的近似。。。所以如果遇到这种情况 千万不要写
if (sin(pi)==0)
%expression

end
这种语句,最好
if (abs(sin(pi)-0)<1e-10)
%expression
end
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-09
那就要看源代码了像一般的程序都将pi设定为一个浮点数表示一般为arctan(1)*4,导致计算出来的不为严格的0
第2个回答  2012-11-12
精度的关系
pi=3.1416

为什么在matlab中输入sin(pi)得出的结果不是0,而是 >> sin(pi) ans...
数值计算系统,就是不理论的。只能无限的近似。。。所以如果遇到这种情况 千万不要写 if (sin(pi)==0)expression end 这种语句,最好 if (abs(sin(pi)-0)<1e-10)expression end

在matlab中为什么sin(pi)不等于0
首先你得明白,MATLAB定义的pi是一个近似数 来自MATLAB帮助:The expression sin(pi) is not exactly zero because pi is not exactly .pi returns the floating-point number nearest the value of pi,pi定义为一个浮点数,任何浮点数都会有量化误差,因为pi为无限不循环数,不可能有精确的浮点数 ...

为什么在matlab中输入 sin(pi)不等于0,而输入sin(pi\/2)确等于0呢?
ans = 1.2246e-016 >> sin(pi\/2)ans = 1 第一个因为计算有舍入误差,但10^-16基本可认为是0 至于sin(pi\/2),应该不等于0 建议计算前 clear一下,你可能自己定义了pi的值,将原来的pi覆盖了 如:pi = 1 >> sin(pi\/2)ans = 0.4794 ...

matlab中sin(pi)不等于0怎么办
sin(pi)ans = 1.2246e-016 这个可认为是0了,因为双精度计算时是有误差的

matlab中sin(pi)=1.2246e-016 为什么tan(pi)=-1.2246e-0
对啊,都是0 >> tan(pi)ans = -1.2246e-16>> sin(pi)ans = 1.2246e-16

MATLAB中求sin的问题
只显示小数点后4位。如果你输入 format long e;a=[pi pi\/2] ,>> sin(a)ans = 1.224646799147353e-16 1.000000000000000e+00 另外计算机计算函数值只能用拉格朗日近似,而且电脑中的pi位数也有限,所以sin(pi)给你的是一个很接近0的小数。

matlab两个数相减,舍入误差一般是多少可认为两个数是相等
如果误差小于1e-10,可以认为相等 例如sin(pi) = 1.2246e-016

为什么在matlab中输入sin(pi)得出的结果不是0,而是>>sin(pi)ans=1.2246...
哈哈,这简单!数值计算系统,就是不理论的。只能无限的近似。。。所以如果遇到这种情况千万不要写 if(sin(pi)==0) %expression end 这种语句,最好 if(abs(sin(pi)-0)<1e-10) %expression end 采纳哦

为什么在matlab中输入sin(pi)得出的结果不是0,而是>>sin(pi)ans=1.2246...
哈哈,这简单!数值计算系统,就是不理论的。只能无限的近似。。。所以如果遇到这种情况千万不要写 if(sin(pi)==0)expression end 这种语句,最好 if(abs(sin(pi)-0)<1e-10)<br>%expression end

matlab中函数sin(a:b:c)其中a,b,c都代表什么啊
a是起点,b是间隔,c是终点。例如:>> sin(0:pi\/10:pi)ans = Columns 1 through 9 0 0.30902 0.58779 0.80902 0.95106 1 0.95106 0.80902 0.58779 Columns 10 through 11 0.30902 1.2246e-016

相似回答