C语言-无限数列满足精度ε

求P的值?

P/2=

1+

1/3+

1/3×2/5+

1/3×2/5×3/7+

1/3×2/5×3/7×4/9+…

求满足精度ε的P值?

分析

每1行为1个求和单元,

每增加1行,

求和单元多乘1个分数(乘数单元),

分子规律1234…

分母规律3579…(差为2的等差数列)

程序

double P(ε)

double s=0.0,t=1.0,ε;

int n;

for (n=1;t>ε,n++)

return (2.0*s);

解释

double P(ε)

/*实型数据用双精度*/

double s=0.0,t=1.0,ε;

/*第一项求和因子为1,没有规律,故直接定义为初始值*/

int n;

for (n=1;t>ε,n++)

/*当t>ε时,继续循环。

当t<=ε时,停止循环,保证精度在ε以下*/

/*每增加1行,多乘1个分数,

分子n,分母2n+1*/

return (2.0*s);

/*P/2=s,P=2s*/

计算过程

已知

s=0,s=s+t,

t=1,t=t×n/(2n+1),

当t=1、n=1时,

s=0+1=1,t=1×1/3=1/3

当t=1/3、n=2时,

s=1+1/3,t=1/3×2/5

当t=1/3×2/5、n=3时,

s=1+1/3+1/3×2/5,t=1/3×2/5×3/7

当t=1/3×2/5×3/7、n=4时,

s=1+1/3+1/3×2/5+1/3×2/5×3/7,

t=1/3×2/5×3/7×4/9

...

当t<=ε时,

停止循环。

相关文章