2015-04-27 23 views
1

我正在使用C++。使用gsl科學庫中定義的橢圓積分時,出現以下錯誤:gsl_sf_ellint_P函數只接受<double>類型的參數。我知道Mathematica也可以處理複雜的輸入。任何人都可以幫助我嗎?提前致謝!帶複雜參數的GSL橢圓積分

錯誤消息是如下:

*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

GSL不直接支持的複雜參數橢圓積分的評估。你將不得不自己做一些數學來計算真實和虛擬的部分。

需要的轉換可以在Abramowitz and Stegun中找到。具體方程17.4.11。

enter image description here

凡拉姆達和μ的值被給定爲PHI和PSI的功能。

請注意,它們使用的記號與GSL文檔略有不同。在GSL版本的函數中,它們的m是k^2。

+0

非常明確的答案!謝謝西蒙。對此,我真的非常感激!我還在F函數的第二個參數中看到了複數,但在A&S中我沒有看到一個變換公式。那麼Pi函數的所有三個論點都很複雜呢?再次感謝! –