如何在C++中使用贝塞尔函数的提升



>我尝试用C++编写球形贝塞尔函数并使用#include <boost/math/special_functions/bessel.hpp>sph_bessel(v,x)在我的代码中,但发生了错误,说这未在此范围内声明。我用 g++ test 编译.cpp请帮助我。

#include <cmath>
#include <iostream>
#include <boost/math/special_functions/bessel.hpp> 
using namespace std;
int main()
{
// spot check for n == 1
double x = 1.2345;
cout << "j_1(" << x << ") = " << sph_bessel(1, x) << 'n';
}

编译代码:

g++ test.cpp

并给出此错误:

error: ‘sph_bessel’ was not declared in this scope
cout << "j_1(" << x << ") = " << sph_bessel(1, x) << 'n';
a.cpp:9:38: note: suggested alternative:
In file included from a.cpp:3:0:
/usr/include/boost/math/special_functions/bessel.hpp:544:79: note:            ‘boost::math::sph_bessel’
ename detail::bessel_traits<T, T, policies::policy<> >::result_type     sph_bessel(unsigned v, T x)

错误消息告诉您该怎么做:

a.cpp:9:38: note: suggested alternative:
‘boost::math::sph_bessel’

所以代码应该是:

cout << "j_1(" << x << ") = " << boost::math::sph_bessel(1, x) << 'n';

或者您可以添加:

using namespace boost::math;

但强烈建议不要这样做:为什么"使用命名空间 std"被认为是不好的做法?

所以我建议:

namespace bmath = boost::math;

然后代替boost::math::sph_bessel(1, x)你可以写:bmath::sph_bessel(1, x).

相关内容

  • 没有找到相关文章

最新更新