#!/usr/local/bin/perl -w sub f { my $i = shift; return $capital - $cuota * (1-(1+$i)**(-$n)) / $i; } $capital = 400_000; $n = 30*12; $cuota = 2200; $EPS= 1 -1/3 -1/3 -1/3; $a = $EPS; $b = 1; while (++$count < 1000 || $a==$b){ $m = ($a+$b)/2; $max = f($a); $min = f($b); $mean = f($m); print "$max $min\n"; print "$a $b $m $mean\n"; if ($max*$mean<0){ $b=$m; }elsif ($mean*$min<0){ $a=$m; }elsif ($mean==0 || $max == $min){ last; } } __END__