泰勒展开式

先听故事,再编程序。故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!故事讲完了。不懂吗?好好学高数。否则,挂了不冤。

编程序求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3) 一点说明:数学库(#include)中已经提供了sin和cos函数,一般解题中我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为mysin和mycos。

提示和要求:(1)要求自定义函数要写在main函数之后;(2)自定义函数中求解的效率问题必须考虑(用好迭代方法);(3)关于精度:当最后一项的绝对值小于0.00001时,累加结束(求绝对值的函数也可以自定义实现);(4)为验证求解是否正确,可以调用数学库中相应的函数,输出结果以对比。

#include

#include

using namespace std;

const double pi = 3.1415926;

double mysin(double);

double mycos(double);

double myabs(double); //绝对值

double myDegtoRad(double); //角度转弧度

int main()

{

cout << "sin(π/2)的值为" << mysin(pi / 2) << endl;

cout << "利用库函数得到sin(π/2)的值为" << sin(pi / 2);

cout << endl << endl;

cout << "sin(56°)的值为" << mysin(myDegtoRad(56.0)) << endl;

cout << "利用库函数得到sin(56°)的值为" << sin(myDegtoRad(56.0));

cout << endl << endl;

cout << "cos(87°)的值为" << mycos(myDegtoRad(87.0)) << endl;

cout << "利用库函数得到cos(87°)的值为" << cos(myDegtoRad(87.0));

cout << endl << endl;

cout << "cos(π/3)的值为" << mycos(pi / 3) << endl;

cout << "利用库函数得到cos(87°)的值为" << cos(pi / 3);

cout << endl << endl;

return 0;

}

double mysin(double x)

{

double sum = x, x_pow = x, item;

int n = 1, fact = 1, sign = 1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

sign = -sign;

item = x_pow / fact * sign;

sum += item;

n += 2;

}while (myabs(item) > 1e-5);

return sum;

}

double mycos(double x)

{

double sum = 1, x_pow = 1, item;

int n = 0, fact = 1, sign = -1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

item = x_pow / fact * sign;

sum += item;

sign = -sign;

n += 2;

}while (myabs(item) > 0.00001);

return sum;

}

double myabs(double x)

{

return ((x >= 0)?x:-x);

}

double myDegtoRad(double x)

{

return (x/180) * pi;

}

【项目6扩展(选做)-编制三角函数表】

要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将项目6中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。为取得更好的效果,可以考虑像英尺到米的转换一样,以速查表格的形式给出结果。

#include

#include

using namespace std;

double mysin(double);

double myabs(double);

void show_sin_table(int, int);

const double pi = 3.1415926;

int main()

{

show_sin_table(0, 90);

return 0;

}

void show_sin_table(int iFromAngle, int iToAngle)

{

int x, count = 0;

cout << "由" << iFromAngle << "°到"

<< iToAngle << "°的三角函数表:" << endl;

cout << setiosflags(ios::fixed) <<

setiosflags(ios::right) << setprecision(4);

for (x = 0; x < 3; x++)

cout << setw(8) << " 角度x" << setw(12) << " sin(x)";

cout << "\n";

for (x = iFromAngle; x <= iToAngle; x++)

{

cout << setw(8) << x << setw(12);

cout << mysin(x*pi/180);

if (count%3 == 2) cout << "\n";

++count;

}

cout << "\n";

return;

}

double mysin(double x)

{

double sum = x, x_pow = x, item;

int n = 1, fact = 1, sign = 1;

do

{

fact = fact * (n + 1) * (n + 2);

x_pow *= x*x;

sign = -sign;

item = x_pow / fact * sign;

sum += item;

n += 2;

}while (myabs(item) > 1e-5);//1e-5 到123°就算不了了

return sum;

}

double myabs(double x)

{

return ((x >= 0)?x:-x);

}

正弦函数泰勒展开c语言,C++ 学习笔记_0012_函数(泰勒展开式、三角函数表)相关推荐

  1. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  2. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  3. c语言课程笔记格式,C语言课程学习笔记.docx

    C语言课程学习笔记 C语言基础语言排行榜C--java--objective-C进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西.计算机常用的进制有:十进制.二进制.八进制和 ...

  4. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  5. c语言用户自己建立数据类型,C语言程序设计学习笔记--用户建立数据类型

    C语言程序设计学习笔记--用户建立数据类型. 9.1定义和使用结构体变量 1.定义:C语言允许用户自己建立不同类型数据组合成的组合型数据类型就是结构体 2.形式: struct 结构体名 { 成员表列 ...

  6. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  7. C语言程序设计学习笔记:P3-判断

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  8. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  9. VHDL语言逻辑运算学习笔记

    VHDL语言逻辑运算学习笔记

最新文章

  1. laravel 发送带附件的邮件
  2. IPv4_数据报文首部格式
  3. boost::intrusive::list_base_hook用法的测试程序
  4. Mysql -- SQL常用命令实例
  5. Spring基于IOC容器基本原理
  6. 导入工程后 报错 The import javax.faces cannot be resolved 解决办法
  7. 在Android Studio中将Android工程变为Library使用
  8. 基于HFC实现10Gbps对称数据传输
  9. overlayfs高密 读性能_RFID读写器天线圆极化与线极化的性能区别
  10. 微软“小冰”更加萌了,我们怎么办?
  11. tensorflow object detect API 使用,并修改一部分
  12. 【数据库】数据库系统工程师(软考中级)——学习过程总结
  13. NES模拟器源码阅读
  14. 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子以及角谷定理的计算
  15. Docker学习之六:基于Dockerfile构建镜像
  16. 易语言超人气教程第一课(放弃语言之争)
  17. yii2授权之ACF
  18. Android之HorizontalScrollView(一)
  19. 算法的时间复杂度的计算
  20. 深度学习 | BN层原理浅谈

热门文章

  1. Java引用和C++引用
  2. Linux 数据可视化工具
  3. PHP 无限极分类下拉列表实现
  4. python多窗口传递信息_PyQT5 中两个界面之间数据传递
  5. RFID资产管理系统解决方案
  6. R语言绘图样式设置(符号、线条、颜色、文本属性)
  7. GEE实现图像随机森林分类
  8. keras深度学习安装全过程(2021-08-03)
  9. ubuntu(linux)打开jnlp文件
  10. 宫保虾球,酸甜微辣,一人就能干掉一盘