在c语言中,将正弦值的展开式写成自定义函数sinz ,展开式计算到x的13次方/13的阶乘为止,并在main 程序中输入一个角度x,分别输出math函数sin(x)和自定义函数sinz(x)的值以验证
时间: 2024-05-13 09:17:06 浏览: 134
好的,下面是代码实现:
```c
#include <stdio.h>
#include <math.h>
double sinz(double x);
int main()
{
double x, s1, s2;
printf("请输入角度x:");
scanf("%lf", &x);
s1 = sin(x * M_PI / 180); // 使用math库中的sin函数计算
s2 = sinz(x * M_PI / 180); // 使用自定义函数sinz计算
printf("sin(%lf) = %lf\n", x, s1);
printf("sinz(%lf) = %lf\n", x, s2);
return 0;
}
double sinz(double x)
{
double res = x, k = x;
int i, j;
for (i = 3, j = 2; i <= 13; i += 2, j++)
{
k *= (-1) * x * x / (i * (i-1));
res += k;
}
return res;
}
```
该程序中自定义了一个函数`sinz`,利用泰勒展开式计算正弦函数的值。在`main`函数中,用户输入一个角度`x`,然后分别使用`math`库中的`sin`函数和自定义函数`sinz`计算正弦值,并输出结果。
注意,用户输入的角度需要转换为弧度形式。由于C语言中没有提供常量$\pi$,因此需要使用`math`库中的常量`M_PI`,它表示圆周率$\pi$。
运行程序,可以看到如下输出结果:
```
请输入角度x:30
sin(30.000000) = 0.500000
sinz(30.000000) = 0.500000
```
可以看到,`math`库中的`sin`函数和自定义函数`sinz`计算出的正弦值相同,验证了自定义函数的正确性。
阅读全文