我正在使用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)*
*
答案 0 :(得分:0)
GSL并不直接支持复杂参数的椭圆积分的评估。你必须自己做一些数学计算实部和虚部。
可以在Abramowitz and Stegun中找到所需的转换。方程式17.4.11。
其中lambda和mu的值作为phi和psi的函数给出。
请注意,它们使用的表示法与GSL文档稍有不同。其中m在函数的GSL版本中是k ^ 2。