第12周项目2:太乐了(先听故事,再编程序)

来源:互联网 发布:装完ubuntu后 编辑:程序博客网 时间:2024/04/28 19:59
/*  * Copyright (c) 2013, 烟台大学计算机与控制工程学院 * All rights reserved. * 作    者: 孔令玺 * 完成日期:2013 年 11 月  17日 * 版 本 号:v1.0 * * 问题描述: 故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!

  用sin和cos的泰勒展开式编程序,求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3),当最后一项的绝对值小于0.00001时,累加结束(求绝对值的函数也可以自定义函数myabs实现)。
* 样例输入:* 样例输出:* 问题分析: */
#include <iostream>using namespace std;const double pi=3.1415926;double mysin(double);double mycos(double);double myabs(double);   //程序中需要求精度的绝对值,也用自定义函数完成吧int main( ){cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;cout<<"sin(56°)的值为"<<mysin((56.0/180)*pi)<<endl;cout<<"cos(87°)的值为"<<mycos((87.0/180)*pi)<<endl;cout<<"cos(π/3)的值为"<<mycos(pi/3)<<endl;return 0;}double mysin(double x){double sum=x,x_pow=x,item;int n=1,fact=1,sign=1;     //定义变量时赋初值,已经将第一项考虑到累加和sum中do{fact=fact*(n+1)*(n+2);  //fact用于表示阶乘,在公式中作分母x_pow*=x*x;             //x_pow是分子中用于表示阶乘,在公式中作分母sign=-sign;             //确定即将要累加的这一项的符号item =x_pow/fact*sign; //计算出要累加的项sum+=item;              //将该项累加上去n+=2;}while(myabs(item)>1e-5);return sum;}//下面定义mycos函数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;}//下面定义myabs函数double myabs(double x){return ((x>=0)?x:-x);}


原创粉丝点击