c语言n阶泰勒展开计算sinx保留8位小数
时间: 2023-10-22 22:11:26 浏览: 146
要计算sinx的n阶泰勒展开,公式如下:
sin(x) ≈ x - x^3/3! + x^5/5! - x^7/7! + ... + (-1)^n * x^(2n+1) / (2n+1)!
其中,n表示展开的阶数。
为了保留8位小数,需要在计算时控制精度,可以使用double类型进行计算,并在输出时限制小数点后8位。以下是示例代码:
```c
#include <stdio.h>
#include <math.h>
int main()
{
double x, result = 0;
int n, i, sign = 1, fact;
printf("请输入x的值(以弧度为单位):");
scanf("%lf", &x);
printf("请输入展开的阶数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
fact = 1;
for (int j = 1; j <= 2 * i + 1; j++)
{
fact *= j;
}
result += sign * pow(x, 2 * i + 1) / fact;
sign *= -1;
}
printf("sin(%.8lf) ≈ %.8lf\n", x, result);
return 0;
}
```
运行示例:
```
请输入x的值(以弧度为单位):1.5
请输入展开的阶数n:10
sin(1.50000000) ≈ 0.99749499
```
注意,此处使用了math.h库中的pow函数计算幂,需要在编译时链接该库。例如,使用gcc编译时需要添加参数-lm,即:
```
gcc example.c -o example -lm
```
阅读全文