4.8 Trapezoidal rule
Area=n−1∑k=0ak=n−1∑k=0[12(f(xk+1)+f(xk))⋅(xk+1−xk)]
x0=a,xn=b,xk=a+b−ank
∫baf(x)dx=lim
- Exercise: Make an r function for trapezoidal approximation
- Exercise: Demonstrate the trapezoidal rule using MS-Excel
\begin{align*} h &= \frac{b - a}{n} \\ k &= 0, \cdots , n \\ a_k &= \frac{h}{2} (y_k + y_{k+1}) \end{align*}
\begin{equation} \begin{split} \int_a^b f(x) dx & \approx \sum_{k=0}^{n-1} a_k \\ & = h \left( \frac{y_0}{2} + y_1 + y_2 + \cdots + y_{n-1} + \frac{y_n}{2} \right) \end{split} \end{equation}
Practice script
# with two sequences trapez0
## function (x, y)
## {
## n = length(x)
## if (length(y) != n)
## return(NULL)
## fi = vector()
## for (i in 1:(n - 1)) {
## fi[i] = (x[i + 1] - x[i]) * (y[i] + y[i + 1])/2
## }
## return(sum(fi))
## }
## <bytecode: 0x000001e2a3ab7ce8>
## <environment: namespace:math>
# with function, a, b, n trapez1
## function (fx, a, b, n)
## {
## xk = seq(a, b, length.out = (n + 1))
## fk = fx(xk)
## Ar = (b - a)/n * (fk[1]/2 + sum(fk[2:n]) + fk[n + 1]/2)
## return(Ar)
## }
## <bytecode: 0x000001e2a3b02010>
## <environment: namespace:math>
= function(x) exp(-x/100)
fx = function(a, b) 100*exp(-a/100) - 100*exp(-b/100)
ifx
= 0
a = 24
b = 10
n
ifx(a, b) # true value
## [1] 21.34
= c(0, 0.5, 1, 2, 3, 4, 6, 8, 12, 24)
tPoints = fx(tPoints)
y trapez0(tPoints,y)
## [1] 21.35
= seq(a, b, length.out=(n+1))
xk = fx(xk)
yk trapez0(xk, yk)
## [1] 21.34
trapez1(fx, a, b, n)
## [1] 21.34
trapez1(fx, a, b, 10*n)
## [1] 21.34