<?php /****************************/ /* 台形則 */ /* coded by Y.Suganuma */ /****************************/ $pi2 = 2.0 * atan(1.0); $y = daikei(0.0, $pi2, 100, "snx"); printf("result %f\n", $y); /****************/ /* 関数値の計算 */ /****************/ function snx($x) { return sin($x); } /******************************************************/ /* 数値積分(台形則) */ /* x1 : 下限 */ /* x2 : 上限 */ /* n : 分割数 */ /* fun : 関数名(f) */ /* return : 積分値 */ /******************************************************/ function daikei($x1, $x2, $n, $fun) { $s = 0.0; $h = ($x2 - $x1) / $n; $x = $x1; for ($i1 = 0; $i1 < $n-1; $i1++) { $x += $h; $s += $fun($x); } $s = 0.5 * $h * ($fun($x1) + $fun($x2) + 2.0 * $s); return $s; } ?>