首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

级数逼近:《C++程序设计教程(第二版)》第二章的课后习题。这道题,小弟我希望自己能够作出来,所以回复会比较迟

2012-09-29 
级数逼近:《C++程序设计教程(第二版)》第二章的课后习题。这道题,我希望自己能够作出来,所以回复会比较迟题目

级数逼近:《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级数大家就懂了
你这样写出来,别人肯定稀里糊涂的
[解决办法]

C/C++ code
#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楼……
C/C++ code
#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是自然对数的底
[解决办法]
探讨
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double fact=1.0,x,sum=0; //将fact和sum定义成双精度因为要求输出为有精度的值
    int n=1,co=-1;//n就是算是里面的n
    double tmp=1.0;          //tmp应该可以在上面一起定义吧?
    cin>>x;                  //输入一个数放到x中
    while(abs(tmp)>1e-8)    //对于这里我修改了一下,可能是题目没看清吧或者我理解错了他的意思?这个终止条件我在书上看了很多次,就是不明白为什么
    {
        sum+=tmp;            //sum用于累加tmp的值
        fact*=n;            //fact是用来表示n的阶乘的吧。我记得应该还有一种除以n的方法吧?
        n++;                //n的增量,让n不断加一变化
        co*=-1;            //co用来变化每一项的符号
        tmp=co*x/fact;      //这个应该算是通项吧
        x*=x;              //这个用来让x呈现出x的n次方
    }
    cout < <sum < <endl;        //输出结果
    return 0;
}                        //为什么结果不正确呢?

热点排行