- 127 名前:126 mailto:sage [2009/11/26(木) 10:06:27 ID:???]
- 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; }
|

|