(它将 xi 值输出为列数组)
$$y = f(x)$$
(它将 y 的对应值输出为列数组)
h*trapz(y)
考虑例 8.72 中的积分并取八个条带,命令
a = 1; b = 2; n = 8; h = (b – a)/n; x = (a:h:b)';
$$y = 1./x;$$
(注意使用 ./,因为我们处理的是数组。)
h*trapz(y)
返回精确到小数点后 4 位的答案 0.6941,与给定解中 T(0.125) 的值相符。
例 8.73 计算积分 $\int_0^1 \sqrt{1 + x^2} dx$ 精确到小数点后 5 位,使用梯形法则和外推法。
解 与之前一样,我们从一个条带开始,因此 $h = 1$ 和 $T(1) = \frac{1}{2} (f_0 + f_1)$ ,其中 $f_0 = f(x_0) = f(0) = 1.000000$ 和 $f_1 = f(x_1) = f(1) = 1.414214$ 。因此 $T(1) = 1.207107$ 。接下来我们设 $h = \frac{1}{2}$ ,并在 $x = \frac{1}{2}$ , 得到一个新的 $f_1 = \frac{1}{2}\sqrt{5} = 1.118034$ 和
$$T(0.5) = hf_1 + \frac{1}{2}T(1)$$
$$= 0.5 \times 1.118034 + 0.603554$$
= 1.162 570
对 T(0.5) 的误差估计为
$$\frac{1}{3}[T(1) - T(0.5)] = 0.014846$$
并且积分值的更好近似由下式给出
1.162 570 − 0.014 846 = 1.147 724
接下来我们再次将区间对分,得到 $h = 0.25$ ,并计算被积函数的新值(在 $x = 0.25$ 和 $x = 0.75$ ):
$$f_1 = f(0.25) = 1.030776 \quad \text{and} \quad f_3 = f(0.75) = 1.25$$
因此
$$T(0.25) = h(f_1 + f_3) + \frac{1}{2}T(0.5) = 1.151479$$