一、题目

008:计算直到最后一项的绝对值小于10^-7时,停止计算。x由键盘键入。
(书例3.32)

二、代码实现

思路:当最后一项满足绝对值限制条件时,停止累加求和

代码如下:

//008:计算sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...,直到最后一项的绝对值小于10^-7时,停止计算。x由键盘键入
#include<stdio.h>
#include<math.h>
#define eps 1e-7 //定义一个常量,注意不要加分号!!
int main()
{double item=0,sum=0,x;//每一项:item;累加和:sum;int i;printf("please input:\n");scanf("%lf",&x);//注意scanf()接受double类型要用%lfitem=x;for(i=1;fabs(item)>=eps;i++){sum+=item;item*=((-1)*x*x)/(2*i*(2*i+1));//for循环进行累加}printf("sin(%f)=%f\n",x,sum);return 0;
}

运行结果

please input:
4
sin(4.000000)=-0.756803按任意键关闭终端。
please input:
20
sin(20.000000)=0.912945按任意键关闭终端。

暂不考虑精度问题,当输入的x稍微大一点,程序输出便会错误,比如:

please input:
40
sin(40.000000)=1.069746按任意键关闭终端。

这里考虑对变量进行优化,将其全部改成0到2π范围,再进行近似计算(因为sin()是周期函数),使用一个递归即可,修改后如下:

//008:计算sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...,直到最后一项的绝对值小于10^-7时,停止计算。x由键盘键入
#include<stdio.h>
#include<math.h>
#define eps 1e-7 //定义一个常量,注意不要加分号!!
#define pi 3.1415926
double fix_sin(double t)
{double x1;//返回修正后的x值if(t>=0&&t<=2*pi)x1=t;else if(t>0)x1=fix_sin(t-2*pi);elsex1=fix_sin(t+2*pi);return x1;//使用递归来修正
}
int main()
{double item=0,sum=0,x,x2;//每一项:item;累加和:sum;int i;printf("please input:\n");scanf("%lf",&x);//注意scanf()接受double类型要用%lfx2=x;x=fix_sin(x);item=x;for(i=1;fabs(item)>=eps;i++){sum+=item;item*=((-1)*x*x)/(2*i*(2*i+1));//for循环进行累加} printf("sin(%f)=%f\n",x2,sum);return 0;
}

再次计算:

please input:
40
sin(40.000000)=0.745113按任意键关闭终端。
please input:
-150000
sin(-150000.000000)=-0.998696

修改后的代码可以处理更大一点的x(大概输入-20万到20万都行)

C语言 用泰勒展开公式计算sin(x)的值相关推荐

  1. C语言按下列公式计算 求A20的值,2011年全国计算机二级C语言模拟试题及答案(10)...

    一. 单项选择题(共30分,每题1分)1. 下列不正确的转义字符是( ) A.\\ B.\' C.074 D.\0 2. 不是C语言提供的合法关键字是( ) A.switch B.cher C.cas ...

  2. (bok) 利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-... 计算sin(x)的值。要求最后一项的绝对值小于10^(-5), 并统计出此时累计了多少项?

    /*利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...计算sin(x)的值.要求最后一项的绝对值小于10^(-5),并统计出此时累计了多少项? */ #inc ...

  3. java中cos计算公式求cos溢出_用台劳公式计算cos x的值

    咱作业要求用台劳公式计算cos x的值 我实在不想因为这种小问题劳烦各路高手,不过这个程序我捣鼓了两天,不知错在何处,总是不出结果,十分苦恼!因为敬请各位,能帮则帮,感激不尽!!! 台劳公式如下 : ...

  4. 泰勒法计算sin和cos值

    #include <stdio.h> #define pie 3.14 double myabs(double n); double mysin(double x); double myc ...

  5. 用c语言计算sin x 的值,用泰勒公式求sin(x)的近似值

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define PI 3.1415927 double FACT(double x); double fact(int ...

  6. c语言马青公式计算圆周率,数学圆周率计算马青公式π/4=4arctan1/5-arctan1/239如何得出的?...

    共回答了16个问题采纳率:87.5% 设 x = arctan A tan x = A tan 2x = (2 tan x) / (1 - tan^2 x) tan 2x = (2A) / (1 - ...

  7. python编写函数判断三角形_使用Python三角函数公式计算三角形的夹角案例

    题目内容: 对于三角形,三边长分别为a, b, c,给定a和b之间的夹角C,则有:.编写程序,使得输入三角形的边a, b, c,可求得夹角C(角度值). 输入格式: 三条边a.b.c的长度值,每个值占 ...

  8. php如何计算三角函数,使用Python三角函数公式计算三角形的夹角代码示例

    使用Python三角函数公式计算三角形的夹角代码示例 本篇文章小编给大家分享一下使用Python三角函数公式计算三角形的夹角代码示例,对大家的学习有一定的帮助,小编觉得挺不错的,现在分享给大家供大家参 ...

  9. python计算三角函数_使用Python三角函数公式计算三角形的夹角案例

    使用Python三角函数公式计算三角形的夹角案例 题目内容: 对于三角形,三边长分别为a, b, c,给定a和b之间的夹角C,则有:.编写程序,使得输入三角形的边a, b, c,可求得夹角C(角度值) ...

最新文章

  1. 单图像三维重建、2D到3D风格迁移和3D DeepDream
  2. requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...
  3. DELL R740XD 开启 TPM功能
  4. 项目十大管理及5大过程组概览
  5. php ajax sucess 失败,Ajax请求发送成功但不进success的解决方法(图文教程)
  6. kafka不使用自带zk_Kafka监控必备——Kafka-Eagle 2.0.2正式发布
  7. 2018春节前新马泰游
  8. 内部曝料——博文年会之《武林外传》
  9. jenkins插件管理提示“update information obtained:不可用ago”
  10. [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)
  11. Atitit.数据库表的物理存储结构原理与架构设计与实践
  12. idea 修改hosts
  13. mex文件用matlab能打开吗,MATLAB通过mex文件调用C/C++程序
  14. 帝国 cms 列表 php,帝国cms数据表详细中文说明
  15. String s与String s = ““的区别
  16. layer弹出层的位置设置
  17. netopeer-manager手册翻译
  18. 浏览器页面渲染机制-前端原理剖析
  19. 求助应用Netlogo做交通出行方式选择仿真
  20. 用C语言检测文本编码的方法

热门文章

  1. hive整合HBase:HBase table xsg:test05 doesn't exist while the table is declared as an external table
  2. CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  3. Kubernetes kubeadm 证书到期,更新证书
  4. Matlab Bitwise Operator模块
  5. css实现固定宽高比例的div
  6. FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection笔记
  7. 汪光焘:中国城市交通问题、对策与理论需求
  8. 1.机器学习的重要性
  9. pytho中的json序列化与反序列化操作
  10. Linux7清空回收站,centos rm回收站