我正在寻找一种算法,使我能够将数学贝塞尔函数用于复数。现在我发现了一个有希望的结果。(我对贝塞尔函数 Jv 和 Yv 感兴趣,用于实数或复数参数和实数。)
我在 Visual Studio 2010 Express C++ 中工作,现在我想访问那里实现的那些功能。我怎么做?
下载此http://www.crbond.com/download/bessel.zip文件并将这些文件添加到您的 Visual Studio 项目中。要使用这些功能,您需要访问#include "BESSEL.h"
源文件。
我通过执行以下操作在 Visual Studio 上编译它
_USE_MATH_DEFINES
到预处理器定义。#include <complex.h>
为#include <complex>
using namespace std;
到BESSEL.H
如何调用函数的示例:
#include "BESSEL.H"
#include <iostream>
int main() {
double x, i0, i1, k0, k1, i0p, i1p, k0p, k1p;
x = 5.0;
i0 = 1.0;
i1 = 2.0;
k0 = 3.0;
k1 = 4.0;
i0p = 5.0;
i1p = 6.0;
k0p = 7.0;
k1p = 8.0;
bessik01a(x, i0, i1, k0, k1, i0p, i1p, k0p, k1p);
// Results are stored in the variables i0..k1p
cout << i0 << " " << i1 << " " << k0 << " " << k1;
return 0;
}
将上面链接的文件添加到您的项目中:
请注意,您必须编辑掉这些 .cpp 文件和 .h 文件中的旧头文件。更具体:改变
#include<complex.h>
到
#include<complex>
并使用命名空间标准。也为math.h
. 如上图所示,在 main.cpp 中写入:
#include <iostream>
using namespace std;
#include "BESSEL.H"
int main ()
{
complex<double> z = 3;
complex<double> J0;
complex<double> J1;
complex<double> Y0;
complex<double> Y1;
complex<double> J0p;
complex<double> J1p;
complex<double> Y0p;
complex<double> Y1p;
cbessjy01(z,J0,J1,Y0,Y1,J0p,J1p,Y0p,Y1p);
cout<< "J0: " << J0 << "\n";
cout<< "J0p: " << J0p << "\n";
cout<< "J1: " << J1 << "\n";
cout<< "J1p: " << J1p << "\n";
cout<< "Y0: " << Y0 << "\n";
cout<< "Y0p: " << Y0p << "\n";
cout<< "Y1: " << Y1 << "\n";
cout<< "Y1p: " << Y1p << "\n";
cin.get();
return 0;
}
尝试运行程序。z
是贝塞尔函数的参数。
您可能会问什么是J0
、J1
等,它们是贝塞尔函数,但如果您需要确定哪个是您所拥有的公式中的数值。例如检查 J0 是哪个公式的结果。我不是贝塞尔函数方面的专家。但如果你给我你需要使用的确切公式,我可以测试。