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