{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Jbd9q74gVp3w"
      },
      "source": [
        "<style>\n",
        "  .justified {\n",
        "    text-align: justify;\n",
        "    text-justify: inter-word;\n",
        "  }\n",
        "</style>\n",
        "\n",
        "<div class=\"justified\">\n",
        "\n",
        "# Elementos de cálculo infinitesimal"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Gz-GuWGo_L5G"
      },
      "source": [
        "Este texto es la continuación de [Elementos de redes neuronales](../alfa/redes.ipynb). Mi propósito es obtener geométricamente la integral a partir de la derivada."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FdfgXdsKK8pO"
      },
      "source": [
        "### La integral demostrada según el orden geométrico\n",
        "\n",
        "Así como la derivada nace de la pendiente, podemos entender a la integral a partir del área. En particular, la integral nos ayuda a determinar el área bajo cualquier segmento de una función. \n",
        "\n",
        "Por ejemplo, digamos que tengo la siguiente función cuadrática y deseo obtener el área del segmento denotado por las líneas punteadas:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "yz01uvKrfG0t"
      },
      "outputs": [],
      "source": [
        "!pip install matplotlib --upgrade"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "7HTreJO9fIuP"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 442
        },
        "id": "rSPYJ0lk6AHP",
        "outputId": "b5e62bc9-3ba8-44a0-b20a-d53438dcb7de"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 720x504 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "x = np.arange(0, 21, 2)\n",
        "def f(x): return x**2\n",
        "y = f(x)\n",
        "\n",
        "fig, ax = plt.subplots(figsize=(10, 7))\n",
        "ax.plot(x, y, color='blue') \n",
        "plt.xticks(ticks=x)\n",
        "ax.set_facecolor('black')\n",
        "ax.set_xlabel('Valores de x')\n",
        "ax.set_ylabel('Valores de y / f(x)')\n",
        "ax.hlines(y=0, xmin=10, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10, ymin=0, ymax=10**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=12, ymin=0, ymax=y[6], linewidth=1, color='white', linestyles='dashed')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7wU4ZJpBHxFS"
      },
      "source": [
        "Una posible aproximación podría obtenerse mediante las áreas del rectángulo y el triángulo que pueden formarse debajo:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 442
        },
        "id": "g2dayXv_LDgK",
        "outputId": "398dd3c2-13cf-4076-97e3-94354a59e299"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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8C/gXuCaiHNJj7V3UY4dO5ZZs2bRunXraq1FWV0qyERERKQCBwN3Ay8Bp0WbShp16NCBs846a91dlNm+RLkhDYYVERGRJHYF/guUAh2BpdGmkwY77rgjn332GQC77747H374YTY/XoNhRUREpDIaEoy3WAF0I9+LsbWXKD/66CPatWsHkO1irEIaeyEiIiIb2BQYB2wHHAR8Hm061dSiRQseeeQR2rdvz6233sq7774bdUq/oYJMREREyjDgQaAdcAxQHG061dSzZ09GjBiBmXHMMccwduzYqFMqlwoyERERKWMwcCxwLhDdXYfpsttuuzF79mz69OnD3Llzo04nKTX1i4iISOhUYChwO3BmxLlUXYsWLWjatCmvv/46ZkYikeCXX36JOi1QU7+IiIhUrAtwB/AMcE60qVRDz549mT59OiNGjKCgoAB3z5VirEIqyERERGq8vYFHgXeB44HV0aZTBYWFhdx000089dRTzJ49m06dOrF6df4ch3rIREREarQmwLMEYy2OBH6MNp0qqF+/Pi+99BLt27fnlltu4eKLL+bnn3+OOq1KUUEmIiJSY21GcIlyC+AAYEG06VTRsmXLmDFjBtddd13O3kW5MWrqFxERqZEKCO6i7Ax0ByZGm04lFRYWcuWVV3Lvvfcya9asqNNJVfab+s1sEzN728zeNbMPzOzf4faWZjbVzGab2SNmVjvcXif8fnb4fItM5SYiIiK3Ekzg/xv5Voy1aNGC119/nYsvvpju3btHnU56uHtGgmCy3Gbh40JgKrAfQdfg8eH2ocDp4eMzgKHh4+OBR1L4DFcoFAqFQlHZONfBHQbnQC6Vi549e/o333zj3377rR999NGR51PJKE5a02SqINugcKoLTAf2BZYAiXD7/sDE8PFEYP/wcSJ8nakgUygUCoUinXGUw2qHxxwsB/JJPY499lh3d3/77be9ZcuWkedThUhakGV07IWZFZhZCbAYeBH4DPjO3VeFL5lPcHsH4dcvAMLnlwJbl7PPAWZWbGb5vZaDiIhI1rUDRgFvAycS1Aj549lnn2XgwIEccMABOT11vyoyWpC5+2p3bwU0BdoDu6Zhn8PdvW2ypjgREREpTwtgPLAI6AGsiDSbVPXs2ZOpU6dSv359VqxYweDBg/NupEUqsjIY1t2/AyYRXKLc0szWjttoCpSGj0uBZgDh81sA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",
            "text/plain": [
              "<Figure size 720x504 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "x = np.arange(0, 21, 2)\n",
        "def f(x): return x**2\n",
        "y = f(x)\n",
        "\n",
        "fig, ax = plt.subplots(figsize=(10, 7))\n",
        "ax.plot(x, y, color='blue') \n",
        "plt.xticks(ticks=x)\n",
        "ax.set_facecolor('black')\n",
        "ax.set_xlabel('Valores de x')\n",
        "ax.set_ylabel('Valores de y / f(x)')\n",
        "ax.hlines(y=0, xmin=10, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=100, xmin=10, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10, ymin=0, ymax=10**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=12, ymin=0, ymax=y[6], linewidth=1, color='white', linestyles='dashed')\n",
        "ax.axline((11, 11**2), slope=2*11, color='white', linestyle='dashed') \n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kBCqQuT-Lss5"
      },
      "source": [
        "Donde:\n",
        "\n",
        "$$\n",
        "\\text{Rectángulo} = base \\times altura = x \\cdot f(x) = (12 - 10)(100) = 200\n",
        "$$\n",
        "\n",
        "$$\n",
        "\\text{Triángulo} = \\frac{1}{2} \\times base \\times altura = \\frac{x \\cdot f(x)}{2} = \\frac{(12-10)(144-100)}{2} = 44\n",
        "$$\n",
        "\n",
        "$$\n",
        "\\text{Área total} = 200+44 = 244\n",
        "$$\n",
        "\n",
        "Pero también se nos podría ocurrir una aproximación más sencilla, aunque un poco menos exacta, a saber, determinar únicamente el área del rectángulo que ocupa esa área:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 442
        },
        "id": "DoKKc8Ik6d5g",
        "outputId": "5d9c1dc2-8fa3-40d0-b3d0-bc09962ef998"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 720x504 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "x = np.arange(0, 21, 2)\n",
        "def f(x): return x**2\n",
        "y = f(x)\n",
        "\n",
        "fig, ax = plt.subplots(figsize=(10, 7))\n",
        "ax.plot(x, y, color='blue') \n",
        "plt.xticks(ticks=x)\n",
        "ax.set_facecolor('black')\n",
        "ax.set_xlabel('Valores de x')\n",
        "ax.set_ylabel('Valores de f(x)')\n",
        "ax.hlines(y=0, xmin=10, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=144, xmin=10, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10, ymin=0, ymax=12**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=12, ymin=0, ymax=y[6], linewidth=1, color='white', linestyles='dashed')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Yh6s7z9fWT8b"
      },
      "source": [
        "Teniendo como resultado:\n",
        "\n",
        "$$\n",
        "\\text{Rectángulo} = x \\cdot f(x) = (12 - 10)(144) = 288\n",
        "$$\n",
        "\n",
        "Sin embargo, sabemos que estos cálculos son inexactos y trabajosos. También sabemos que las funciones pueden adquirir formas más complejas donde el procedimiento de dibujar figuras sería trabajoso e ineficiente. Al mismo tiempo, los «trucos» del cálculo diferencial pueden sugerirnos que debe existir una solución. ¿Qué tal si empezamos por aproximarnos al número correcto con rectángulos más pequeños?"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 446
        },
        "id": "uZ_zj-JH8KOy",
        "outputId": "a0bee3ca-e79f-41f0-ef06-0f5aab3badee"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 720x504 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "x = np.arange(0, 21, 0.5)\n",
        "def f(x): return x**2\n",
        "y = f(x)\n",
        "\n",
        "fig, ax = plt.subplots(figsize=(10, 7))\n",
        "ax.plot(x, y, color='blue') \n",
        "plt.xticks(ticks=np.arange(0,21,2))\n",
        "ax.set_ylim(-1, 250)\n",
        "ax.set_xlim(8, 16)\n",
        "ax.set_facecolor('black')\n",
        "ax.set_xlabel('Valores de x')\n",
        "ax.set_ylabel('Valores de f(x)')\n",
        "ax.hlines(y=0, xmin=10, xmax=10.5, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=10**2, xmin=10, xmax=10.5, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10, ymin=0, ymax=10**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10.5, ymin=0, ymax=10.5**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=0, xmin=10.5, xmax=11, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=10.5**2, xmin=10.5, xmax=11, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=10.5, ymin=0, ymax=10.5**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=11, ymin=0, ymax=10.5**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=0, xmin=11, xmax=11.5, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=11**2, xmin=11, xmax=11.5, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=11, ymin=0, ymax=11**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=11.5, ymin=0, ymax=11**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=0, xmin=11.5, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.hlines(y=11.5**2, xmin=11.5, xmax=12, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=11.5, ymin=0, ymax=11.5**2, linewidth=1, color='white', linestyles='dashed')\n",
        "ax.vlines(x=12, ymin=0, ymax=11.5**2, linewidth=1, color='white', linestyles='dashed')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0XrMVUnpXcVe"
      },
      "source": [
        "Ahora tengo cuatro rectángulos con una base de $0.5$, cuyas áreas puedo determinar de la siguiente manera:\n",
        "\n",
        "$$\n",
        "\\text{Rectángulo 1} = x_1 \\cdot f(x_1) = (10.5 - 10)(100) = 50 \\\\\n",
        "\\text{Rectángulo 2} = x_2 \\cdot f(x_2) = (11 - 10.5)(121) = 60.5 \\\\\n",
        "\\text{Rectángulo 3} = x_3 \\cdot f(x_3) = (11.5 - 10.5)(132.25) = 66.12 \\\\\n",
        "\\text{Rectángulo 4} = x_4 \\cdot f(x_4) = (12 - 11.5)(144) = 72 \\\\\n",
        "$$\n",
        "\n",
        "Finalmente, para obtener el área total, sumo entre sí todos los valores: $50+60.5+66.12+72 = 248.62$\n",
        "\n",
        "Nos hemos aproximado mejor al resultado y nuestro número luce similar a nuestro primer cálculo. Ahora, para entrar de lleno en el cálculo infinitesimal, nos hace falta involucrarnos con el paradójico y enredoso mundo de lo infinito. ¿No sería más acertado un resultado si utilizáramos $10$ rectángulos en lugar de $4$? Es más, ¿por qué no usar mil, un millón o, mejor todavía, infinitos rectángulos para realizar nuestro cálculo? Esa es la esencia del cálculo integral y, ya familiarizados con la derivada, puede parecernos razonable e intuitivo.\n",
        "\n",
        "Intentémoslo programáticamente, puesto que manualmente sería un desastre. Obtengamos $2100$ valores de $x$, desde $0$ hasta $20.999$ en intervalos de $0.01$:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 37
        },
        "id": "Bh7_4lB8m2gi",
        "outputId": "87895ccd-3d8c-43a1-b8b7-787822d717a9"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "'Valores de x: 2100 | Muestra de 5 valores: [4.01 4.02 4.03 4.04 4.05]'"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "x = np.arange(0, 21, 0.01)\n",
        "\n",
        "f'Valores de x: {len(x)} | Muestra de 5 valores: {x[401:406]}'"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bOfGT3GhnyLu"
      },
      "source": [
        "De la misma forma, obtenemos sus valores correspondientes de $y$ con $f(x) = x^2$:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 37
        },
        "id": "kQvSKPUan35l",
        "outputId": "994c1b7e-add7-4604-f524-25b6ad0be1f4"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "'Valores de y: 2100 | Muestra de 5 valores correspondientes a cada valor de x anterior: [16.0801 16.1604 16.2409 16.3216 16.4025]'"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "def f(x): return x**2\n",
        "y = f(x)\n",
        "\n",
        "f'Valores de y: {len(y)} | Muestra de 5 valores correspondientes a cada valor de x anterior: {y[401:406]}'"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eph4nN1ioQ2x"
      },
      "source": [
        "Ahora, para obtener el área dentro de las coordenadas $(x_1=10, y_1=100), (x_2=12, y_2=144)$, podemos obtener cientos de rectángulos con una base o distancia entre las $x$ de $0.01$. La altura de cada rectángulo será el valor de $y$ que corresponda a la $x$ en cuestión.\n",
        "\n",
        "Para ello, tomamos los valores de $y$:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 37
        },
        "id": "G9cGb7lDpKof",
        "outputId": "048e74ed-c2d9-4973-ddc6-3249c8e0bd89"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "'Número de valores de y (alturas): 200 | Muestra de valores de y: [100.2001 100.4004 100.6009 100.8016 101.0025]'"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "f'Número de valores de y (alturas): {len(y[1000:1200])} | Muestra de valores de y: {y[1001:1006]}'"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4uzzCkGhpeQK"
      },
      "source": [
        "Y multiplicaremos cada una de estas alturas por una base $x$ de $0.01$ para obtener el área de cada mini rectángulo. Finalmente, sumaremos todas estas áreas individuales entre sí para obtener el área total. A esta operación se le denomina suma Riemanniana, y matemáticamente se expresa así:\n",
        "\n",
        "$$\n",
        "\\lim_{\\Delta x \\to 0} \\sum_{i=1}^{n} f(x_i)\\Delta x\n",
        "$$\n",
        "\n",
        "donde $f(x_i)$ es el valor de la función en el iésimo punto, $\\Delta x$ es el ancho del rectángulo y $n$ es el número de rectángulos. Programáticamente, se traduce así:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "e_IqeMaDkFmK",
        "outputId": "be30260a-ba73-452a-8272-05d86bc0c48c"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "242.4467000000001"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sum(y[1000:1200])*0.01"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "c0TBa-wm1BD4"
      },
      "source": [
        "Gráficamente, nuestro recorrido ha sido más o menos así:\n",
        "\n",
        "```{figure} ../../img/integral.gif\n",
        "---\n",
        "width: 70%\n",
        "name: integral\n",
        "---\n",
        "Nuestro método consiste en minimizar «infinitamente» el ancho de cada rectángulo para obtener cientos de ellos. A medida que aumentamos los rectángulos, nuestro cálculo del área bajo la curva se vuelve más exacta; en el límite, nuestro cálculo es preciso. *Shout out* a Bernhard Riemann.\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lresZ1AS6cIr"
      },
      "source": [
        "Nuestro experimento ha sido exitoso y hemos obtenido el mejor resultado hasta ahora. Antes de continuar, detengámonos un poco para aterrizar nuestras ideas, formalizarlas y corroborar que nuestro trabajo sea correcto.\n",
        "\n",
        "Hasta el momento, hemos dicho que el área de cada uno de los rectángulos infinitamente delgados que hemos sugerido es igual a la altura (es decir, $f(x)$) multiplicada por la base, que en este caso sería una distancia o diferencia infinitamente pequeña entre las $x$, es decir, cercana a $0$, justo como con las derivadas; pero ahora, en lugar de utilizar $h$ para expresar esta idea, utilizaremos $dx$ porque expresa mejor la idea de una diferencia pequeña entre las $x$. \n",
        "\n",
        "En ese sentido, tenemos que cada área de nuestros rectángulos es $f(x) \\cdot dx$. Finalmente, para integrar o sumar entre sí todas estas áreas pequeñas y obtener el área total, podemos utilizar una letra \u001b«s» alargada: $\\int$. También indicaremos que esta suma se realizará con las áreas de todos los rectángulos desde $x_1$ hasta $x_n$ o, para no confundirnos con tantas $x$, desde $a$ hasta $b$, obteniendo la siguiente expresión:\n",
        "\n",
        "$$\n",
        "\\int_{a}^{b}f(x) \\cdot dx\n",
        "$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "En realidad, para poder utilizar esta fórmula nos hace falta el teorema fundamental del cálculo. Este teorema, que es demasiado engorroso de entender, nos dice que la diferenciación (las derivadas) y la integración (las integrales) son operaciones inversas, como lo fueran la divisón y la multiplicación. Conformémonos con eso por ahora. Y, así las cosas, entendamos que podemos usar la «antiderivada»[^1] (la inversa de la derivada) para resolver una integral. Es decir, si la derivada y la integral son operaciones inversas, entonces simplemente invirtamos una derivada y eso debería darnos el resultado de la integral. Por ejemplo, si la derivada de $x^n$ con respecto a $x$ es ${nx}^{n-1}$, entonces la *antiderivada* o integral de $x^n$ con respecto a $x$ es $\\frac{x^{n+1}}{n+1}+C$[^2]. Es decir, en lugar de restarle $1$ al exponente, le sumamos $1$; y en lugar de multiplicar por el exponente, dividimos entre el exponente. Luego agregamos la constante y voilà."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Ahora, para utilizar esta fórmula, solo reemplazamos los valores del intervalo [a, b] que nos interesa (en este caso, desde el punto 10 hasta el 12), reemplazamos $f(x)$ por el valor de la función y obtenemos la antiderivada (que denotaremos por $F$) de la función en $a$ y $b$, para finalmente restar las antiderivadas entre sí. (Entendámonos: la antiderivada mide el área bajo la curva de la función desde el origen —$0$— hasta $x$; por tanto, $F(b)$, la antiderivada de $b$ —es decir, de $12$—, mide el área bajo la curva de la función desde $0$ hasta $12$. Pero si solo nos interesa el área desde el punto $10$ al punto $12$, podemos restarle el área de $F(a)$ —del $0$ a $10$— al área de $F(b)$ —del $0$ a $12$— y listo)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hlerfJIEq7sh"
      },
      "source": [
        "\n",
        "$$\n",
        "\\int_{a}^{b}f(x)dx = F(b) - F(a)\n",
        "$$\n",
        "\n",
        "$$\n",
        "\\int_{a}^{b}f(x)dx = \\int_{10}^{12} x^2 dx\n",
        "$$\n",
        "\n",
        "$$\n",
        "F(x^2) = \\frac{x^{n+1}}{n+1}+C = \\frac{x^{2+1}}{2+1}+C = \\frac{x^3}{3}\n",
        "$$\n",
        "\n",
        "$$\n",
        "\\int_{a=10}^{b=12}(x^2)dx = \\left(\\frac{b^{n+1}}{n+1}+C\\right) - \\left(\\frac{a^{n+1}}{n+1}+C\\right) = \\frac{12^3}{3} - \\frac{10^3}{3} = 576-333.33 = 242.67\n",
        "$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PljcRW-vXOTP"
      },
      "source": [
        "### Reflexiones\n",
        "\n",
        "Curiosamente, la palabra «cálculo» viene del latín [*calculus*,](https://www.perseus.tufts.edu/hopper/text?doc=Perseus:text:1999.04.0059:entry=calculus) cuyo significado es «pequeña piedra». Calcular, en las épocas antiguas, implicaba el uso de piedritas que se iban contando una tras otra, justo como cuando éramos pequeños hacíamos con el ábaco.\n",
        "\n",
        "El cálculo lidia con cambios infinitamente pequeños —de ahí su nombre «cálculo infinitesimal». Inicialmente, estos «cambios pequeños» se concibieron como trucos prácticos que facilitaban cálculos como los que hemos hecho, pero nunca hubo una justificación matemáticamente rigurosa para proceder así, «imaginando» figuras infinitamente pequeñas. De ahí precisamente que Newton se hubiera negado a publicar su trabajo de cálculo y que Leibniz haya afirmado que lidiar con lo infinitamente pequeño era una simple ficción mental que facilitaba ciertos cálculos en la práctica. De ahí también que ideas como una «secante infinitamente pequeña que se confunde con un punto» suenen a paradoja.\n",
        "\n",
        "Mi intención en estas lecciones ha sido sembrar un entendimiento elemental, intuitivo y conceptual del cálculo infinitesimal. A mi juicio, este tipo de entendimiento racional —fundamentado en las causas de las cosas—, además de ser el más importante, brilla por su ausencia en la penosa mayoría de escuelas, libros, lecciones y conferencias de matemáticas. \n",
        "\n",
        "Complementar estas lecciones con el estudio de ciertas reglas para derivar o integrar es bastante sencillo, mientras que proceder inversamente es increíblemente difícil. Intuir las razones detrás de cada detalle en una fórmula matemática abstracta —escrita con símbolos griegos, cursivas y letras arcaicas— es, a lo mucho, posible tras años de entrenamiento en las artes oscuras y profundidades de las matemáticas; sin embargo, al enseñar matemáticas, el sistema educativo y los matemáticos asumen que cualquier joven estudiante, sin motivación alguna para hacerlo, es perfectamente capaz de tal proeza. Considero esto un fracaso estrepitoso y mi trabajo ha sido un humilde intento de remediarlo de alguna forma."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ToKjlhdWRrZN"
      },
      "source": [
        "### Referencias\n",
        "\n",
        "Durante la redacción de mis textos sobre derivadas e integrales, además de los cursos de Khan Academy, fueron particularmente útiles los siguientes videos de YouTube:\n",
        "\n",
        "- Las lecciones de Eddie Woo sobre cálculo [diferencial](https://youtu.be/tt2DGYOi3hc) e [integral](https://youtu.be/_hf3JowQfKM).\n",
        "- *This Is the Calculus They Won't Teach You* de [A Well-Rested Dog](https://youtu.be/5M2RWtD4EzI).\n",
        "- *Why is calculus so... EASY?* de [Mathologer](https://youtu.be/kuOxDh3egN0).\n",
        "- *Understand Calculus in 35 Minutes* de [The Organic Chemistry Tutor](https://youtu.be/WsQQvHm4lSw).\n",
        "\n",
        "Según recuerdo, la lección del [Traductor de Ingeniería](https://youtu.be/_6-zwdrqD3U) sobre derivadas tiene un buen enfoque, aunque tiende a hacer las cosas más complicadas de lo que son. De la misma forma, los videos de [3Blue1Brown](https://youtu.be/WUvTyaaNkzM), aunque buenos a ratos, siempre me confunden y me dejan huecos entre las ideas. En cualquier caso, ambos merecen mención.\n",
        "\n",
        "Finalmente, aunque solo he hojeado unas páginas, me parece que *Calculus made easy* de [Thompson](https://calculusmadeeasy.org) es un buen libro.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "[^1]: No es esta una expresión nuestra: realmente se le llama «antiderivada» en el mundo académico.\n",
        "[^2]: $C$ es una constante, y es una formalidad matemática que debemos agregar a toda antiderivada. $C$ es «invisible» en la derivada porque la derivada de una constante es $0$. Esto debe tener sentido para nosotros después de haber estudiado las derivadas: si una función no cambia (es decir, es constante), entonces su derivada será $0$ porque la derivada mide la tasa de cambio de la función. Un valor constante, por definición, nunca cambia."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}