A. C語言編程序,求e的近似值e≈1+1/2!+1/3!+…+1/n!
分析:有兩種情況
(1)計算前n項
源程序如下:
#include<stdio.h>
int
main()
{
double
item=1,sum=1;
int
n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
item*=1.0/i;
sum+=item;
}
printf("The
sum
is
%lf\n",sum);
return
0;
}
(2)計算各項直到最後一項小於10^(-4)
源程序如下:
#include<stdio.h>
#include<math.h>
int
main()
{
double
item=1,sum=1,n=1;
do
{
item*=1.0/n;
sum+=item;
n++;
}while(fabs(item)>=1e-4);
printf("The
sum
is
%lf\n",sum);
return
0;
}
B. R語言:如何r語言編寫程序求e的近似值,精確到10-5
最簡單但計算量最大的是泰勒公式:e=1+1/1!+1/2!+1/3!+1/4!+...
下面是求e的R語言函數:
python">e_fun<-function(n){
etemp<-1
ni<-1L
for(iin1:n){
etemp<-etemp+1/ni
ni<-ni*(i+1)
}
return(etemp)
}
不過你題目中要求的是求到精度為0.00001就停止,所以可以採用repeat循環:
i<-1L
ni<-1L
etemp<-1
repeat{
etemp1<-etemp
etemp<-etemp+1/ni
ni<-ni*(i+1)
i<-i+1
if(etemp-etemp1<0.00001)break
}
i
etemp
在最後可以看到,求到i=10時,精度就已經達到要求了。
C. c語言編程求sinx的近似值(泰勒展開)
您好,是這樣的:泰勒展開是這個:sinx=x-x^3/3!+x^5/5!-..
下面給出算20項的程序。
#include"math.h"
#include"stdio.h"
void main()
{
double x=0,y=0,z=1,s=1,mynum=0;
int i=1 ,j=0, k=1;
scanf("x=%f",&x);
for(i=1;i<20;i++)
z=1;k=1;
for(j=1;j<=2*i-1;j++)
{
z=x*z;//算j次方
k=k*j;//算階乘}
s=-j*pow(-1,i);//pow(a,b)是a的b次方
z=z*s/k;
mymun=mynum+z;
}
printf("sinx=x-x^3/3!+x^5/5!-..");
printf("sinx=%f",mynum);
getch();
}