求三角函数的值 【问题描述】用下列公式求 cos(x),n 为项数,取值≥0,x 为角度的弧度值。要求: (1)输入角度值为度(0 到 360 度)或弧度(0 到 2π)时,均可以计算出对应的三角函数 cos(x)的值; (2)计算精度为:最后一项的绝对值小于 10-6
时间: 2024-09-06 17:01:17 浏览: 56
2020_2021学年高中数学第1章导数及其应用1.2.3简单复合函数的导数课时素养评价含解析苏教版选修2_220210402110
要实现这个功能,你需要将输入的角度值转换成弧度,并利用泰勒级数展开计算余弦值,因为泰勒级数可以提供高精度的结果。以下是基于Maclaurin级数(对于0度角的余弦值)的一般化算法,对于非零角度,可以先通过差分公式(`cos(a - b) = cos(a)*cos(b) + sin(a)*sin(b)`)转换到0度角的情况:
```cpp
#include <iostream>
#include <cmath>
#include <vector>
// 计算cos(x)的泰勒级数,给定n项
double cosine_series(double x, int n) {
double result = 1.0;
for (int i = 1; i <= n; ++i) {
if (i % 2 == 1) { // 奇数项都是负的
result *= -x * x / factorial(i);
} else { // 偶数项都是正的
result += x * x / factorial(i);
}
}
return result;
}
// 计算阶乘
unsigned long long factorial(int n) {
unsigned long long fact = 1;
for (int i = 1; i <= n; ++i) {
fact *= i;
}
return fact;
}
int main() {
double x;
std::cout << "请输入角度(弧度或度):" << std::endl;
std::cin >> x;
// 转换角度为弧度
const double pi = std::acos(-1); // π的近似值
if (x >= 0 && x <= 360) {
x = x * M_PI / 180; // 度转弧度
}
int n = 10000; // 取足够大的项数保证精度
double cos_value = cosine_series(x, n);
if (std::abs(cos_value - std::cos(x)) < 1e-6) {
std::cout << "cos(" << x << ") 的近似值 (n=" << n << ") : " << cos_value << std::endl;
} else {
std::cout << "计算结果可能不准确,建议增大项数" << std::endl;
}
return 0;
}
阅读全文