Approximate Integration:

Implementations of the following numerical integration techniques are given below: Left-hand Riemann sum, Right-hand Riemann sum, Midpoint Rule, Trapezoid Rule, and Simpson's Rule. Modify and evaluate the SageMath code as you wish.

Each function takes as input a function \(f\), an interval \([a,b]\), and an integer \(n\). Recall \(\Delta x = \frac{b-a}{n}\) and \(x_i = a+i\Delta x\) for each \(0\le i \le n\).

Left-Hand Riemann Sum:

The function lefthand_rs outputs the left-hand Riemann sum approximation of \(\int_a^b f(x) dx\) using n partitions of the interval: $$\int_a^bf(x)dx \approx \sum_{i=1}^n f(x_{i-1})\Delta x = \Delta x(f(x_0)+f(x_1)+\cdots +f(x_{n-1})).$$

Right-Hand Riemann Sum:

The function righthand_rs outputs the right-hand Riemann sum approximation of \(\int_a^b f(x) dx\) using n partitions of the interval: $$\int_a^bf(x)dx \approx \sum_{i=1}^n f(x_{i})\Delta x = \Delta x(f(x_1)+f(x_1)+\cdots +f(x_{n})).$$

Midpoint Rule:

The function midpoint_rule outputs the midpoint rule approximation of \(\int_a^b f(x) dx\) using n partitions of the interval: $$\int_a^bf(x)dx \approx \sum_{i=1}^n f(\overline{x}_{i-1})\Delta x,$$ where \(\overline{x}_i\) is the midpoint of inteval \([x_{i-1},x_i]\), which is \(\overline{x}_i=\frac{x_{i-1}+x_i}{2}\).

Trapezoid Rule:

The function trapezoid_rule outputs the trapezoid rule approximation of \(\int_a^b f(x) dx\) using n partitions of the interval: $$\int_a^bf(x)dx \approx \frac{\Delta x}{2}(f(x_0)+2f(x_1)+2f(x_2)+ \cdots + 2f(x_{n-1})+f(x_n)).$$

Simpsons Rule:

The function simpsons_rule outputs the Simpson's Rule approximation of \(\int_a^b f(x) dx\) using n partitions of the interval: $$\int_a^bf(x)dx \approx \frac{\Delta x}{3}(f(x_0)+4f(x_1)+2f(x_2)+4f(x_3)+ \cdots + 2f(x_{n-2})+4f(x_{n-1})+f(x_n)).$$ Note: n must be even.



Piecewise Defined Functions:

Sometimes you may find the need to define \(f\) as a piecewise defined function. For example, suppose you are trying to approximate the integral \(\int_{0}^{10} f(x)~dx\) where $$f(x)=\begin{cases} \displaystyle x,&x\le 5\\ x^2,&x > 5\\ \end{cases} $$ (not that you would not need to approximate in this case since you can easily find antiderivates, but we'll just use it as a simple example).

We can replace the line "f(x) = ..." in the code above with a python function defining \(f\):
def f(x):
    if x<=5:
        return x;
    elif x>5:   # elif means "else if"
        return x^2;
Try to cut-and-paste this code to replace the function \(f\) in Simpson's Rule above.