本文主要是介绍泰勒公式--char4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程实现泰勒公式:求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3)
一点说明:数学库(#include<Cmath>)中已经提供了sin和cos函数,一般解题中我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为mysin和mycos。
提示和要求:(1)要求自定义函数要写在main函数之后;(2)自定义函数中求解的效率问题必须考虑(用好迭代方法);(3)关于精度:当最后一项的绝对值小于0.00001时,累加结束(求绝对值的函数也可以自定义实现);(4)为验证求解是否正确,可以调用数学库中相应的函数,输出结果以对比。
#include <iostream>
#include<Cmath> //为便于对比结果,main函数中调用了Cmath中的库函数sin和cos
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);
cout<<",利用库函数求得sin(π/2)的值为"<<sin(pi/2)<<endl<<endl;
cout<<"sin(56°)的值为"<<mysin((56.0/180)*pi);
cout<<",利用库函数求得sin(56°)的值为"<<sin((56.0/180)*pi)<<endl<<endl;
cout<<"cos(87°)的值为"<<mycos((87.0/180)*pi);
cout<<",利用库函数求得cos(87°)的值为"<<cos((87.0/180)*pi)<<endl<<endl;
cout<<"cos(π/3)的值为"<<mycos(pi/3);
cout<<",利用库函数求得cos(π/3)的值为"<<cos(pi/3)<<endl<<endl;
return 0;
}
//下面定义mysin函数
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);
}
这篇关于泰勒公式--char4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!