- 注册时间
- 2009-5-22
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 38556
- 在线时间
- 小时
|
楼主 |
发表于 2010-8-2 18:18:23
|
显示全部楼层
我自己设计了一个很土的方法,预测出了一个极限值:
$lim_{n->\infty}A_n=0.592746063$
$c++$代码如下:- #include<cstdio>
- #include<math.h>
-
- double a[999999]={0,
- 0.5,
- 0.54119610014619698439972320536639,
- 0.55929631600132353475576392078938,
- 0.56972413396802715322804051835303,
- 0.57581007321162765360503297431458,
- 0.57970275713244352141943997833056,
- 0.58235129508008298007347469183041,
- 0.58424146648984767386035113239817,
- 0.58564155686139651141699566635464,
- 0.58671003405340635980469047312441,
- 0.58754560137670707686509637674778,
- 0.58821247060644326317197307974183,
- 0.58875395365138276709785553207334,
- 0.58920017119372364434464005947868,
- 0.58957262470961612944817110769224,
- 0.5898870137232585,
- 0.5901550299615904,
- 0.5903855332606833};
-
- int i;
- double b[999999],c[999999],d[999999],e[999999];
-
- double f(int i) //f(i)是二次函数(a+bi+ci^2)的倒数,a、b、c的值是根据误差最小的原则拟合出来的。
- {
- return 1/(51.339415-11.69409*i+0.64923801*i*i);
- }
-
- int main()
- {
- for(i=1;i<19;i++)
- {
- b[i]=exp(-log(a[i]-a[i-1])*4/11); //将a数列的相邻两项作差,将差的(-4/11)次方记为b数列
- if(i>1)c[i]=b[i]-b[i-1]; //将b数列的相邻两项作差,记为c数列
- }
- for(i=3;i<19;i++)
- {
- d[i]=exp(-log(c[i-1]-c[i])*4/10); //将c数列的相邻两项作差,将差的(-4/10)次方记为d数列
- if(i>3)e[i]=d[i]-d[i-1]; //将d数列的相邻两项作差,记为e数列
- }
- for(i=5;i<19;i++)
- {
- if(i>5)printf("%d %.16lf %.16lf\n",i,e[i]-e[i-1],f(i)); //输出e数列的相邻两项之差和f(i)的值,看看是否吻合得比较好
- }
- puts("");
- for(i=19;i<999999;i++)
- e[i]=e[i-1]+f(i); //根据f(i)的值延长e数列
- for(i=19;i<999999;i++)
- d[i]=d[i-1]+e[i]; //根据e数列的值延长d数列
- for(i=19;i<999999;i++)
- c[i]=c[i-1]-exp(-log(d[i])*10/4); //根据d数列的值延长c数列
- for(i=19;i<999999;i++)
- b[i]=b[i-1]+c[i]; //根据c数列的值延长b数列
- for(i=19;i<999999;i++)
- a[i]=a[i-1]+exp(-log(b[i])*11/4); //根据b数列的值延长a数列
-
- for(i=0;i<999999;i+=(i>19?i/2:1))
- printf("%6d: %.9lf\n",i,a[i]); //输出a数列
- return 0;
- }
复制代码 运行结果如下:- 6 1.#QNAN00000000000 0.2199037834745008
- 7 1.#QNAN00000000000 0.7731276358192092
- 8 1.#QNAN00000000000 -1.5104089226742774
- 9 1.#QNAN00000000000 -0.7580833345696476
- 10 -0.3713578484461415 -1.4756140029866442
- 11 0.5864595799163581 0.7922522734689024
- 12 0.1712273296721794 0.2221921798644612
- 13 0.1107856277919126 0.1106504524996588
- 14 0.0669381691118112 0.0672368126045807
- 15 0.0456397026485718 0.0454408775614979
- 16 0.0328465962300193 0.0328526923554737
- 17 0.0248567106136584 0.0248944042293199
- 18 0.0195452906191100 0.0195316657192975
-
- 0: 0.000000000
- 1: 0.500000000
- 2: 0.541196100
- 3: 0.559296316
- 4: 0.569724134
- 5: 0.575810073
- 6: 0.579702757
- 7: 0.582351295
- 8: 0.584241466
- 9: 0.585641557
- 10: 0.586710034
- 11: 0.587545601
- 12: 0.588212471
- 13: 0.588753954
- 14: 0.589200171
- 15: 0.589572625
- 16: 0.589887014
- 17: 0.590155030
- 18: 0.590385533
- 19: 0.590585342
- 20: 0.590759776
- 30: 0.591733134
- 45: 0.592235286
- 67: 0.592487243
- 100: 0.592616157
- 150: 0.592681661
- 225: 0.592714218
- 337: 0.592730303
- 505: 0.592738279
- 757: 0.592742224
- 1135: 0.592744172
- 1702: 0.592745132
- 2553: 0.592745605
- 3829: 0.592745838
- 5743: 0.592745952
- 8614: 0.592746009
- 12921: 0.592746037
- 19381: 0.592746050
- 29071: 0.592746057
- 43606: 0.592746060
- 65409: 0.592746062
- 98113: 0.592746063
- 147169: 0.592746063
- 220753: 0.592746063
- 331129: 0.592746063
- 496693: 0.592746063
- 745039: 0.592746063
复制代码 我可以看到,$e$数列的相邻两项之差从$i=13$开始与$f(i)$的值吻合得非常好。
根据$f(i)$的值反推$A$数列,得到$A$数列的极限:$0.592746063$。
不知道这个方法是否正确,也不知道准确度有多高。
我没有时间阅读大量的相关文献。
如果谁知道正规一点的方法,请回帖告知。
如果能根据$1#$的数据直接实现一遍就更好了。 |
|