已知sinx的泰勒公式展开式sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-…(无穷级数形式),将其转化未带有拉格朗日型余项的n阶麦克劳林公式:
由此可得
#include <stdio.h>
#include<math.h>
double fact(int n)
{
if (n == 0)
return 1;
return fact(n - 1)*n;//求1-(2*n-1)的阶层
}
double fact_2(int n)
{
long sum = 1;
while (n > 1)
{
sum *= n;
n--;
}
return sum;
} //第二种计算阶层的方法
int main()
{
int n = 1, j = 1;//n是项数,j是正负
double x, sinx = 0, order = 1;//x是项,sinx是结果,order是项值
scanf_s("%lf", &x);
while (order >= 1e-3) //精度
{
order = pow(x, 2 * n - 1) / fact(2 * n - 1);
sinx += j * order;
j = -j;
n++;
}
printf("sinx=%lf", sinx );
getchar();
getchar();
return 0;
}