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

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

修正2 3/25
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/GaussianElimination3.txt

修正3 3/25
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/GaussianElimination4.txt

修正4 3/25
なんでソートしようと思ったんだっけ?

# ガウスの消去法 Gaussian Elimination
# 引数 方程式 (\@Equations)
# 戻り値 ガウスの消去法 (@GaussianElimination)
sub GAUSSIANELIMINATION{
my ($Equations) = @_;
my @GaussianElimination = ();
my @TempEquations = @$Equations;
my $Column = $#$Equations;
my $Row = $#{$$Equations[0]};

# 配列数の確認
for(my $i = 1; $i <= $Column; $i++){
if($Row != $#{$$Equations[$i]}){
return 0;
}
}
if($Column != ($Row - 1)){
return 0;
}

# 左上[0][0] == 0 なら入れ替える
if($TempEquations[0][0] == 0){
for(my $i = 1; $i <= $Column; $i++){
if($TempEquations[$i][0] != 0){
($TempEquations[0], $TempEquations[$i]) = ($TempEquations[$i], $TempEquations[0]);
last;
}
}
}

# 上三角行列 前進消去
for(my $i = 0; $i <= $Column; $i++){
# 縦列$j番目 横列$k番目 要素を0にする
for(my $j = ($i + 1); $j <= $Column; $j++){
next if($TempEquations[$j][$i] == 0);

my $PriceI = $TempEquations[$i][$i];
my $PriceJ = $TempEquations[$j][$i];
for(my $k = $i; $k <= $Row; $k++){
my $Diff = ($TempEquations[$j][$k] * $PriceI) - ($TempEquations[$i][$k] * $PriceJ);

$TempEquations[$j][$k] = $Diff;
}
}
}

# 後退代入
$GaussianElimination[$Row - 1] = $TempEquations[$Column][$Row] / $TempEquations[$Column][$Row - 1];
for(my $i = $Column - 1; $i >= 0; $i--){
my $tmp = $TempEquations[$i][$Row];

for(my $j = $Row - 1; $j > $i; $j--){
$tmp = $tmp - ($TempEquations[$i][$j] * $GaussianElimination[$j]);
}

# ガウスの消去法 Gaussian Elimination
$GaussianElimination[$i] = $tmp / $TempEquations[$i][$i];
}

return @GaussianElimination;
}


確認

use warnings;
use strict;

my @xyz = ([2,4,2,8],[4,10,3,17],[3,7,1,11]);
my @Gaussian = &GAUSSIANELIMINATION(\@xyz);
foreach(@Gaussian){
print "$_\n";
}


参考URL
ガウスの消去法 - Wikipedia
ガウスの消去法 画像処理ソリューション

修正1
whileを使うのをやめた

修正2
sortを使うのをやめた
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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