为什么我缺少 Hermite 多项式 GSL 函数 [libgsl-dev]?

为什么我缺少 Hermite 多项式 GSL 函数 [libgsl-dev]?

我在 ubntu 16.04 上安装了 GSL,使用:

sudo apt-get install libgsl2 libgsl-dev gsl-bin

安装的版本是 2.1+dfsg-2 。这在某些方面有效,但无法计算厄米多项式。测试代码是:

// include files
#include <iostream>
#include <iomanip>
#include <fstream>
#include <math.h>
using namespace std;

#include <gsl/gsl_sf_bessel.h>  // gsl Bessel special function header 
file
//packages I need
#include <gsl/gsl_sf_gamma.h>
#include <gsl/gsl_sf_hermite.h>

int
main (void)
{
  double x = 5.0;   // just a random test value

  double y = gsl_sf_bessel_J0 (x);   // see the GSL manual for details

  cout << "J0(" << x << ") = "
       << setprecision(18) << setw(20) << y << endl;

  y = gsl_sf_hermite_phys(10,x);   // see the GSL manual for details
  cout << "H10(" << x << ") = "
       << setprecision(18) << setw(20) << y << endl;

  return 0;
}

这无法通过 进行编译g++ gsl_test.cpp -lgsl -lgslcblas -lm。错误如下:

gsl_test.cpp:(.text+0xcd): undefined reference to`gsl_sf_hermite_phys'
collect2: error: ld returned 1 exit status

我知道“gsl_sf_hermite_phys”存在,因为我可以在手动安装 gsl 的系统上使用它。如果情况最糟,我可以自己手动安装 gsl,但我希望能够只使用终端命令来安装,并获得完全正常工作且最新的 GSL 安装。

**更新:** 事实证明 gsl/gsl_sf_hermite.h 标头不在 2.1+dfsg-2 中。我一定是在不知不觉中覆盖了旧安装。

我想我的问题是为什么 Hermite 多项式不存在以及如何通过终端安装 GSL 以便它们存在。

答案1

提到的gsl/gsl_sf_hermite.h头文件在较新的 Ubuntu 版本中可用:

相关内容