FC2ブログ
最初
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/AssociatedLegendrePolynomial1.txt

修正1

# ルジャンドル陪多項式 Associated Legendre Polynomial
# 引数 次数 位数 値 ($N, $M, $X)
# 戻り値 ルジャンドル陪多項式 ($AssociatedLegendrePolynomial)
sub ASSOCIATEDLEGENDREPOLYNOMIAL{
my ($N, $M, $X) = @_;
my $AssociatedLegendrePolynomial = 0;
my $Sum = 0;
my $Sign = 0;
my $Factorial = 1;
my $Factorial2N = 1;
my $FactorialNM = 1;
my $FloorNM2 = &FLOORFUNCTON(($N - $M) / 2);

# 次数,位数,値の確認
if(($N < 0) || ($N < $M) || (($M != 0) && (($X < -1) || (1 < $X)))){
return 0;
}

for(my $i = 0; $i <= $FloorNM2; $i++){
# 分子 符号
$Sign = (($i % 2) == 0 ? 1: -1);
# 分子 階乗
if($i == 0){
for(my $j = 2 * ($N - $i); $j > ($N - $i); $j--){
$Factorial2N = $Factorial2N * $j;
}
}else {
$Factorial2N = ($Factorial2N * ($N - ($i - 1))) / (((2 * ($N - $i)) + 1) * ((2 * ($N - $i)) + 2));
}

# 分母 階乗
$Factorial = ($i == 0 ? 1 : $Factorial * $i);
# 分母 階乗
if($i == 0){
for(my $j = ($N - (2 * $i) - $M); $j >= 2; $j--){
$FactorialNM = $FactorialNM * $j;
}
}else {
$FactorialNM = $FactorialNM / ((($N - (2 * $i) - $M) + 2) * (($N - (2 * $i) - $M) + 1));
}

$Sum += (($Sign * $Factorial2N) / ($Factorial * $FactorialNM)) * ($X ** ($N - (2 * $i) - $M));
}

# ルジャンドル陪多項式 Associated Legendre Polynomial
$AssociatedLegendrePolynomial = ((-1) ** ($M)) * (((1 - ($X * $X)) ** ($M / 2)) / (2 ** $N)) * $Sum;

return $AssociatedLegendrePolynomial;
}

# 床関数 Floor Function
# 引数 値 ($X)
# 戻り値 床関数 ($FloorFunction)
sub FLOORFUNCTON{
my ($X) = @_;
my $FloorFunction = 0;
my $Temp = 0;

if($X == int($X)){
$Temp = $X;
}else {
if($X > 0){
$Temp = int($X);
}else {
$Temp = int($X) - 1;
}
}

# 床関数 Floor Function
$FloorFunction = $Temp;

return $FloorFunction;
}


参考URL
4-4 ルジャンドルの多項式,陪多項式
Associated Legendre polynomials - Wikipedia, the free encyclopedia
Legendre Polynomial -- from Wolfram MathWorld
Legendre (and Associated) Polynomials
ルジャンドル陪多項式(グラフ) - 高精度計算サイト

一言
ルジャンドル陪多項式(グラフ)で値を出すと符合が違うときがある
MathWorldにある展開式に当てはめると値が一致するから、一応動作しているのか??

修正1
階乗の計算量を減らす
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS