一次方程式を解く
やっつけコーディング。
use YAML; my $matrix = [ # [ 2, 1, 1], # [ 3, 1, 2] [ 2, 1, 21], [ 3, 1, 41] ]; sub equation { my $matrix = shift; # http://gihyo.jp/dev/serial/01/java-calculation/0043?page=2 my $n = $matrix->[0]->[0]; for (my $i = 0; $i < 3; $i++) { $matrix->[0]->[$i] /= $n; } my $m = $matrix->[1]->[0]; for (my $i = 0; $i < 3; $i++) { $matrix->[1]->[$i] -= $matrix->[0]->[$i] * $m; } my $l = $matrix->[1]->[1]; for (my $i = 1; $i < 3; $i++) { $matrix->[1]->[$i] /= $l; } my $k = $matrix->[0]->[1]; for (my $i = 1; $i < 3; $i++) { $matrix->[0]->[$i] -= $matrix->[1]->[$i] * $k; } return ($matrix->[0]->[2], $matrix->[1]->[2] ); } print YAML::Dump equation($matrix);