gpt4 book ai didi

c - math.h 中的函数不返回预期值

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:50 24 4
gpt4 key购买 nike

我正在制作的程序应该计算以下函数:

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;
}

函数 toDegrees 会将 math.h 中函数的默认输出从弧度转换为度数。

没有函数 toDegrees 的预期弧度输出是 -2.07746705002370603998583034482545686045261881310920233482

这确实是输出。

函数 toDegrees 的预期输出度数为 1.881737400858622861572140743032864796565271853728846372576

然而,输出是 -119.030094

我期望的输出是我在 here 中用 x=10y=21 得到的输出。

为什么会发生这种情况,我该如何解决?

我确实放了-lm是编译

最佳答案

这不是编程错误,而是数学错误:三角函数的输入是以度数或弧度为单位的角度,而不是输出。此外,您的转换方式是错误的:您希望将度数转换为弧度,而不是将弧度转换为度数。

#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;
}

在修复了这两个错误后,为 x 输入 10 并为 y 输入 21 会正确返回您想要的 1.881737

关于c - math.h 中的函数不返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58468353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com