2.输入两个实数eps和x,用下列公式求cosx的近似值,精确到最后一项的绝对值小于eps。要求定义并调用函数funcos( eps,x )来实现。
输入输出示例
Enter eps: 0.001
Enter x: -3.14
cos(-3.14)= -0.999899
#include <iostream>
#include <cmath>
using namespace std;
double factorial(int n) {
double result = 1.0;
for (int i = 2; i <= n; ++i) {
result *= i;
}
return result;
}
double funcos(double eps, double x) {
double result = 1.0; // 初始值,cos(x)的泰勒级数展开式的第一项
double term = 1.0; // 当前项的值
int n = 0; // 当前项的阶数(从0开始)
while (fabs(term) >= eps) {
n += 2; // 每次增加2,因为cos(x)的泰勒级数展开式中只有偶数阶项
term = pow(-1, n / 2) * pow(x, n) / factorial(n); // 计算当前项
result += term;
}
return result;
}
int main()
{
double eps, x;
cout << "Enter eps: ";
cin >> eps;
cout << "Enter x: ";
cin >> x;
double t = funcos(eps, x);
cout << t << endl;
return 0;
}