gpt4 book ai didi

c - 为什么 math.h 库中的 tanh 函数会给出错误的结果?

转载 作者:行者123 更新时间:2023-12-02 06:29:39 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<math.h>
#define PI 2*acos(0.0)
int main(void)
{
double theta;
theta=tanh(1/(sqrt(3.0)));
printf("With tanh function = %lf\n",theta);
printf("Actual value = %lf\n",PI/6.0);
return 0;
}

输出:

使用 tanh 函数 = 0.520737

实际值 = 0.523599

为什么这两个值不同?应该和我的理解一样。

最佳答案

你的身份完全错了。

真实身份是

tanh-1(i ⁄ √3) = πi ⁄ 6(其中 i 是虚数单位,√-1)

C11 可以轻松验证:

#define _XOPEN_SOURCE 700
#include<stdio.h>
#include<math.h>
#include<complex.h>

int main(void)
{
complex double theta=catanh(I/sqrt(3.0));
printf("With atanh function = %lf\n",cimag(theta));
printf("Actual value = %lf\n",M_PI/6);
return 0;
}

(在 coliru 上直播:http://coliru.stacked-crooked.com/a/f3df5358a2be67cd):

With atanh function = 0.523599
Actual value = 0.523599

M_PI 将位于任何 Posix 兼容系统的 math.h 中。显然,在 Windows 上你使用

#define _USE_MATH_DEFINES

但我不知道 Visual Studio 是否支持 complex.h

关于c - 为什么 math.h 库中的 tanh 函数会给出错误的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42569152/

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