不用#include<math.h>上面两段代码怎么连起来使用并得到正确的结果
时间: 2023-09-12 19:08:02 浏览: 154
可以将第一个代码中的 `float fasin(float x)` 函数改写为 `double fasin(double x)` 函数,并将函数中用到的 pi 常数定义为宏:
```c
#define PI 3.14159265358979323846
double fasin(double x) {
x = (x / 180.0) * PI; //将度数转化为弧度
double sum = x;
double k = -1.0;
double eve = x; //第一项
double n = 0;
while (eve < -1e-6 || eve > 1e-6) {
eve = -1.0 * x * x * eve / ((n + 2.0) * (n + 3.0)); //第n项
sum += eve;
n += 2.0;
}
return sum;
}
```
然后在第二个代码中,用 `fasin` 函数替换掉 `math.h` 中的 `asin` 函数,即将 `arcsin(y)` 改为 `fasin(y)`:
```c
#include <stdio.h>
double fasin(double x);
double arcsin(double y) {
double x0 = y; //初始值
double x1 = 0;
double eps = 1e-8; //精度要求
int i = 0; //迭代次数
while (1) {
x1 = x0 - (sin(x0) - y) / cos(x0); //牛顿迭代公式
if (fabs(x1 - x0) < eps) //满足精度要求
break;
x0 = x1;
i++;
if (i > 1000) //迭代次数过多,可能陷入死循环,强制退出
break;
}
return x1;
}
int main() {
double y = 0.5;
printf("arcsin(%lf) = %lf\n", y, fasin(y));
return 0;
}
```
这样就可以不使用 `math.h` 库,连起来计算反正弦函数并得到正确的结果了。
阅读全文