1

我正在寻找一种算法,使我能够将数学贝塞尔函数用于复数。现在我发现了一个有希望的结果。(我对贝塞尔函数 Jv 和 Yv 感兴趣,用于实数或复数参数和实数。)

我在 Visual Studio 2010 Express C++ 中工作,现在我想访问那里实现的那些功能。我怎么做?

4

2 回答 2

1

下载此http://www.crbond.com/download/bessel.zip文件并将这些文件添加到您的 Visual Studio 项目中。要使用这些功能,您需要访问#include "BESSEL.h"源文件。

我通过执行以下操作在 Visual Studio 上编译它

  1. 添加_USE_MATH_DEFINES到预处理器定义。
  2. 更改#include <complex.h>#include <complex>
  3. 添加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;
}
于 2013-08-03T23:25:27.460 回答
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是贝塞尔函数的参数。

您可能会问什么是J0J1等,它们是贝塞尔函数,但如果您需要确定哪个是您所拥有的公式中的数值。例如检查 J0 是哪个公式的结果。我不是贝塞尔函数方面的专家。但如果你给我你需要使用的确切公式,我可以测试。

于 2013-08-08T14:56:38.130 回答