https://towardsdatascience.com/building-a-numerical-integration-tool-in-python-from-scratch-a8185449b70a