社区
数据结构与算法
帖子详情
求1+1/2+1/3+1/4+1/5+...1/n 的近似公式
liangbch
2004-06-24 10:12:36
我已经知道,当n>6时,有 1+1/2+1/3+1/4+1/5+1/6+...1/n < sqrt(n),但是无法推出更精确的公式,求数学牛人给出更好的近似公式。
...全文
10679
18
打赏
收藏
求1+1/2+1/3+1/4+1/5+...1/n 的近似公式
我已经知道,当n>6时,有 1+1/2+1/3+1/4+1/5+1/6+...1/n < sqrt(n),但是无法推出更精确的公式,求数学牛人给出更好的近似公式。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovesf
2004-07-04
打赏
举报
回复
ln n
kerbcurb
2004-06-30
打赏
举报
回复
to NowCan(((((( ★ ))))))
前边写错了
应该是 1/x和1/(1 + x)的积分
Riemann
2004-06-29
打赏
举报
回复
ln(n)+C, C为Euler常数
shines77
2004-06-28
打赏
举报
回复
ln(1+x)= x - 1/2*x^2 + 1/3*x^3 - 1/4*x^4 + ......
简化就是上面的ln(2)
NowCan
2004-06-28
打赏
举报
回复
还有,比较计算速度时不要IO输出,输出时间实际比计算时间长多了。
NowCan
2004-06-28
打赏
举报
回复
各个编译器的性能问题我以前试过。
VC的整数运算肯定比BCB6快。尤其是int64类型,要快几倍。这个结论是筛100亿素数时发现的。
浮点数就不知道了,我在试试看。
kerbcurb
2004-06-28
打赏
举报
回复
to宝宝,近似计算的话,Gamma(x)可以根据其定义进行积分运算(Romberg算法),速度和精度都很高,但是如果你用VC的话,如果输出超过10^308就会溢出,其他编译器没有这个问题,这里有一个帖子
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2632260
liangbch
2004-06-28
打赏
举报
回复
我来总结一下,数列的和、积与常数 pi, e, γ 的关系
e= 1+1/2!+1/3!+1/4!+...
ln(2)= 1-1/2+1/3-1/4+1/5+......
pi= 4*(1-1/3+1/5-1/7+...)
γ + ln(n)= 1+1/2+1/3+1/4+1/5+......
n!= sqrt(2 *pi * n)* (n/e)^n
Kusk
2004-06-27
打赏
举报
回复
SUM(n) = γ + ln(n) + (1 / 2n) - (1 / 12n^2) + (1 / 120n^4) - epn
其中γ为欧拉常数(楼上已有说明),而误差epn将小于1 / 252n^6
kerbcurb
2004-06-26
打赏
举报
回复
1+1/2+1/3+1/4+1/5+1/6+...1/n小于ln(1 + x)从1到n + 1的积分,大于ln(x)从1到n + 1的积分,你在坐标上画出来,很明显的。
NowCan
2004-06-25
打赏
举报
回复
1+1/2+1/3+1/4+1/5+1/6+...1/n-ln(n),当n->Inf时极限存在,怎么证明?
liangbch
2004-06-25
打赏
举报
回复
to kerbcurb, 等过两天再结帖子,一定不会使你失望。
kerbcurb
2004-06-25
打赏
举报
回复
那个公式的近似准确度应该是很不错的
int main( int argc, char * argv[] )
{
for ( int k = 1; k < 100; k++)
{
double s = 0;
for ( int i = 1; i <= k; i++ )
s += 1.0 / i;
cout << k << " " << s - 0.5772156649 - log( k ) << endl;
}
cin.get();
return 0;
}
以下是n从1到99二者之差
1 0.422784
2 0.229637
3 0.157505
4 0.119823
5 0.0966798
6 0.0810249
7 0.0697313
8 0.0611999
9 0.054528
10 0.0491675
11 0.0447664
12 0.0410884
13 0.0379687
14 0.0352893
15 0.0329631
16 0.0309246
17 0.0291235
18 0.0275207
19 0.026085
20 0.0247917
21 0.0236206
22 0.0225551
23 0.0215816
24 0.0206887
25 0.0198667
26 0.0191075
27 0.0184042
28 0.0177509
29 0.0171423
30 0.0165741
31 0.0160423
32 0.0155436
33 0.015075
34 0.0146338
35 0.0142177
36 0.0138246
37 0.0134526
38 0.0131002
39 0.0127657
40 0.0124479
41 0.0121456
42 0.0118575
43 0.0115828
44 0.0113206
45 0.01107
46 0.0108302
47 0.0106006
48 0.0103805
49 0.0101694
50 0.00996667
51 0.00977188
52 0.00958457
53 0.0094043
54 0.00923068
55 0.00906336
56 0.008902
57 0.00874628
58 0.00859592
59 0.00845064
60 0.00831019
61 0.00817433
62 0.00804284
63 0.00791551
64 0.00779216
65 0.00767258
66 0.00755663
67 0.00744412
68 0.00733492
69 0.00722887
70 0.00712585
71 0.00702572
72 0.00692837
73 0.00683368
74 0.00674154
75 0.00665185
76 0.00656452
77 0.00647945
78 0.00639656
79 0.00631576
80 0.00623698
81 0.00616014
82 0.00608517
83 0.006012
84 0.00594057
85 0.00587082
86 0.00580269
87 0.00573612
88 0.00567106
89 0.00560746
90 0.00554527
91 0.00548444
92 0.00542494
93 0.00536671
94 0.00530972
95 0.00525392
96 0.00519929
97 0.00514578
98 0.00509336
99 0.005042
kerbcurb
2004-06-25
打赏
举报
回复
分数无所谓的,祝你成功
gxqcn
2004-06-24
打赏
举报
回复
令 S(n) = 1+1/2+1/3+1/4+1/5+1/6+...1/n,
则 S(∞) = 1 + (1/2+1/3) + (1/4+1/5+1/6+1/7) + ...
< 1 + (1/2+1/2) + (1/4+1/4+1/4+1/4) + ...
且 S(∞) = 1 + 1/2 +(1/3+1/4) + (1/5+1/6+1/7+1/8) + ...
> 1 + 1/2 +(1/4+1/4) + (1/8+1/8+1/8+1/8) + ...
可推证:1 + k/2 < S(n) < 1 + k,其中 k = log(ln)/log(2),n>2
从上式,可看出S(n)不收敛。
我不知道楼主是如何得到 sqrt(n) 上限的,
但可以肯定上式在更接近S(n)上限(当n>40时)。
看到这个问题,首先想到是叫“欧拉常数”的东西,但在网上遍寻不到,
而后决定用不等式,但如果对整体处理,误差非常大,
所以,我决定分段处理,不想居然成功了!
唉,发贴时,才发现已有更好的结论了。
kerbcurb
2004-06-24
打赏
举报
回复
请参考
http://www.jstvu.edu.cn/xuebao/2003-3/pages/oulachangshu.htm
kerbcurb
2004-06-24
打赏
举报
回复
当n很大时,有:1+1/2+1/3+1/4+1/5+1/6+...1/n = 0.57721566490153286060651209 + ln(n)//C++里面用log(n),pascal里面用ln(n)
0.57721566490153286060651209叫做欧拉常数
liangbch
2004-06-24
打赏
举报
回复
to GXQ:
假设;s(n)=1+1/2+1/3+1/4+..1/n
当 h很大时 sqrt(n+1)
= sqrt(n*(1+1/n))
= sqrt(n)*sqrt(1+1/2n)
≈ sqrt(n)*(1+ 1/(2n))
= sqrt(n)+ 1/(2*sqrt(n))
设 s(n)=sqrt(n),
因为:1/(n+1)<1/(2*sqrt(n))
所以:
s(n+1)=s(n)+1/(n+1)< s(n)+1/(2*sqrt(n))
即求得s(n)的上限
【前端】JS++ HTML/CSS京东商城项目深度全解析
该课程是既JS++ HTML/CSS深度课程后的项目实战课程,该课程完全按照京东企业级网站布局与样式为主线,不仅完成整个首屏及重点部分的布局样式构建,而且详细剖析的开发技巧及开发中遇到问题时的解决方案。
C语言习题,
求
e=1+1/1!+1/2!+1/3!
+...
+1/n!
求
e:输入一个正整数n,计算下式的和(保留4位小数),要
求
使用嵌套循环。 e=1+1/1!+1/2!+1/3!+…+1/n! #include<stdio.h> int main(void) { int i,j,n; double e,item; printf(“Input n:”); scanf("%d",&n); e=1; for (i=1;i<=n;i++){ it...
利用
公式
e=1+1/1!+1/2!+1/3!+1/4!
+...
+1/n!, 计算自然对数的底e(n表示一共有多少项)
利用
公式
e=1+1/1!+1/2!+1/3!+1/4!+…+1/n!, 计算自然对数的底e(n表示一共有多少项)。 public class Practice { public static long factorial(int n){//递归实现阶乘 if(n==0||n==1){ return 1; }else{ ...
C 语言 6.9 利用 e = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / 3! + 1 / 4! + .... + 1 / n! 编程计算e的
近似
值。
方法一: #include<stdio.h> #include <math.h> int main() { int n = 1, count = 1; double e = 1.0 ,term = 1.0 ; long fac = 1 ; for (n = 1 ;fabs(term) >= 1e-5; n++ ) { ...
利用循环语句
求
和:1-1/3+1/5
+...
...+1/2n-1
利用循环语句
求
和:1-1/3+1/5
+...
...+1/2n-1
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章