/****************************/ /* 台形則 */ /* coded by Y.Suganuma */ /****************************/ import java.io.*; public class Test { public static void main(String args[]) throws IOException { double y; Kansu kn = new Kansu(); y = kn.daikei(0.0, 0.5*Math.PI, 100); System.out.println("result " + y); } } /****************/ /* 関数値の計算 */ /****************/ class Kansu extends Daikei { double snx(double x) { double y = Math.sin(x); return y; } } abstract class Daikei { /******************************************************/ /* 数値積分(台形則) */ /* x1 : 下限 */ /* x2 : 上限 */ /* n : 分割数 */ /* return : 積分値 */ /******************************************************/ abstract double snx(double x); double daikei(double x1, double x2, int n) { double s = 0.0; double x, h; int i1; h = (x2 - x1) / n; x = x1; for (i1 = 0; i1 < n-1; i1++) { x += h; s += snx(x); } s = 0.5 * h * (snx(x1) + snx(x2) + 2.0 * s); return s; } }