FC2ブログ

# スティーブンスン法 Steffensen's Method
# 引数 予想される真の解に近いと思われる値 方程式 ($Solution, \@Equations)
# 戻り値 スティーブンスン法 ($SteffensensMethod)
sub STEFFENSENSMETHOD{
my ($Solution, $Equations) = @_;
my $SteffensensMethod = 0;
my $X = $Solution;
my $PrevX = 0;
my $Limit = 100;
my $Epsilon = 1.0e-10;
my $Degree = @$Equations - 1;

# 配列数と解の確認
if(($Degree < 0) || ($Solution == 0)){
return 0;
}

# 計算
for(my $i = 0; $i <= $Limit; $i++){
my $Fx = 0;
my $Gx = 0;
my $Sum = 0;

# 分子
for(my $j = 0; $j <= $Degree; $j++){
$Fx += $$Equations[$j] * ($X ** ($Degree - $j));
}
# 分母
for(my $j = 0; $j <= $Degree; $j++){
$Sum += $$Equations[$j] * (($X + $Fx) ** ($Degree - $j));
}
$Gx = ($Sum - $Fx) / $Fx;

# 近似解
$PrevX = $X;
$X = $X - ($Fx / $Gx);
# スティーブンスン法 Bailey's Method
$SteffensensMethod = $X;

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

return $SteffensensMethod;
}



x^2 - 2 = 0

my $Solution = 1;
my @Equations = (1,0,-2);
my $Steffensen = &STEFFENSENSMETHOD($Solution, \@Equations);
print "$Steffensen\n";


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

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

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

検索フォーム


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