/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:C++17.cpp
*作 者:王一锟
*完成日期:2014年11月6日
*版 本 号:v1.0
*
*问题描述:由泰勒公式求sin值
*输出描述:sin(π/2)的值和sin(56°)的值
*/
#include <iostream>
using namespace std;
const double pi=3.1415926;
double myabs(double c);
double mysin(double x);
int main()
{
cout << "sin(π/2)的值为" << mysin(pi/2) << endl;
cout << "sin(56°)的值为" << mysin(pi*2*56/360) << endl;
return 0;
}
double myabs(double c)
{
double d;
if(c>0)
d=c;
else
d=-c;
return d;
}
double mysin(double x)
{
double i=1,a,b,Taylor=0;
int n,m,j;
for(a=x,n=1;myabs(i*a/b)>10e-5;n+=2)
{
for(m=1,a=1;m<=n;++m)
a*=x;
for(j=1,b=1;j<=n;++j)
b*=j;
Taylor=Taylor+i*a/b;
i=-i;
}
return Taylor;
}
输出结果:
总结:虽然整体看起来过程中需要计算的数很多,但是将展式看做a/b的形式,再对a和b分别定义就简单多了。但是不知道一开始写的时候把两个自定义函数反过来就不对了。。。。