C GSL贝塞尔函数示例

问题描述 投票:2回答:1

我尝试了以下代码:

# include <stdio.h> 
# include <gsl/gsl_sf_bessel.h> 
int main (void)
{
double x = 5.0; 
double y = gsl_sf_bessel_j0 (x); 
printf ("JO(%g) =  %.18e\n", x , y);
return(0);
}

我得到的结果是:

JO(5) =  -1.917848549326277019e-01

GSL手册中给出的结果是

-1.775967713143382920e-01 

知道什么是错的吗?

c gsl
1个回答
0
投票

这对我来说确实看起来像个错误。根据changelist,我似乎尚未修复。但是,有两个可能的原因:

  • 文档中的拼写错误。而不是gsl_sf_bessel_j0你应该使用gsl_sf_bessel_J0(非常奇怪的命名)。这给你JO(5) = -1.775967713143382642e-01足够接近所需的答案(虽然我不确定精度)。
  • 文档是正确的,我们需要修复函数本身。

无论如何,由于没有报道,我已经提交了一份错误报告。我一旦获得与此问题相关的任何信息,我计划立即更新此答案。

© www.soinside.com 2019 - 2024. All rights reserved.