{ "cells": [ { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.4509382\n", "0.0002822507289239055\n" ] } ], "source": [ "from numpy import random,sin,count_nonzero,sqrt\n", "N=10000000\n", "area=2\n", "rng = random.default_rng()\n", "\n", "x = 2*rng.random(N) # space is twice the length random number in x, but this could be also done with specific numpy distributions\n", "y = rng.random(N)\n", "fx = (sin(1/(x*(2-x))))**2\n", "\n", "under_curve = count_nonzero(y < fx)\n", "integral = area*under_curve/N\n", "error = sqrt(integral*(area-integral))/sqrt(N)\n", "print(integral)\n", "print(error)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.4513352496062641\n", "0.00016667578391630662\n" ] } ], "source": [ "from numpy import random,sin,sum,sqrt\n", "N=10000000\n", "area=2\n", "rng = random.default_rng()\n", "\n", "x = 2*rng.random(N) # space is twice the length random number in x, but this could be also done with specific numpy distributions\n", "y = rng.random(N)\n", "fx = (sin(1/(x*(2-x))))**2\n", "\n", "sumf = sum(fx)\n", "sumf2 = sum(fx*fx)\n", "\n", "integral = area*sumf/N\n", "var = (sumf2/N)-((sumf/N)**2)\n", "error = area*(sqrt(var)/sqrt(N))\n", "print(integral)\n", "print(error)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }