以下を使用して、ubntu16.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にないことが判明しました。気付かずに古いインストールを上書きしたに違いありません。
私の質問は、なぜエルミート多項式がそこにないのか、そしてそれらがそこにあるようにターミナル経由でGSLをインストールする方法だと思います。
上記のgsl/gsl_sf_hermite.h
ヘッダーファイルは、新しいUbuntuリリースで利用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加