有个问题! 对于下面程序中的double sum1=1.0;为何要初始化赋值呢?还有一系列问题在程序中!

[复制链接]
查看11 | 回复1 | 2011-8-4 11:50:53 | 显示全部楼层 |阅读模式
#include
#include
#include
using namespace std;
int main()
{
double x,sum1=1.0,sum2=-1.0,sum=1.0;
double sum3=1.0, sum4=1.0;
cout1e-8;i++)//这里有点小问题!这个应该是对sum1求绝对值?(要求输出精度10的-8次方)不应该是对结果sum取绝对值么?
{

sum2*=-1.0;

sum3*=x;

sum4*=i;

sum1=sum2*sum3/sum4;

sum=sum+sum1;//这个直接带进去是不是可以省略sum1,这里出现的sum1为何要在开始时对其初始化赋值呢?

}

cout..这部分呢?这个也是说明输出精度的啊?
}
这道题是
1+x-x^2/2!+x^3/3!-…(-1)^(n+1)x^n/n!(其中^代表次方)要求输出精度为10^-8。

回复

使用道具 举报

千问 | 2011-8-4 11:50:53 | 显示全部楼层
为什么你会认为应该结果求绝对值?结束循环的条件是结果的“精度”达到一定水平, 也就是说后面剩下的那些项的值已经非常小以至于忽略掉它们不会明显地影响结果的值, 所以代码是判断当前这一项的大小省略掉了sum1在循环条件那你拿什么比较呢应该是sum。 取代不了, 输出精度跟你计算的精度毫无关系。比如你只计算一项,结果是1, 结果完全没精度可言,但是你仍然可以把它显示成1.00000000000000000000, 这样精度高了吗? 显示精度是高了, 但是显然不会影响计算的精度...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行