计算一个数学式子的值?

haime 2010-06-02 09:05:24
计算e^x=1+x/1!+x^2/2!+x^3/3!+…+x^n/n!
设x=1、2、3、4、5、6,分别打印e^x的值,要求精度x^n/n!<0.0001。
那个是e的x次方,以下的是x的二次方,x的立方,直到x的n次方。
用C语言的函数实现,给我讲一下思路。
...全文
153 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao_julians 2010-06-03
  • 打赏
  • 举报
回复
若考虑到x取值允许为负的话,循环条件应该是fabs(t)>0.000001
cao_julians 2010-06-03
  • 打赏
  • 举报
回复
while(t<0.000001);
===============
对不起,循环条件写反了,应该是t>=0.000001
cao_julians 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nbda1121440 的回复:]
引用 7 楼 cao_julians 的回复:
通项公式也写不出?
第1项为x^0/0!,第二项为第1项*x/1,第三项为第二项*x/2, 当当前项<0.000001就不再求sum了


感谢7楼的通项公式,再利用递归思想,楼主的问题的确是比较简单的,代码如下:


C/C++ code
#include <stdio.h>
#include <math.h>

doubl……
[/Quote]
n!和pow(x,n)重复运算过多。
循环迭代就搞定了,用递归效率太低了。
double t=1,sum=1;/*第一项不必算了*/
double x;
int i=1;
printf("x=?");
scanf("%f",&x);
do
{
t=t*x/i;
sum+=t;
i++;
}while(t<0.000001);
....
/* 用double类型算,用float算事倍功半,收敛速度低*/
周靖峰 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cao_julians 的回复:]
通项公式也写不出?
第1项为x^0/0!,第二项为第1项*x/1,第三项为第二项*x/2, 当当前项<0.000001就不再求sum了
[/Quote]

感谢7楼的通项公式,再利用递归思想,楼主的问题的确是比较简单的,代码如下:

#include <stdio.h>
#include <math.h>

double factorial(int n)
{
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}

double func(int x, int n)
{
double temp;

temp = pow(x, n) / factorial(n);
if (temp < 1e-4)
return 0;
else
return temp + func(x, n + 1);
}

int main()
{
int x;
double sum;

for (x = 1; x <= 6; x++)
{
sum = func(x, 0);
printf("e^%d=%lf\n", x, sum);
}
return 0;
}
stein42 2010-06-02
  • 打赏
  • 举报
回复
用个循环能搞定,为什么要递归。
cao_julians 2010-06-02
  • 打赏
  • 举报
回复
通项公式也写不出?
第1项为x^0/0!,第二项为第1项*x/1,第三项为第二项*x/2, 当当前项<0.000001就不再求sum了
whjkjs 2010-06-02
  • 打赏
  • 举报
回复
不懂阁下是忽悠我们还是?
c语言书上这样的题目很多啊!!
haime 2010-06-02
  • 打赏
  • 举报
回复
递归不太会用……
haime 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 z569362161 的回复:]
递归最好些
[/Quote]
递归在书上也是在函数那一章的一节……
haime 2010-06-02
  • 打赏
  • 举报
回复
我既不是新手也不是老手,就是那个精度我搞不出来。
ww884203 2010-06-02
  • 打赏
  • 举报
回复
不知道楼主到底是新手还是老手。
如果是新手,我想说,很简单,写几个函数,式子拼起来就是的。
如果是老手,想要对计算机的精度进行优化,那我只能说,爱莫能助……
z569362161 2010-06-02
  • 打赏
  • 举报
回复
递归最好些

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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