- #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() 函数。
|