我正在编制的程序应该计算以下函数:
f(x,y)= 2 sin(x) + cos(y) - tg(x+y)
我试图做到以下几点:
#include<stdio.h>
#include<math.h>
double toDegrees(double radians){
return radians * (180.0 / M_PI);
}
int main(void){
double x,y;
printf("What's the value of x?\n");
scanf("%lf", &x);
printf("What's the value of y?\n");
scanf("%lf", &y);
printf("The values are %lf\n", toDegrees(2*sin(x)+cos(y)-tan(x+y)));
return 0;
}
to degrees函数将函数的默认输出从math.h从弧度转换为度。
不带函数toDegrees的预期输出(弧度)是
-2.07746705002370603998583034482545686045261881310920233482
这确实是产出。
函数toDegrees的预期输出(度)是
1.881737400858622861572140743032864796565271853728846372576
但是,输出是
-119.030094
。我期望的输出是我在here中用
x=10
和y=21
得到的输出。为什么会发生这种情况,我该如何解决?
我把-我是汇编。
最佳答案
这不是编程错误,而是数学错误:三角函数的输入是以度或弧度表示的角度,而不是输出。另外,你的转换方法是错误的:你想把度数转换成弧度,而不是弧度转换成度数。
#include<stdio.h>
#include<math.h>
double toRadians(double degrees){
return degrees * (M_PI / 180.0);
}
int main(void){
double x,y;
printf("What's the value of x?\n");
scanf("%lf", &x);
printf("What's the value of y?\n");
scanf("%lf", &y);
printf("The values are %lf\n", 2*sin(toRadians(x))+cos(toRadians(y))+tan(toRadians(x+y)));
return 0;
}
修复了这两个错误后,输入
10
表示x,输入21
表示y,将正确返回所需的1.881737
。关于c - math.h中的函数未返回期望值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58468353/