用C++计算e^x的值,公式:e^x=1+x/1!+x^2/2!+x^3/3!+...

infinite_loop 2008-05-02 04:58:48
我找了个代码,做了点修改:

#include<iostream.h>

unsigned long factory(int);

int main()
{
int n;
cout << "Enter an integer number: " <<endl;
cin >> n;
cout << n << "!=" << factory(n) << endl; //计算n!的值

double e = 0.0;
unsigned long count = 0;
unsigned long Fa = 0;

while (Fa < 1000)
{
Fa = factory(count);
e += 1.0 / Fa;
++count;
}//计算e的值

cout << "e=" << e << endl;

double x,
result = 1;
cout << "Enter a double number: " << endl;
cin >> x;
double sum = 0.0;
Fa = 0;
count = 0;
while (Fa < 1000){
Fa = factory(count);
sum += result / Fa;
result *= x;
++count;
}

cout << "e^x=" << sum << endl;

return 0;
}//计算e^x的值
unsigned long factory(int n)
{
if (n == 0)
return 1;
else
return n * factory(n - 1);
}


如果X很大时,Fa<1000这个判断条件很影响e的值,问题就是如何控制精度。还有我对这个公式e^x=(1+1/1!+1/2!+1/3!+...)^x=1+x/1!+x^2/2!+x^3/3!+...不了解,因为只是初中毕业。

哪位能给出比较好的代码!
...全文
2665 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_db 2008-05-28
  • 打赏
  • 举报
回复
e^x=[e^(x/1000)]^1000
用这个控制精度
visame 2008-05-03
  • 打赏
  • 举报
回复
泰勒展开式,可以无限逼近
kojie_chen 2008-05-02
  • 打赏
  • 举报
回复
高数里的
infinite_loop 2008-05-02
  • 打赏
  • 举报
回复
唉,没辙了。暂时不管这么多,以后学多了精度控制应该就好办了吧~
baihacker 2008-05-02
  • 打赏
  • 举报
回复

//思路和以前那个一样
#include <iostream>
using namespace std;

int main()
{
const double eps = 1e-10;
double result = 1;
double jc = 1;
double x, t = 1;
cin >> x;
for (int i = 1;t > eps * jc; ++i)
{
jc *= i;
t *= x;
result += t/jc;
}
cout.precision(16);
cout << result << endl;
return 0;
}
infinite_loop 2008-05-02
  • 打赏
  • 举报
回复
看错了,能不能详细说一下。你的e^x=1+x/1!+x^2/2!+x^3/3!+...是在0点处的泰勒展开我看不清楚是什么意思。
infinite_loop 2008-05-02
  • 打赏
  • 举报
回复
两个都是我问的,不过这个是算e^x的值。有新问题,看清楚。
baihacker 2008-05-02
  • 打赏
  • 举报
回复
这个问题问过了,我给那个是一般的控制精度的方法
e^x=1+x/1!+x^2/2!+x^3/3!+...是在0点处的泰勒展开

33,323

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧