计算一个数学式子的值?

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语言的函数实现,给我讲一下思路。
...全文
163 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
递归最好些
# 主成分分析PCA降维算法Python实现 - 数据降维和特征提取 ## 项目简介 本项目提供了主成分分析(Principal Component Analysis, PCA)算法的完整Python实现,包含从数据预处理到结果可视化的全套功能。PCA是一种经典的无监督降维算法,通过线性变换将高维数据投影到低维空间,同时保持数据的最大方差,广泛应用于数据降维、特征提取、数据可视化等领域。 ### 功能特点 - **完整的PCA算法实现**:包含数据标准化、协方差矩阵计算、特征分解等核心步骤 - **多种数据生成器**:内置多种类型的测试数据生成功能 - **丰富的可视化功能**:支持解释方差图、散点图、双图、热力图等多种可视化方式 - **灵活的参数配置**:支持自定义主成分数量、标准化选项等 - **全面的分析工具**:包含特征重要性分析、重构误差计算、最优成分数量确定等 - **详细的示例代码**:提供多个应用场景的完整示例 ## 安装说明 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用说明 ```bash # 运行所有演示 pytho ```bash # 运行所有演示 python main.py --demo all # 运行特定演示 python main.py --demo iris # 鸢尾花数据集分析 python main.py --demo high_dim # 高维数据降维 python main.py --demo correlated # 相关性数据分析 python main.py --demo comprehensive # 综合分析 # 指定输出目录 python main.py --output results ```
基于Javaweb的机房管理系统的设计与实现编程环境:idea2022平台,jdk1.8,tomcat8.5编程语言:java语言,编程技术:前端vue,div,css,后端:springboot框架,数据库:mysql5.7版本,Navicat Premium 12插件前台+后台前台学生注册,登录机房安全公告列表, 点击查看详情机房信息列表(点击搜索机房,查看到机房的详细情况)上机预约:选择机房,查看电脑信息,显示多少台电脑,点击可以查看机房的电脑详情,多少空闲的,点击可以预约电脑(填写预约时间,预约人)机房消防检公布设备故障上报:注册的学生也可以进行设备故障报修后台管理员管理员信息管理机房安全公告管理机房消防检查管理(记录每次的消防检查,对检查结果进行公布)教师信息管理维修人员管理注册学生管理,审核机房信息管理(多个机房)设备信息管理(电脑设备)填写CPU,内存,品牌,显卡等基本信息日志信息管理教师教师资料修改机房上机预约管理软件设备报修,查看维修结果硬件设备报修,查看维修结果上机信息管理:设置上机信息,下机信息,查看上机时间,查看到历史上机信息维修人员资料信息修改软件设备报修管理,填写维修结果硬件设备报修管理,填写维修结果设备故障报修管理:主要是针对学生前台提交的报修进行管理,处理学生学生资料修改我的预约信息我的上机:点击选择某个电脑进行上机,只能选择预约同意的电脑进行上机,我的下机:上机结束后,点击可以下机,并且计算出上机时间我的历史上机我的设备故障报修管理

70,026

社区成员

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

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