具有复杂参数的GSL椭圆积分

时间:2015-04-27 16:01:10

标签: debugging c++11 complex-numbers gsl typeconverter

我正在使用C ++。当使用gsl科学库中定义的椭圆积分时,我得到以下错误:gsl_sf_ellint_P函数只接受<double>类型的参数。我知道Mathematica也可以处理复杂的输入。有人帮我这个吗?提前谢谢!

错误消息如下:

*evaporation-dS-xrx.cpp:37:52: error: cannot convert ‘std::complex<double>’ to ‘double’ for argument ‘1’ to ‘double gsl_sf_ellint_F(double, double, gsl_mode_t)’
             sqrt((0.5-I*0.866025)),GSL_PREC_DOUBLE) - (0.107722-I*0.18658)*
*

1 个答案:

答案 0 :(得分:0)

GSL并不直接支持复杂参数的椭圆积分的评估。你必须自己做一些数学计算实部和虚部。

可以在Abramowitz and Stegun中找到所需的转换。方程式17.4.11。

enter image description here

其中lambda和mu的值作为phi和psi的函数给出。

请注意,它们使用的表示法与GSL文档稍有不同。其中m在函数的GSL版本中是k ^ 2。

相关问题