/*
*2015 烟台大学计算机与控制工程学院
*文件名称: 项目 2-太乐了
*作者:马康泰
*完成日期 :2016年3月12日
*版本号;
项目 2-太乐了】
话说 sin和 cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门
一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公 sin啊。cos说:你不
是去听相声了吗?怎么成这幅摸样了?sin说:是啊,太乐了!
故事讲完了。下面是 sin函数的泰勒展式:
(注:x取弧度值,而非角度值)
用 sin泰勒展式编写程序,求出 sin(π/2)和 sin(56°)的值,精度要求达到小数点后 6位(即当最后
一项的绝对值小于 0.00001时,累加结束,求绝对值的函数也可以自定义函数 myabs实现)。
下面是程序模板,请完成自定义函数的声明和定义,并将 main函数中下划线部分补充完整。
#include <iostream>
using namespace std;
const double pi=3.1415926;
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
cout<<"sin(56°)的值为"<<_____________<<endl;
return 0;
}
//下面定义 mysin函数,求 sin值
//下面定义 myabs函数,求绝对值
提示 1:实际上,C++的数学库(#include<Cmath>)中已经提供了 sin和 cos函数,一般解题中
我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为 mysin和 mycos。
提示 2:程序的输出应该为:sin(π/2)的值为 1;sin(56°)的值为 0.829038
*/
#include <iostream>
#include <cmath>
using namespace std;
const double pi=3.1415926;
int jiecheng(int x);
double myabs(double m);
double mysin(double x);
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
cout<<"sin(56°)的值为"<<mysin((56.0/180.0)*pi)<<endl;
return 0;
}
double mysin(double x)
{
double zhi=1,sum=0,b;
int i=1;
int a;
while (myabs(zhi)>1E-5)
{
a = 2*i-1;
b = pow(x,a);
zhi = b/jiecheng(a);
if(i%2==0)
zhi=-zhi;
sum = sum+zhi;
i++;
}
return sum;
}
int jiecheng(int x)
{
int sum=1;
int i=1;
while(i<x+1)
{
sum *=i;
i++;
}
return sum;
}
double myabs(double m)
{
if(m<0)
m=-m;
return m;
*2015 烟台大学计算机与控制工程学院
*文件名称: 项目 2-太乐了
*作者:马康泰
*完成日期 :2016年3月12日
*版本号;
项目 2-太乐了】
话说 sin和 cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门
一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公 sin啊。cos说:你不
是去听相声了吗?怎么成这幅摸样了?sin说:是啊,太乐了!
故事讲完了。下面是 sin函数的泰勒展式:
(注:x取弧度值,而非角度值)
用 sin泰勒展式编写程序,求出 sin(π/2)和 sin(56°)的值,精度要求达到小数点后 6位(即当最后
一项的绝对值小于 0.00001时,累加结束,求绝对值的函数也可以自定义函数 myabs实现)。
下面是程序模板,请完成自定义函数的声明和定义,并将 main函数中下划线部分补充完整。
#include <iostream>
using namespace std;
const double pi=3.1415926;
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
cout<<"sin(56°)的值为"<<_____________<<endl;
return 0;
}
//下面定义 mysin函数,求 sin值
//下面定义 myabs函数,求绝对值
提示 1:实际上,C++的数学库(#include<Cmath>)中已经提供了 sin和 cos函数,一般解题中
我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为 mysin和 mycos。
提示 2:程序的输出应该为:sin(π/2)的值为 1;sin(56°)的值为 0.829038
*/
#include <iostream>
#include <cmath>
using namespace std;
const double pi=3.1415926;
int jiecheng(int x);
double myabs(double m);
double mysin(double x);
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
cout<<"sin(56°)的值为"<<mysin((56.0/180.0)*pi)<<endl;
return 0;
}
double mysin(double x)
{
double zhi=1,sum=0,b;
int i=1;
int a;
while (myabs(zhi)>1E-5)
{
a = 2*i-1;
b = pow(x,a);
zhi = b/jiecheng(a);
if(i%2==0)
zhi=-zhi;
sum = sum+zhi;
i++;
}
return sum;
}
int jiecheng(int x)
{
int sum=1;
int i=1;
while(i<x+1)
{
sum *=i;
i++;
}
return sum;
}
double myabs(double m)
{
if(m<0)
m=-m;
return m;
}