| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 821 人关注过本帖
标题:级数逼近问题,不能理解,大侠帮帮忙.........
只看楼主 加入收藏
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
结帖率:86.11%
收藏
已结贴  问题点数:50 回复次数:6 
级数逼近问题,不能理解,大侠帮帮忙.........
大侠帮帮忙,帮我解释下这个程序啊,书上一个注释都没有。看不懂啊...........
比如for(int n=1; abs(item)>1e-6; ++n)里的abs(item)>1e-6;是什么意思啊???
还有这句setiosflags(ios::fixed).....
为什么最后输出的结果和书上的不同啊!我看好几遍,没发现那里不同啊。
书上结果是Pi=3.141595 我的是Pi=2.666667,第二次Pi=4...
望大家能帮小弟解答疑惑,先谢过了最好能整个程序解释下。

#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main()
{
    int sum=0,item=1;
    for(int n=1; abs(item)>1e-6; ++n)
    {
        item*=(-1.0)*(2*n-3)/(2*n-1);
        sum+=item;
    }
    cout<<"Pi = "<<setiosflags(ios::fixed)<<sum*4<<endl;
    cin.get();
    return 0;
}
搜索更多相关主题的帖子: 级数 
2009-12-01 15:03
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:5 
比如for(int n=1; abs(item)>1e-6; ++n)里的abs(item)>1e-6;是什么意思啊???
就是item这个数的绝对值大于10的负6次方的意思。。

小于等于的时候终止。。

[ 本帖最后由 hoho568 于 2009-12-2 10:29 编辑 ]
2009-12-01 17:46
forclwy
Rank: 4
等 级:业余侠客
帖 子:167
专家分:255
注 册:2008-10-21
收藏
得分:5 
iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点


2009-12-01 20:21
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
能帮忙解释下整个程序吗
2009-12-01 20:47
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:0 
我怀疑你把求Pi的公式写错了。能把公式写一下吗,我记不清楚了。。
2009-12-01 21:34
ivanjoysky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:22
专家分:137
注 册:2009-11-22
收藏
得分:40 
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main()
{
    int sum=0,item=1;                  //这里最好定义成两个浮点数,float sum=0.0,item=1.0
    for(int n=1; abs(item)>1e-6; ++n)  //10^(-6) 也就是0.000001 计算机中的浮点数没法和0比较,
                                       //有个函数 fabs(item) >1e-6
                                       //如果用数学描述的话应该是和 item!=0.0 等价的
                                //而整数的绝对值才是abs,浮点数是fabs 所以这里应该是浮点数的绝对值,用fabs
                                       
    {
        item*=(-1.0)*(2*n-3)/(2*n-1);   //公式没错是:π=(1-1/3+1/5-1/7+…1/4n-3-1/4n-1)*4
        sum+=item;
    }
    cout<<"Pi = "<<setiosflags(ios::fixed)<<sum*4<<endl;//iso::fixed 是操作符setiosflags 的参数,是以带小数点的形式表示浮点数,这个你不用管,不用理解太深
               
    cin.get();//这个就不用解释了吧。。。
    return 0;
}

下面是正确的版本,我已测试:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main()
{
    float sum=0;
    float item=1;
    for(int n=1; fabs(item)>1e-6; ++n)  
    {
        item*=(-1.0)*(2*n-3)/(2*n-1);
        sum+=item;
    }
    cout<<"Pi = "<<setiosflags(ios::fixed)<<sum*4<<endl;
    cin.get();
    return 0;
}

望及时结贴!!谢谢
2009-12-01 23:21
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
以下是引用ivanjoysky在2009-12-1 23:21:16的发言:

#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main()
{
    int sum=0,item=1;                  //这里最好定义成两个浮点数,float sum=0.0,item=1.0
    for(int n=1; abs(item)>1e ...
非常感谢........
2009-12-02 14:38
快速回复:级数逼近问题,不能理解,大侠帮帮忙.........
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048177 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved