思想原理
為了求解積分值,人們想到一種近似方法。假設要求\(f(x)\)在\([a,b]\)上的積分,將積分區間等長分成\(n\)段,則每兩個分段點之間的距離\(h={b-a}/n\),然后如下圖進行近似
則該區間上的積分值就近似等同於每個小梯形的面積之和。
推導過程

這樣原先的積分\(\int_{a}^bf(x)\)求解,可以進行如下推導
第一個梯形面積:上底\(f(x_0)\) 下底\(f(x_1)\) 高\(h=\frac{b-a}{2}\) ==> 面積$$S_1=\frac{(f(x_0)+f(x_1))h}{2}$$
同理第二個梯形面積 $$S_2=\frac{(f(x_1)+f(x_2))h}{2}$$\[... \]最后一個梯形面積: $$S_{n}=\frac{(f(x_{n-1})+f(x_n))*h}{2}$$
提取公因式\(\frac{h}{2}\),其中\(h=\frac{b-a}{2}\),於是,求和即可得到 $$\sum_{i=1}^nS_i = (\frac{b-a}{2n})[f(x_0)+2\sum_{i=1}^{n-1}f(x_i)+f(x_n)]$$
Result: $$\int_a^bf(x) \approx (\frac{b-a}{2n})[f(x_0)+2\sum_{i=1}^{n-1}f(x_i)+f(x_n)]$$
matlab代碼實現
% matlab自帶的函數求積分
fun = @(x) sin(x);
right = integral(fun,0,1);
fprintf('the right value is %f\n',right);
% 梯形近似
myanswer = trapezoidal(fun,0,1,1000);
fprintf('the appro value is %f\n',myanswer);
% Trapezoidal Rule 梯形規則
% 未設置精度
function re = trapezoidal(f,a,b,n)
h = (b-a)/ n;
y0 = f(a);
yn = f(b);
x0 = a;
sum = 0;
e = b-h;
for i = 1:n
next = x0 + h*i;
sum = sum + f(next);
end
re = (h/2)*(y0+yn+sum*2);
end
Result:

