项目 2-太乐了
/*
?*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;
}
總結
- 上一篇: 非旺玖原装的PL2303,请联系您的供货
- 下一篇: 嵌入式学习之QT学习---14 QT跨平