#***************************/
# 台形則 */
# coded by Y.Suganuma */
#***************************/
#***************/
# 関数値の計算 */
#***************/
snx = Proc.new { |x|
Math.sin(x)
}
#*****************************************************/
# 数値積分(台形則) */
# x1 : 下限 */
# x2 : 上限 */
# n : 分割数 */
# fun : 関数名(f) */
# return : 積分値 */
#*****************************************************/
def daikei(x1, x2, n, &fun)
s = 0.0
h = (x2 - x1) / n
x = x1
for i1 in 0 ... n-1
x += h
s += fun.call(x)
end
s = 0.5 * h * (fun.call(x1) + fun.call(x2) + 2.0 * s)
return s
end
pi2 = 2.0 * Math.atan(1.0)
y = daikei(0.0, pi2, 100, &snx)
printf("result %f\n", y)