| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···
只看楼主 加入收藏
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:4 
π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···
π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···精度小于10^-5
用函数怎么写,有没有谁知道,急!!!
2011-05-05 13:21
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:1 
#include <iostream>
using namespace std;

double GetPI();

void main()
{
    double dbPI = GetPI();
   
    cout<<"PI = "<<dbPI<<endl;
}

double GetPI()
{
    double dbPI = 0.0;

    double dbTraver = 1.0;

    double dbBuffer = 1.0;

    do {        
        dbPI += dbBuffer;
        dbBuffer *= dbTraver / (2 * dbTraver + 1);
        dbTraver += 1.0;

    } while (2 * dbBuffer > 0.000001); // 因为结束循环时候PI会放大2倍。所以误差值也要放大2倍来比较

    dbPI *= 2;

   
    return dbPI;
}

[ 本帖最后由 yuccn 于 2011-5-5 21:03 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-05 20:57
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 2楼 yuccn
这个看不懂啊,能用#include <stdio.h> 写一个函数吗?
2011-05-06 00:07
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
程序代码:
#include <stdio.h>
// #include <iostream>
// using namespace std;


double GetPI();

void main()
{
    double dbPI = GetPI();
    printf("PI = %lf \n", dbPI);
   
    // cout<<"PI = "<<dbPI<<endl;
}

double GetPI()
{
    double dbPI = 0.0;     // 保存最后的PI结果

    double dbTraver = 1.0; // 用于遍历时候递增

    double dbBuffer = 1.0; // 保存误差值。也就是在循环过程中的 1/3、(1/3)*(2/5)、(1/3)*(2/5)*(3/7)

    do {
        // 计算  1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···
        // 要求误差值不大于0.00001 。也就是 第N次循环的结果减去N - 1 次循环的结果不大于0.00001
        // 就是(1/3)*(2/5)*(3/7)…… 该值两倍小于0.00001时候就可以退出循环了 而循环中 dbBuffer保存了该值
        dbPI += dbBuffer;
        dbBuffer *= dbTraver / (2 * dbTraver + 1);
        dbTraver += 1.0;

    } while (2 * dbBuffer > 0.000001); // // 因为结束循环时候PI会放大2倍。所以误差值也要放大2倍来比较

    dbPI *= 2;

   
    return dbPI;
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-06 08:32
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 4楼 yuccn
谢啦。基本懂了
2011-05-06 11:57
快速回复:π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···
数据加载中...
 
   



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

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