- 136 名前:126 mailto:sage [2009/11/27(金) 11:23:07 ID:???]
- >>130
>>127のコードですが、シンプソンの公式を使ったほうが精度良く、すっきりかけたので こちらのほうを使ってください。 sub calc_integral { my ( $a, $h, $precision, $fx ) = @_; my $s = 0; my $n = 0; while (1) { my $y1 = $fx->( $a + $n*$h ); my $y2 = $fx->( $a + ($n+1)*$h ); my $y3 = $fx->( $a + ($n+2)*$h ); my $ds = $h/3 * ($y1 + 4*$y2 + $y3); $s += $ds; last if $ds < $precision; $n += 2; } return $s; }
|

|