2011年12月4日日曜日

ルートの計算。その1

自費出版予定の書籍にはルートを求めるプログラムを載せようと思い
何カ月か前に書いてました
しかーし!しばらく放っておいたら何書いてるかわからんw
とりあえず載せますが
更に改良してる版もあり
未完成版ですが
コレ載せるとまたやる気出るかもってかんじでよろしく!
use strict;
use warnings;

#expression:式
my $expression=3;
my $ret01=&in_calc(0,1);
my $ret02=&in_calc($ret01,0.1);
my $ret03=&in_calc($ret02,0.01);
my $ret04=&in_calc($ret03,0.001);
my $ret05=&in_calc($ret04,0.0001);
my $ret06=&in_calc($ret05,0.00001);
my $ret07=&in_calc($ret06,0.000001);
sub get_mul{
# これ以下で大きい数値
my $exp01=$_[0];
# 計算の単位
my $unit01=$_[1];
# 返り値用 1:大きい 0:等しい -1:小さい
my $is_big=0;

my $cmp=$unit01*$unit01;
if ($exp01>$cmp){
$is_big=1;
} elsif ($exp01==$cmp){
$is_big=0;
} else {
$is_big=-1;
}

$is_big
}
sub in_calc{
# 計算結果を入れる
my $exp01=$_[0];
# 計算の単位
my $unit01=$_[1];
# 返り値用
my $ans01=0;
# 乗算の基
my @for_mul;
for (0..9){
$for_mul[$_]=$exp01+($_*$unit01);
}
# 乗算の基を2乗
my @of_mul;
for (0..9){
$of_mul[$_]=$for_mul[$_]*$for_mul[$_];
print "i:$for_mul[$_]:i*i:$of_mul[$_]\n";
}
# X以下で大きい数値を求める
for (0..9){
if ($of_mul[$_]<=$expression){
$ans01=$for_mul[$_];
}
}
print "解の候補:$ans01\n";
$ans01;
}