FC2ブログ

# ネヴィル補間法 Neville Interpolation
# 引数 X軸 Y軸 X軸補間 (\@X, \@Y, \@PriceX)
# 戻り値 ネヴィル補間法 (@NevilleInterpolation)
sub NEVILLEINTERPOLATION{
my ($X, $Y, $PriceX) = @_;
my @NevilleInterpolation = ();
my @DividedDifference = ();
my $Position = 0;
my $CountX = @$X - 1;
my $Count = @$PriceX - 1;

# 配列数の確認
if(($Count < 0) || ($CountX < 0) || (@$X != @$Y)){
return 0;
}

# 計算
for(my $i = 0; $i <= $Count; $i++){

for(my $j = 1; $j <= $CountX; $j++){
if($j == 1){
for(my $k = $j; $k <= $CountX; $k++){
# 配列の位置
$Position = $k - $j;

$DividedDifference[$Position] = ((($$PriceX[$i] - $$X[$k]) * $$Y[$Position]) + (($$X[$Position] - $$PriceX[$i]) * $$Y[$k])) / ($$X[$Position] - $$X[$k]);
}
}else {
for(my $k = $j; $k <= $CountX; $k++){
# 配列の位置
$Position = $k - $j;

$DividedDifference[$Position] = ((($$PriceX[$i] - $$X[$k]) * $DividedDifference[$Position]) + (($$X[$Position] - $$PriceX[$i]) * $DividedDifference[$Position + 1])) / ($$X[$Position] - $$X[$k]);
}
}
}

# ネヴィル補間法 Neville Interpolation
$NevilleInterpolation[$i] = $DividedDifference[0];
}

return @NevilleInterpolation;
}


参考URL
Neville's algorithm - Wikipedia, the free encyclopedia
Neville algorithm
Neville's Iterated Interpolation
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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