要求:误差小于000001
Private Sub Command1_Click()
Dim i%, n&, t!, e!
e = 2
i = 1
t = 1
Do While t > 000001
i = i + 1
t = t / i
e = e + t
Loop
Print "计算了"; i; "项目和是:"; e
Print Exp(1) ‘与上句输出值进行对比以证明算法的正确性
End Sub
这种算法是有问题的,不能达到指定的精度的!t <= 000001 时结束了循环,这个只是到这一项为止,该项的值比精度小,但是不能保证被舍掉的后面部分(无穷项之和)阶乘的倒数之和比指定的精度小!
#include<stdioh>
int main( )
{
int i,j;
long long fact;
long double sum=10;
for (i=1;i<=50;i++)
{
fact = 1;
for(j=1;j<=i;j++)
{
fact =j;
}
sum = sum + ( (long double)1/(long double)fact);
printf("sum=%019Lf\n",sum);
}
printf(" e =%19Lf\n",sum);
// printf("%ld",sizeof(long double));
}
while:::
{
int i=1, j;
long long fact = 1;
long double sum=10 ;
while((float)1/(float)fact>=00001)
{
fact = 10;
j=1;
while( j<=i)
{
fact =j;
j++;
}
i++;
sum +=((long double)1/(long double)fact);
printf("sum=%019Lf\n",sum);
}
printf("sum=%19Lf\n",sum);
}
#include <stdioh>
double fun(int n){
if (n<=1) return 1;
return 10nfun(n-1);
}
int main(){
double e;
int i;
//方法1
e=1;
for(i=1;i<50;i++)
e=e+1/fun(i);
printf("e=%lf\n",e);
//方法2
e=1;i=1;
while(1/fun(i)>000001)
e+=1/fun(i++);
printf("e=%lf\n",e);
}
#include<stdioh>
int main()
{float i,e=10,t=10;
for(i=1;t>=10e-6;i+=1)
{t/=i;
e+=t;
}
printf("e=%f\n",e);
getch();
return 0;
}
以上就是关于编写程序求自然对数e的近似值全部的内容,包括:编写程序求自然对数e的近似值、1.编写程序,根据以下公式求e的值。要求用两种方法进行计算:(1)用for循环,计算前50项。(2)用while循、编写程序,求 e的值。e≈1+1/1!+1/2!+1/3!+…..+1/n! (1) 用for等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)