已知函数
e
x
e^x
ex 可以展开为幂级数
1
+
x
+
x
2
/
2
!
+
x
3
/
3
!
+
⋯
+
x
k
/
k
!
+
⋯
1+x+x2 /2!+x3 /3!+⋯+xk /k!+⋯
1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求
e
x
e^x
ex
的近似值,求和一直继续到最后一项的绝对值小于0.00001。
输入格式:
输入在一行中给出一个实数
x
∈
[
0
,
5
]
x∈[0,5]
x∈[0,5]。
输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。
输入样例:
1.2
输出样例:
3.3201
#include <stdio.h>
#include <math.h>
double fact(int n);
int main(){
double x;
double sum=0.0;
double sum2;
int i;
scanf("%lf",&x);
if(x>=0&&x<=5){
for( i=1;fabs(pow(x,i)/fact(i))>=0.00001;i++){
sum+=pow(x,i)/fact(i);
}
}
sum+=pow(x,i)/fact(i);
sum2=sum+1;
printf("%.4f",sum2);
return 0;
}
double fact(int n){
int i;
double sum=1.0;
for(i=1;i<=n;i++){
sum=sum*i;
}
return sum;
}
- 阶乘,要初始化sum=1
- 题目要求最后一项小于0.00001,循环体
for( i=1;fabs(pow(x,i)/fact(i))>=0.00001;i++)
中并没有加上最后一项,所以出循环后还要把最后一项加上sum+=pow(x,i)/fact(i);
此时i已经是最后的数值,直接加上即可