{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Area under a curve\n", "\n", "**Randall Romero Aguilar, PhD**\n", "\n", "This demo is based on the original Matlab demo accompanying the Computational Economics and Finance 2001 textbook by Mario Miranda and Paul Fackler.\n", "\n", "Original (Matlab) CompEcon file: **demqua01.m**\n", "\n", "Running this file requires the Python version of CompEcon. This can be installed with pip by running\n", "\n", " !pip install compecon --upgrade\n", "\n", "Last updated: 2022-Oct-23\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initial tasks" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from numpy import cos, pi, linspace, array\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def f(x):\n", " return 25 - cos(pi*x)*(2*pi*x - pi + 0.5)**2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "x_range = array([0, 1])\n", "a_b = array([0.25, 0.75])\n", "n = 401\n", "\n", "z = linspace(*a_b, n)\n", "x = linspace(*x_range, n)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=[8,4])\n", "ax.fill_between(z, 0, f(z), alpha=0.35, color='LightSkyBlue')\n", "ax.hlines(0, *x_range, 'k', linewidth=2)\n", "ax.vlines(a_b, 0, f(a_b), color='tab:orange',linestyle='--',linewidth=2)\n", "ax.plot(x,f(x), linewidth=3)\n", "ax.set(xlim=x_range, xticks=a_b,\n", " ylim=[-5, f(x).max()+2], yticks=[0])\n", " \n", "ax.set_yticklabels(['0'], size=20)\n", "ax.set_xticklabels(['$a$', '$b$'], size=20)\n", "\n", "ax.annotate(r'$f(x)$', [x_range[1] - 0.1, f(x_range[1])-5], fontsize=18, color='C0', va='top')\n", "ax.annotate(r'$A = \\int_a^bf(x)dx$', [a_b.mean(), 10] ,fontsize=18, ha='center');" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.7 ('base')", "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.9.7" }, "vscode": { "interpreter": { "hash": "ad2bdc8ecc057115af97d19610ffacc2b4e99fae6737bb82f5d7fb13d2f2c186" } } }, "nbformat": 4, "nbformat_minor": 4 }