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

修正1
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/ZetaFunction2.txt

修正2

# ゼータ関数 Zeta Function
# 引数 次数 変数 ($N, $X)
# 戻り値 ゼータ関数 ($ZetaFunction)
sub ZETAFUNCTION{
my ($X) = @_;
my $ZetaFunction = 0;
my $Zeta = 0;
my $PrevZeta = 0;
my $BinomialCoefficient = 0;
my @PowerX = (1);
my $Sum = 0;
my $Sign = 0;
my $Limit = 100;
my $Epsilon = 1.0e-10;

# 値の確認
if($X == 1){
return 0;
}

# 奇数番目のベルヌーイ数
if(($X <= -2) && (($X - int($X)) == 0) && (($X % 2) == 0)){
# ゼータ関数 Zeta Function
$ZetaFunction = 0;

return $ZetaFunction;
}

# 計算
for(my $i = 0; $i < $Limit; $i++){
$Sum = 1 ** (-$X);
$BinomialCoefficient = 1;

for(my $j = 1; $j <= $i; $j++){
# 符号
$Sign = (($j % 2) == 0 ? 1 : -1);
# 二項係数 Binomial Coefficient
$BinomialCoefficient = $BinomialCoefficient * (($i - ($j - 1)) / $j);
# 累乗
if(@PowerX == $j){
$PowerX[$j] = (($j + 1) ** (-$X));
}

$Sum += ($Sign * $BinomialCoefficient * $PowerX[$j]);
}

# 一つ前
$PrevZeta = $Zeta;
$Zeta += ((2 ** (-($i + 1))) * $Sum);

# 収束判定
last if(abs($Zeta - $PrevZeta) < $Epsilon);
}

# ゼータ関数 Zeta Function
$ZetaFunction = (1 / (1 - (2 ** (1 - $X)))) * $Zeta;

return $ZetaFunction;
}


参考URL
リーマンゼータ関数 - Wikipedia
二項係数の級数とゼータ関数
ゼータ関数 - 高精度計算サイト

修正1
二項係数の出し方を変える

修正2
負の整数で偶数なら、奇数番目のベルヌーイ数になるので0
累乗を配列に入れておく
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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