用c++编写一个程序,能够求根据用户命令和所输入锐角计算输出三角函数值。 要求:不能使用C++数学库中的预定义函数,用自定义的函数求各个三角函数值,这里用泰勒级数展开实现,例如: sin(x)=x–(x 3 /3!)+(x 5 /5!)–(x 7 /7!)+… cos(x)=1–(x 2 /2!)+(x 4 /4!)–(x 6 /6!)+… 迭代终止条件为:直到最后分项的绝对值小于0.0000001(即1e-7)。 编程要求及建议 要求能实现六个基本三角函数,简化起见,用一个整数表示用户命令。例如:1表示sin,2表示cos,3表示tan,4表示cot,5表示sec,6表示csc。例如输入为1 30,表示求sin(30)的值。 注意:输入的角度必须先转成弧度(其中圆周率PI取值约定为3.1416),然后再用泰勒公式展开的方式进行计算。 建议每种三角函数用单独的一个函数实现,并且灵活使用三角函数之间的关系,可以简化程序。
时间: 2023-06-15 20:06:45 浏览: 539
以下是一个实现要求的示例程序:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.1416;
double power(double x, int n) {
double res = 1.0;
while (n--) {
res *= x;
}
return res;
}
double factorial(int n) {
double res = 1.0;
while (n > 0) {
res *= n--;
}
return res;
}
double sin(double x) {
double res = 0.0;
double term = x;
int n = 1;
while (fabs(term) >= 1e-7) {
res += term;
term = -term * x * x / ((2 * n) * (2 * n + 1));
n++;
}
return res;
}
double cos(double x) {
double res = 1.0;
double term = 1.0;
int n = 1;
while (fabs(term) >= 1e-7) {
term = -term * x * x / ((2 * n - 1) * (2 * n));
res += term;
n++;
}
return res;
}
double tan(double x) {
return sin(x) / cos(x);
}
double cot(double x) {
return cos(x) / sin(x);
}
double sec(double x) {
return 1.0 / cos(x);
}
double csc(double x) {
return 1.0 / sin(x);
}
int main() {
int command;
double angle;
cin >> command >> angle;
angle *= PI / 180.0;
double res;
switch (command) {
case 1:
res = sin(angle);
break;
case 2:
res = cos(angle);
break;
case 3:
res = tan(angle);
break;
case 4:
res = cot(angle);
break;
case 5:
res = sec(angle);
break;
case 6:
res = csc(angle);
break;
default:
cout << "Invalid command!" << endl;
return 0;
}
cout << res << endl;
return 0;
}
```
这个程序定义了 `sin()`、`cos()`、`tan()`、`cot()`、`sec()`、`csc()` 六个函数来计算对应的三角函数值,每个函数都使用了泰勒级数展开的方式计算。其中 `power()` 和 `factorial()` 函数分别用来计算幂和阶乘,这两个函数也可以用自己实现的方式来替代。
在 `main()` 函数中,首先读入用户命令和角度值,然后将角度值转换为弧度制。接着根据用户命令调用对应的函数计算三角函数值,最后输出结果。
阅读全文