级数逼近:《C++程序设计教程(第二版)》第二章的课后习题。这道题,我希望自己能够作出来,所以回复会比较迟
题目:
对运行中输入的x,计算级数:n
x² n+1 x
1 + x - --- + …(-1) ---
2! n!
-8
要求输出精度为 10 (十的负八次).分别用for和while语句各编写一个程序。
[解决办法]
老实说这个
x² n+1 x
1 + x - --- + …(-1) ---
2! n!
我看的不咋明白
[解决办法]
你说taylor级数,或者maclaulin级数大家就懂了
你这样写出来,别人肯定稀里糊涂的
[解决办法]
#include <iostream>#include <cmath>using namespace std;int main(){ double fact=1.0,x,sum=0; int n=1,co=-1; double tmp=1.0; cin>>x; while(fabs(tmp)>1e-10) { sum+=tmp; fact*=n; n++; co*=-1; tmp=co*x/fact; x*=x; } cout<<sum<<endl; return 0; }
[解决办法]
四楼思路是对的……
不过计算除法时出现了溢出……
以下代码可行,思路请参考4楼……
#include <iostream>#include <cmath>using namespace std;int main(){ double fact=1.0,x,sum=1; int n=1; double tmp=-1.0; cin>>x; while(fabs(tmp)>1e-9) { tmp=-tmp*x/n++; sum+=tmp; } cout<<sum<<endl; return 0;}
[解决办法]
该级数等于Exp(-x),或者说1/e^x,e是自然对数的底
[解决办法]