名稱空間
變體
操作

std::comp_ellint_2, std::comp_ellint_2f, std::comp_ellint_2l

來自 cppreference.com
< cpp‎ | 數值‎ | 特殊函式
 
 
 
 
定義於標頭檔案 <cmath>
(1)
float       comp_ellint_2 ( float k );

double      comp_ellint_2 ( double k );

long double comp_ellint_2 ( long double k );
(C++17 起)
(直至 C++23)
/* 浮點型別 */ comp_ellint_2( /* 浮點型別 */ k );
(C++23 起)
float       comp_ellint_2f( float k );
(2) (C++17 起)
long double comp_ellint_2l( long double k );
(3) (C++17 起)
定義於標頭檔案 <cmath>
template< class Integer >
double      comp_ellint_2 ( Integer k );
(A) (C++17 起)
1-3) 計算 k第二類完全橢圓積分 庫為所有 cv-unqualified 浮點型別提供了 std::comp_ellint_2 的過載,作為引數 k 的型別。(C++23 起)
A) 為所有整數型別提供了額外的過載,它們被視為 double

目錄

[編輯] 引數

k - 橢圓模或離心率(浮點或整數值)

[編輯] 返回值

如果未發生錯誤,則返回 k 的第二類完全橢圓積分的值,即 std::ellint_2(k, π/2)

[編輯] 錯誤處理

錯誤可能按 math_errhandling 中指定的方式報告。

  • 如果引數是 NaN,則返回 NaN 且不報告域錯誤。
  • 如果 |k|>1,可能會發生域錯誤。

[編輯] 注意

不支援 C++17 但支援 ISO 29124:2010 的實現,如果實現將 __STDCPP_MATH_SPEC_FUNCS__ 定義為至少 201003L 的值,並且使用者在包含任何標準庫標頭檔案之前定義了 __STDCPP_WANT_MATH_SPEC_FUNCS__,則提供此函式。

不支援 ISO 29124:2010 但支援 TR 19768:2007 (TR1) 的實現,在標頭檔案 tr1/cmath 和名稱空間 std::tr1 中提供此函式。

此函式的實現也在 boost.math 中可用

偏心率為 k、半長軸為 a 的橢圓的周長等於 4aE(k),其中 Estd::comp_ellint_2。當偏心率等於 0 時,橢圓退化為半徑為 a 的圓,周長等於 2πa,所以 E(0) = π/2。當偏心率等於 1 時,橢圓退化為長度為 2a 的線段,其周長為 4a,所以 E(1) = 1

不要求完全按照 (A) 提供額外的過載。它們只需要足以確保對於其整數型別引數 numstd::comp_ellint_2(num) 具有與 std::comp_ellint_2(static_cast<double>(num)) 相同的效果。

[編輯] 示例

#include <cmath>
#include <iostream>
#include <numbers>
 
int main()
{
    constexpr double hpi = std::numbers::pi / 2.0;
 
    std::cout << "E(0) = " << std::comp_ellint_2(0) << '\n'
              << "π/2 = " << hpi << '\n'
              << "E(1) = " << std::comp_ellint_2(1) << '\n'
              << "E(1, π/2) = " << std::ellint_2(1, hpi) << '\n';
}

輸出

E(0) = 1.5708
π/2 = 1.5708
E(1) = 1
E(1, π/2) = 1

[編輯] 參閱

(C++17)(C++17)(C++17)
(不完全)第二類橢圓積分
(函式) [編輯]

[編輯] 外部連結

Weisstein, Eric W. "第二類完全橢圓積分。" 來自 MathWorld — Wolfram Web 資源。