| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 814 人关注过本帖
标题:请帮助算一道题
收藏  订阅  推荐  打印 
simpley
Rank: 3Rank: 3
等级:中级会员
帖子:261
积分:2826
注册:2005-2-23
请帮助算一道题

S1=1/2+1/4+1/8+1/16+1/32+1/64--------1/2^n

S2=1/2+1/9+1/16+1/25+1/36+1/49-------1/(n+1)^2

我认为N在某个值时,会出现S1<S2的情况,但不知道N是几,而且也不能确定这个N值是否真的存在?希望有朋友帮助编程验算一下.
搜索更多相关主题的帖子: tag  
2008-7-13 11:22
simpley
Rank: 3Rank: 3
等级:中级会员
帖子:261
积分:2826
注册:2005-2-23

在本论坛我帮助过不少人,怎么没人帮我一下

myQQ::445750010
2008-7-13 16:08
Rand
Rank: 2
等级:注册会员
帖子:49
积分:664
注册:2008-7-2

每次循环只保留每项相减后的值,知道出现<0
2008-7-13 17:48
longziyong
Rank: 2
来自:四川省威远县
等级:注册会员
帖子:64
积分:758
注册:2007-8-22
查找1000以内是否存在满足要求的n值

#include <math.h>
main(){
   double s1=1/2,s2=1/2;
   int n=2;
   while(n<=1000){
      s1+=1/pow(2,n);
      s2+=1/pow((n+1),2);
      if(s1<s2) break;
      else n+=1;
   }
   if(s1<s2) printf("s1=%f,s2=%f,n=%d\n",s1,s2,n);
   else printf("所求n值不存在!");
}

威龙网: http://www.pdfbbs.com
汇编教程|汇编程序实例|Java教程|JAVA实例|C教程|C实例
2008-7-13 18:00
xuanzilie
Rank: 2
等级:注册会员
帖子:133
积分:1628
注册:2007-7-12

S1 = 1 - 2^(-n)  1减2的负n次方   当n太大了 S1也就无法准确不表示出了
本来S1跟S2接近时的差不是很大
2008-7-13 23:43
leeco
Rank: 4
等级:高级会员
威望:8
帖子:870
积分:9662
注册:2007-5-10

第一个级数是几何级数,一眼就知道极限等于1。
第二个级数是P级数,P=2>1,一眼就知道是发散的。广义上极限等于+∞。
所以正如你所说,这个N值肯定存在。
2008-7-14 01:03
xuanzilie
Rank: 2
等级:注册会员
帖子:133
积分:1628
注册:2007-7-12

6#分析的有道理, 但是这是个离散的就不一定能相交到一起了
2008-7-14 09:21
simpley
Rank: 3Rank: 3
等级:中级会员
帖子:261
积分:2826
注册:2005-2-23

动嘴的多,动手的少.
还一眼就知道是发散的
这是收敛级数,地球人都知道!

myQQ::445750010
2008-7-14 09:56
界水乘风
Rank: 3Rank: 3
等级:中级会员
帖子:195
积分:2340
注册:2008-5-29

先分析一下数学
S1我会求,极限为1。
S2我不会求,只好百度,呵呵。
如果S=1+1/2+1/4+...+1/n^2, S的极限为Pi^2/6,
由此可知S2=Pi^2/6-3/4,约为0.89,
看来LZ的猜想不是很对啊。
2008-7-14 10:30
界水乘风
Rank: 3Rank: 3
等级:中级会员
帖子:195
积分:2340
注册:2008-5-29

#include <stdio.h>
#include <math.h>
#define N 10000000.0

int main(void)
{
    double s1=N/2, s2=N/2;
    for(int i=2; i<5; i++)
    {
        s1 += N/i/i;
        s2 += N/pow(2.0,(i+1));
        if(s1-s2<0.00001) printf("%d\n", i);
    }
    printf("%.4f\n", s1/N);
    printf("%.4f\n", s2/N);
    return 0;
}

贴个测试程序。
PS:原则上i取值应该越大越精确,但是当i到4时,S1已经大于0.90,大于S2的极限,所以s2超过s1的可能已不存在。

[ 本帖最后由 界水乘风 于 2008-7-14 10:51 编辑 ]

[ 本帖最后由 界水乘风 于 2008-7-14 11:37 编辑 ]

[ 本帖最后由 界水乘风 于 2008-7-14 11:39 编辑 ]
2008-7-14 10:49
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.059284 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved