09/11/26 10:06:27
sub calc_integral {
my ( $a, $h, $precision, $fx ) = @_;
my $n = find_n( $h, $precision, $fx );
my $s = 0;
for my $j ( 1..$n ) {
$s += $fx->( $a + $j*$h );
}
return $h * ( 0.5*$fx->($a) + $s );
}
sub find_n {
my ( $h, $precision, $fx ) = @_;
my $n = 1;
while (1) {
if ( abs( $fx->($n*$h) ) + abs( $fx->($n+1)*$h ) < $precision ) {
last;
}
$n++;
}
return $n;
}