我呼吁pdfomegatFOR在MATLAB循环和数值错误
omegat= -1.9999:0.01:+1.9999;
sum1=0;
for j=1:length(omegat)
func(j)=pdfomegat(j)*0.01;
sum1=sum1+func(j);
end
c1=sum1;
我的第二个循环,总结的函数值的循环略有不同循环,如下所示
sum2=0;
syms t
for j=1:length(omegat)
func2(j)=t*pdfomegat(j)*0.01;
sum2=sum2+func(j);
end
c2=sum2;
我知道事实上,c1是1 ..但是请注意,在第二个循环中,我只改变了符号字符t。无论我得到那
c2 = 0.99999464659732599597363744692302 * t。
为什么不是c2 = t?
有没有什么办法可以修复它,我不能使用轮功能,因为它的象征性..任何想法?
我应该读文件来知道答案:)?我猜测代码没有问题。它只是与MATLAB本身的东西? @Nitish – George 2015-02-06 00:10:22
Matlab对非整数使用浮点表示法。不幸的是,它们没有无限精度。有限制错误的技术(例如总和数从最小到最大),但最终唯一的方法是仅使用整数。 – 2015-02-06 00:33:54
有什么方法可以修复它? @AndrewPiliser我的问题需要很高的精度:( – George 2015-02-06 00:37:58