| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖
标题:为什么输出的π值会越来越小?
只看楼主 加入收藏
圣域2000A
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-9-29
结帖率:0
收藏
 问题点数:0 回复次数:6 
为什么输出的π值会越来越小?
#include "stdafx.h"
#include "stdio.h"
#include "math.h"

double pai(int n)
{
    double mult1 = 1,mult2 = 2,sum = 0.5;
    int index1,index2,index;
    if(n==1)
     ;
    else

        for(index = 2;index <= n;index++)
        {
              for(index1 = 1;index1 <= (2 * index - 3);index1 += 2)
              {
                mult1 *= index1;   
              }

                for(index2 = 1;index2 <= (2 * index - 2);index2 += 2)
                {
                    mult2 *= index2;   
                }
        sum += ((mult1/mult2/(2 * index - 1))*pow(0.5,2 * n - 1));
         
        }

return sum*6;

}

int main(int argc, char* argv[])
{
    int n;  
    int N=1;
    printf("请输入项数:");

    while(scanf("%d",&n)==0||n<=0)
    {
        printf("请输入大于零的整数!!!\n");
    }
    printf("项数N\t\tπ的估计值\n");
   
    while(N<=n)
    {
        printf("%d\t\t%f\n",N,pai(N));
        N++;
   
    }
   
    return 0;
}

w
搜索更多相关主题的帖子: include double 
2015-11-04 15:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
此类问题你首先要描述的是  你使用哪个公式来取π的近似值

DO IT YOURSELF !
2015-11-04 15:39
圣域2000A
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 2楼 wp231957
                 第1项输出0.5
                 第n(n>=2)项的通项为(1*3*5*7*…..*(2n-3))/(2*4*6*8*….*(2n-2))/(2n-1)*0.5^(2n-1)



double pai(int n)
{
    double mult1 = 1,mult2 = 2,sum = 0.5;
    int index1,index2,index;
    if(n==1)
     ;
    else

        for(index = 2;index <= n;index++)
        {
              for(index1 = 1;index1 <= (2 * index - 3);index1 += 2)
              {
                mult1 *= index1;   
              }

                for(index2 = 1;index2 <= (2 * index - 2);index2 += 2)
                {
                    mult2 *= index2;   
                }
        sum += ((mult1/mult2/(2 * index - 1))*pow(0.5,2 * n - 1));
         
        }

return sum*6;
用这部分函数来实现
2015-11-04 16:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这是啥公式  没看懂

比如  当=10时

(1*3*5*7*9*11*13*15*17)/(2*4*6*8*10*12*14*16*18)/19*0.5^19  这东西能求出π来  ???

DO IT YOURSELF !
2015-11-04 16:26
圣域2000A
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 4楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

是这样的sum += ((mult1/mult2/(2 * index - 1))*pow(0.5,2 * n - 1));用这个去累加
2015-11-04 16:32
圣域2000A
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 4楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

是这样的sum += ((mult1/mult2/(2 * index - 1))*pow(0.5,2 * n - 1));用这个去累加
2015-11-04 16:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这个公式太过于繁琐了  
程序代码:
#include<stdio.h>

double mypow(double x,int n)
{
    if(n==0) return 1.0;
    double t=1.0;
    for(;n>0;t*=x,n--);
    return t;
}

int main()
{
   int testn=20;
    int i,j;
    double t=1.0;
    double s=0.0;
    for(i=0;i<=9;i++)
    {
        t=1.0;
        for(j=1;j<=i*2+1;j+=2)
        {
            t*=(1.0*j)/(1.0*j+1);
        }
        t*=1.0/(i*2+3);
        t*=mypow(0.5,i*2+3);
        s+=t;
    }
    double pi=6.0*(0.5+s);
    printf("PI=%.8f\n",pi);
    return 0;
}

DO IT YOURSELF !
2015-11-05 09:09
快速回复:为什么输出的π值会越来越小?
数据加载中...
 
   



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

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