求sinx

还是用的级数表达式
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, 结果是二分之根号二,小数出来也差不多

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/alike_meng/article/details/86479092