public double getValueRomberg(double a, double b, double eps) {
		int m, n, i, k;
		double h, ep, p, x, s, q = 0;
		double[] y = new double[10];

		// 迭代初值
		h = b - a;
		y[0] = h * (func(a) + func(b)) * 0.5;
		m = 1;
		n = 1;
		ep = eps + 1.0;

		// 迭代计算
		while ((ep >= eps) && (m <= 9)) {
			p = 0.0;
			for (i = 0; i <= n - 1; i++) {
				x = a + (i + 0.5) * h;
				p = p + func(x);
			}

			p = (y[0] + h * p) * 0.5;
			s = 1.0;
			for (k = 1; k <= m; k++) {
				s = 4.0 * s;
				q = (s * p - y[k - 1]) / (s - 1.0);
				y[k - 1] = p;
				p = q;
			}

			ep = Math.abs(q - y[m - 1]);
			m = m + 1;
			y[m - 1] = q;
			n = n + n;
			h = h * 0.5;
		}

		return (q);
	}