Debugging 带复变元的GSL椭圆积分 我使用C++。当使用gsl科学库中定义的椭圆积分时,我得到了以下错误:gsl_sf_ellint_P函数只接受该类型的参数。我知道Mathematica也能处理复杂的输入。有人帮我吗?提前谢谢

Debugging 带复变元的GSL椭圆积分 我使用C++。当使用gsl科学库中定义的椭圆积分时,我得到了以下错误:gsl_sf_ellint_P函数只接受该类型的参数。我知道Mathematica也能处理复杂的输入。有人帮我吗?提前谢谢,debugging,c++11,complex-numbers,gsl,typeconverter,Debugging,C++11,Complex Numbers,Gsl,Typeconverter,错误消息如下所示: *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.1865

错误消息如下所示:

*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)*
*

GSL不直接支持对复变元椭圆积分的求值。你必须自己做一点数学来计算实部和虚部

所需的转换可以在中找到。特别是方程式17.4.11

其中λ和μ的值作为φ和psi的函数给出


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

答案非常清楚!谢谢你,西蒙。我真的很感激!在F函数的第二个参数中,我也看到了复数,但在a&S中,我没有看到转换公式。在Pi函数中,我所有的3个参数都是复数,那该怎么办?再次感谢!请注意,Abramowitz和Stegun只给出了$\cot^2\lambda$和$\tan^2\mu$,这两个参数只确定分支的$\lambda$和$\mu$。