#include <math.h>
double sin(double x) {
int n = 1;
double term = x;
double result = term;
double sign = -1.0;
while (fabs(term) > 1e-15) { // 控制误差范围,当某一项的绝对值小于1e-15时,停止计算
n += 2;
sign *= -1.0;
term = pow(x, n) / factorial(n);
result += sign * term;
}
return result;
}
double factorial(int n) {
double result = 1.0;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
需要注意的是,由于 sin() 函数的泰勒级数展开式在 x 越大时需要计算的项数也越多,因此这种实现方法可能会在计算较大的角度时效率较低。为了提高效率,可以考虑使用其他的算法或库函数来实现 sin() 函数。 |