![]() |
Home | Libraries | People | FAQ | More |
#include <boost/math/special_functions/ellint_2.hpp>
namespace boost { namespace math { template <class T1, class T2> calculated-result-type ellint_2(T1 k, T2 phi); template <class T1, class T2, class Policy> calculated-result-type ellint_2(T1 k, T2 phi, const Policy&); template <class T> calculated-result-type ellint_2(T k); template <class T, class Policy> calculated-result-type ellint_2(T k, const Policy&); }} // namespaces
這兩個函數計算第二類不完全橢圓積分E(φ, k)以及完全橢圓積分E(k) = E(π/2, k).
當T1和T2是不同類型的時候,這些函數的返回值的類型使用返回值類型推導法則 來確定: 如果它們是同一種類型,那麼返回值的類型和參數的類型是一樣的.
template <class T1, class T2> calculated-result-type ellint_2(T1 k, T2 phi); template <class T1, class T2, class Policy> calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
返回第二類不完全橢圓積分E(φ, k):
要求 -1 <= k <= 1, 否則返回定義域錯誤.
最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。
template <class T> calculated-result-type ellint_2(T k); template <class T> calculated-result-type ellint_2(T k, const Policy&);
返回第二類不完全橢圓積分E(k):
要求 -1 <= k <= 1, 否則返回定義域錯誤.
最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。
這個函數使用基本的算術運算來計算, 因此運算結果在不同的平台上並沒有太多的差異. 注意:在那些將寬浮點類型給定為窄浮點類型的系統上,函數的返回值具有有效的零誤差. 所有結果的相對誤差都是10的-5次方數量級。
表42.第二類橢圓積分的出錯率
有效數字位數 |
平台和編譯器 |
F(φ, k) |
K(k) |
---|---|---|---|
53 |
Win32 / Visual C++ 8.0 |
峰值=4.6 均值=1.2 |
峰值=3.5 均值=1.0 |
64 |
Red Hat Linux / G++ 3.4 |
峰值=4.3 均值=1.1 |
峰值=4.6 均值=1.2 |
113 |
HP-UX / HP aCC 6 |
峰值=5.8 均值=2.2 |
峰值=10.8 均值=2.3 |
這些混合的抽查測試數據使用functions.wolfram.com的在線計算器計算,隨機測試數據使用1000 bit 的NTL::RR 庫以及這個庫的實現來生成。
這些函數基於卡爾松(Carlson) 積分並使用下面的關係:
且