<?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;
}
?>