还是用的级数表达式
sinx= x/1! -x^3/2! +x^5/5! -x^7/7!
即对 (-1)^(n-1) x^(2n-1)/(2n-1)! 求和
这个跟前面一篇写的求arctan的思想相似
特征:
1.每一项的下一项与该项的符号相反
2.每一项是前一项乘以 x*x/(2n-1)(2n-2) 这里包含了符号
#include<iostream>
#include<cmath>
using namespace std;
const double TINY_VALUE = 1e-10;
double sin(double x)
{
double g = 0;
double t = x;
int n = 1;
do
{
g += t;
n++;
t = -t * x*x / ((2 * n - 1)*(2 * n - 2));
} while (fabs(t) >= TINY_VALUE);
return g;
}
int main()
{
cout<<sin(3.14159/4.0);
return 0;
}
这个拿来测试的大概就是π/4, 结果是二分之根号二,小数出来也差不多