#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 10 14:08:06 2024

@author: sam
"""

def f(x):
    return x**3 + 1

def qtrapn(f,a,b,N): #same as Q1
    h = (b-a)/N
    I = f(a) + f(b)
    for i in range(1,int(N)):
        xi = a + i*h
        I += 2*f(xi)
    I *= h/2
    return I

for i in range(2,11): #for i values from 2 to 10
    result = qtrapn(f,0,2,2**i) #calls function qtrapn with intervals 2**i, which ranges from 4 to 1024, doubling each time
    print(2**i,'intervals =',result)