std::sph_legendre, std::sph_legendref, std::sph_legendrel
ヘッダ <cmath> で定義
|
||
double sph_legendre ( unsigned l, unsigned m, double θ ); float sph_legendre ( unsigned l, unsigned m, float θ ); |
(1) | (C++17以上) |
double sph_legendre ( unsigned l, unsigned m, 整数型 θ ); |
(2) | (C++17以上) |
l
、位数 m
、極角 θ
の球面ルジャンドル陪関数を計算します。目次 |
[編集] 引数
l | - | 次数 |
m | - | 位数 |
θ | - | ラジアンで測った、極角 |
[編集] 戻り値
エラーが発生しなければ、l
、m
および θ
の球面ルジャンドル陪関数 (ϕ = 0 の球面調和関数) の値を返します。 ただし球面調和関数は Yml(θ,ϕ) = (-1)m
[
(2l+1)(l-m)! |
4π(l+m)! |
Pm
l(cosθ)eimϕ
として定義されます。 ただし Pm
l(x) は std::assoc_legendre(l,m,x) であり、 |m|≤l です。
コンドン-ショートレーの位相項 (-1)m
が、 std::assoc_legendre の Pm
l の定義から省かれているため、この定義に含まれていることに注意してください。
[編集] エラー処理
エラーは math_errhandling で規定されている通りに報告されます。
- 引数が NaN の場合は、 NaN が返されます。 定義域エラーは報告されません。
- l≥128 の場合、動作は処理系定義です。
[編集] ノート
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 で利用可能であり、パラメータ phi をゼロに設定して呼ぶとこの関数に縮退します。
[編集] 例
#include <cmath> #include <iostream> int main() { // spot check for l=3, m=0 double x = 1.2345; std::cout << "Y_3^0(" << x << ") = " << std::sph_legendre(3, 0, x) << '\n'; // exact solution double pi = std::acos(-1); std::cout << "exact solution = " << 0.25*std::sqrt(7/pi)*(5*std::pow(std::cos(x),3)-3*std::cos(x)) << '\n'; }
出力:
Y_3^0(1.2345) = -0.302387 exact solution = -0.302387
[編集] ��部リンク
Weisstein, Eric W. "Spherical Harmonic." From MathWorld--A Wolfram Web Resource.
[編集] 関連項目
(C++17)(C++17)(C++17) |
ルジャンドル陪多項式 (関数) |