{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Laplace transform\n",
    "\n",
    "This notebook is a short tutorial of Laplace transform using SymPy.\n",
    "\n",
    "The main functions to use are ``laplace_transform`` and ``inverse_laplace_transform``.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IPython console for SymPy 1.0 (Python 2.7.13-64-bit) (ground types: python)\n",
      "\n",
      "These commands were executed:\n",
      ">>> from __future__ import division\n",
      ">>> from sympy import *\n",
      ">>> x, y, z, t = symbols('x y z t')\n",
      ">>> k, m, n = symbols('k m n', integer=True)\n",
      ">>> f, g, h = symbols('f g h', cls=Function)\n",
      ">>> init_printing()\n",
      "\n",
      "Documentation can be found at http://docs.sympy.org/1.0/\n"
     ]
    }
   ],
   "source": [
    "init_session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us compute the Laplace transform from variables $t$ to $s$, then, we have the condition that $t>0$ (and real)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "t = symbols(\"t\", real=True, positive=True)\n",
    "s = symbols(\"s\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To calculate the Laplace transform of the expression $t^4$, we enter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/latex": [
       "$$\\left ( \\frac{24}{s^{5}}, \\quad -\\infty, \\quad 0 < \\Re{s}\\right )$$"
      ],
      "text/plain": [
       "⎛24               ⎞\n",
       "⎜──, -∞, 0 < re(s)⎟\n",
       "⎜ 5               ⎟\n",
       "⎝s                ⎠"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace_transform(t**4, t, s)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This function returns ``(F, a, cond)`` where ``F`` is the Laplace transform of ``f``, $\\mathcal{R}(s)>a$ is the half-plane of convergence, and ``cond`` are auxiliary convergence conditions.\n",
    "\n",
    "If we are not interested in the conditions for the convergence of this transform, we can use ``noconds=True``"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAhCAYAAADZPosTAAAABHNCSVQICAgIfAhkiAAAAalJREFU\nSInt1c9LVUEUB/DPC8FFRREtihaCCBpEiyCIVlnrwF2LFNtk7WwRRrv+gQqhWvQHtKpV0EryQYsi\nCVRUaBG4KVPBfpAGYd4WM8J0e/d637MIoi8cZubMOV++d86dM/xBXMcEPmMZj3GkJDbDnfzGjmR+\nCvdwEqexjjHsy+WcwBCmm1W8C99xNvHtwRv0or6Vwjx2x/0Pie8+HmK8KKmthHAUk3ge1xfRhf6S\nnELcwjt0xnW3UKjuJKauwSc3wm0soCfxXRCqup5Yho04by8iG8V7HM759wq/UGoTeBDntc3A9Azv\nYgB9QiEORP8XfIyWYhUrmClSlxXYjYL4uopn+I9jszrZX1VRhtrWIT9hXmhvG8Kv1btdAfNCFypE\nWbdpCc0SZngmXLvzv0PAoTgexCyO5gMaKaxhBK/xFUt4FPfexnEBT3CsiooRzOEMOoQ35DJ2Cl2c\nUJhXOF6F8CluNvB3YiraDIarkMEV4XEawyXsr5pYhi5cjWo++bXhtow24WacayYhxTUs4qXwVgzi\nm9BMWyJsj6QdWMMLodqLVQn/Y/v4AfldXO4D1zW8AAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$\\frac{24}{s^{5}}$$"
      ],
      "text/plain": [
       "24\n",
       "──\n",
       " 5\n",
       "s "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace_transform(t**4, t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGIAAAAiCAYAAACk/QxiAAAABHNCSVQICAgIfAhkiAAAAtxJREFU\naIHt2kuIFEcYwPHf6kJ8rASNoDnoJR4iuD4IRAm7skcJRIQYPAUjHoR4UIgPvCw5hICIBg8hRxXJ\nJUESVi8aEQlCwAcmPhFyChEfeYgiGiRGD9VLKk13z8w6SbfZ+kMxwzfV3f+pmqr+qmtIJJ6B5RjB\ndTzBe7XadIEJdQuMkT5cwiY8rNklkXFfGhGJbpE6oiGkjmgIqSMaQuqIhtBbt8AY6cO87P0EzMVi\n/I6f6pIajwwJC7l82V+fUiKRSPzv6Mlen9RqkUgkxhdzcBJXcAHv1GozjnlZWOfAbGEfZWrVAdNx\nC6/8u14d8SU+KPmsib5UO8MPwigpZRf2ddOoBTtwBvfwCw5jQa5Ov7BifrHg+P/al/Z2B6ucXxM2\ntUqZgjsYeBbLDjmKdULj9+Mr3MSMXL2z2JiL1eELb+JjrMYD5ZtSRc4zcBlvVF1gtdCLPVGsB9tw\nTdiSvI1DnXl3RB8e461cfBincrEm+FbtDuadX8C3eLeocvz0dRDn/HNNsTW70Pt4FSvxzRiE22Va\n5nQnFz+N1zE5ijXBt4rYuUd4DnYCB1sd+DUO5GInsLu7fpV8gfOYmIsvFBo8vik3wbdqRMTOA/gL\n30elP64cj4jJ+CN3shFsxnFswMySi36k+GloXIZafKk9mfDbwvQUM/pPjXhE1O3bitj5lNDWi6Ny\nsezAz4VfZJ552CKkXHcxv6DOTGEqqCpTKqQ/wY2sXhFLhcaZ1RDfUapGRJFzW2xRnVb1Cmnmmk5P\n3IK9QqZU1GCjrMfPuVhdvjFVHVHkXEq8Q3cUO/ESfsN2YbF0Gn9iLR4JS/Vu8amQRawSbtCzs/j9\nrIwymPnF1OFL+7uDRc5t852/c99hXBVy5V9xBIvGeuISyubnD6M6k4QpZlkDfGlvd7DKuS1WCDl4\nPmupk404VvJZE32pdi4k/wV+FIbbDaFHm8ASfCZMP3ma6Eu1cyKRSDwvPAXr3tZedPOPAgAAAABJ\nRU5ErkJggg==\n",
      "text/latex": [
       "$$\\frac{1}{\\left(s - 2\\right) \\left(s - 1\\right)^{2}}$$"
      ],
      "text/plain": [
       "       1        \n",
       "────────────────\n",
       "               2\n",
       "(s - 2)⋅(s - 1) "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fun = 1/((s-2)*(s-1)**2)\n",
    "fun"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAI8AAAAYCAYAAADDAK5oAAAABHNCSVQICAgIfAhkiAAAA8lJREFU\naIHtmluIDWEcwH92XXajliiieMFKLuuyi9qHI7eUIjy4toe0TzwQD5TyshEeFOXyIFsUISTJUuse\nctlsbGLrKFmXDRFrLY6H/7ft7OzMOd/MfLPj1Pxq+s5+M9//Nt/1PwsxMTGhsge4ErUREeLof14E\nhuQiZcCDqI2IEE/+VwMfgL6hmZMb9AZ+AWnL9TxSizIzBbFxnSF5nv0vBf4CmwwZYGejMmJFSPJN\nkkfHCykDhgADulH/UmA/cAv4quw4nqXNOaAJ6GdAv2f/a4AvQKEB5U4cV8YUhyTfNAuQF9cjAt11\nSKy+AQ3odZ4y9dw2QzZo+z8amXWOGFLsRAMSDL8vI4kEJ2HInmxsR0Z+FMwERiGxSqDXeUBi/Boz\ne1pX/+3C1yKGnjKg1M4uxPkxyJT6l451dHUI+jKxBLgMNCNr+ktkpOY7PFsCPOk+0zpRi9iW9tju\nJDAcmJPhGd0YuPrf0/b3bOAPcM+jsTo8RjbiFcBd4Krl3vUQ9DmRj4zcZcAr4DTQCswHqpCltMLW\nZiIS5Fzijirn0PWI7TUGWv73BX4D9UGszkIlMooqA8hI4n/ZOqDa7qTzwOmFBDwNjLW1SQF7gaFA\nfx86TZFAf9kqUs86Ha+9xiCFhv+jVcMaDeP8ckjpmBpARhJ/nWcaslSed7nf3rHX2OpXAm9U24Me\ndZokgX7nAWgB3tnq/MTA1X9rzxuoys8uglPAiGwWWzgBrLLVTQba0J/dMumsdairRjqXExuQ/dwP\nYIfD/XGqtO8DT6hLhxTBY2SKT8BgW52fGLj6b+08LaoscDGmEfjpbmsX3jroGo8kmVo1Zeyj61RZ\nAixEOkrKdq8ug6y5qlyeRedrTducCBojkxTS8U7bCS0GQ5Ep67bXhppMUPKPBpSTxPuyVaDa3Aio\nO0oS6C9becgy02ipMx4D6/TUBHwkvORdiSqjOPa255QGRaA7CooRn60zsfEYWDtPGriphI80pcBC\n+57qawiys9ECPEVOEYtdninHOc+Ti0xXpXVfaDwG9jzPWSR5NA/JAZjkkSqrkI3Zd+AZkmfoDrYA\nlxAfryGBzAOGId9veiGJtf+JReoC+a4EMAM4pn43A5sd2s1F8nUXbPWhxqA38B6471dAFtYDL5BN\nZRrpSF5J4j/PUwqcQY6wbUjw64HDwCwf8sJmB52/aNuvlEObImSWcTuOhxqDrcqwSUEFxUTCBuT9\nlUehvAA5ql2MQnlMIAqR4/+Z7lDmtDn6jXyH6gM8RKa2mNxgFJJD2438W01MTExMTEyM8A9uOv7M\nAfA7lgAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$$\\left(- t + e^{t} - 1\\right) e^{t}$$"
      ],
      "text/plain": [
       "⎛      t    ⎞  t\n",
       "⎝-t + ℯ  - 1⎠⋅ℯ "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inverse_laplace_transform(fun, s, t)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Right now, Sympy does not support the tranformation of derivatives.\n",
    "\n",
    "If we do"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$$\\mathcal{L}_{t}\\left[\\frac{d}{d t} f{\\left (t \\right )}\\right]\\left(s\\right)$$"
      ],
      "text/plain": [
       "                ⎛d             ⎞\n",
       "LaplaceTransform⎜──(f(t)), t, s⎟\n",
       "                ⎝dt            ⎠"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace_transform(f(t).diff(t), t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "we don't obtain, the expected"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$$s \\mathcal{L}_{t}\\left[f{\\left (t \\right )}\\right]\\left(s\\right) - f{\\left (0 \\right )}$$"
      ],
      "text/plain": [
       "s⋅LaplaceTransform(f(t), t, s) - f(0)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s*LaplaceTransform(f(t), t, s) - f(0)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "or,\n",
    "\n",
    "$$\\mathcal{L}\\lbrace f^{(n)}(t)\\rbrace = s^n F(s) - \\sum_{k=1}^{n} s^{n - k} f^{(k - 1)}(0)\\, ,$$\n",
    "\n",
    "in general."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can still, operate with the trasformation of a differential equation.\n",
    "\n",
    "For example, let us consider the equation\n",
    "\n",
    "$$\\frac{d f(t)}{dt} = 3f(t) + e^{-t}\\, ,$$\n",
    "\n",
    "that has as Laplace transform\n",
    "\n",
    "$$sF(s) - f(0) = 3F(s) + \\frac{1}{s+1}\\, .$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nCAQCfcD/AKRbNRNWHNtwAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$s \\mathcal{L}_{t}\\left[f{\\left (t \\right )}\\right]\\left(s\\right) - f{\\left (0 \\right )} = 3 \\mathcal{L}_{t}\\left[f{\\left (t \\right )}\\right]\\left(s\\right) + \\frac{1}{s + 1}$$"
      ],
      "text/plain": [
       "                                                                           1  \n",
       "s⋅LaplaceTransform(f(t), t, s) - f(0) = 3⋅LaplaceTransform(f(t), t, s) + ─────\n",
       "                                                                         s + 1"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq = Eq(s*LaplaceTransform(f(t), t, s) - f(0),\n",
    "        3*LaplaceTransform(f(t), t, s) + 1/(s +1))\n",
    "eq"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then solve for $F(s)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHUAAAAkCAYAAAC31nXuAAAABHNCSVQICAgIfAhkiAAABNtJREFU\neJzt22uIVHUYx/HPqlmGEpVkSTfMFxlpS0ZEqVkgSVEYFEYRBdEFJZCiKyFCUXazG4bUi5YKAiMK\ns5ttMi+6lyX2opvUZtlN0zLTTMNePGfa43F298zOmdlmmy8cdud/eeZ3zv/8n//tGVr8L3gDJbyQ\nXENy1rsSX2EXHsOB+AnHVPn9z+L6KutUQ7PozMPputvpI1zXU8EuXFOl8WPFQzofh2Ek7sUTFcrO\nwdf4E6swNZM/EZtwQJUaBovOaViG9diNy3PWK2FhT5ldqm/UG7E69Xl/bMaUTLnZ2Cl6ywQ8gq04\nMlPuQ8zN+d0dWDCIdJ6NO3EBtqljo7aJB/I5tuNnPJfkfSHeqPL1fCJoU1IvzXt4PJP2Je7KpM3H\nm33dRUKHfA+rWXSm2aofjZp3vLwhMT5HuLDz8HqSN0U8sNuES7tMuKpV4uGVGY7JWJGxvQKnZtLe\nx8kYkVNfHppFZ83kbdSZeEVMor7Bu1iS5G3BOLyFH5PPR+H7jI3RGComJWl+wqGZtO+xD8bm1JeH\nZtFZM3kbdRnmoRNXixsvczyG2XOsGiEmGP1le8pOlluFWypfl1RIy05qmklnzQzLWe5BLMcs4YLv\nwSn4FO2i9/6aKr9RLBVk0v7GmEz6GNFz0hyU/N1QQcsSLE19vlvMFB9Opa2vUK9ZdNZM3p4Ka3Gf\nGG/aMClJb7fn2w8f47hM2l9i/JqRSZ+BtzNpx4sbzrpAYmKzNnX9XiFte4V6zaKzZvL01JuE6PfF\nGu8yceOlJL9duOU0r4k382D8kkpfhKcSW2+JWfZY3eNzmamJjSJpFp0jMT75f4hYRrWLF2Jdf412\n2XNJM1+42W3CNS3HCUlem5hwzKpg5x2V13Bzku/YIXrEtEz+fvhNuPc8dOh7qdAsOmG6PZde5auj\nj3olBW8+VGKmWNcOrbLeXHsvJ+pJs+jsi5Iq16n94VUsxuFV1tuJa4uX0yPNorMmuhTTU1s0lpIG\n9NQWA0SrUQchrUYdhORZp+7uu0iLASB7svQveRq1x8o1cIRY3B8iNjRuF5EELQog795v0ewSBwSr\nxcnHKryMPwZIz6BioBr1h+QiNsk3is3xVqMWwH9hojRZ7OZ8O9BCBgsD3agH4UlcVQfbt+ADsee7\nAS+KU5VGMhdrEg1bxD7zOfX+0oFs1H1FaONCex9pFcF0PCpCUM4U43in7jPQRvCdOOU6ESdhpbjn\nSb1Vqgdditkm7C1YrQ3PqD4QqxZGisPvc1NpvWmsF5tE9EjRlCTbhPWcKKWD1daKYK/2JO80EYa5\nRvdx2KX4pI56RgnPtDmnxqIZigvFy1UPz9QrXYrpqStxfwF2imKpiHRIH7E1QuNEEY+0S4TS1GtM\nLWnAeeo84e4qBavl5Q6VD4zT1/QcdhaJyL9x/dRYi47hIpJhsogb3qg+E7aSpFEr7RZ1JZnZ0I3+\nMF6410txtO5gtbyM1vfLsE5EZfTEA7gIZ+CzfmosQkeZThEAd0WOstVQEqG7N1fK7FL8eeowMaWf\nXbDdvnhIbG5MyFG2URpX4uk62C2p80Spr2C1RrBY9L5ZYnJUDsQux9w2QuNCvCQ2VkbhYuGm675W\nzdLfnzKm6S1YrVH0NPYtaKDGDuFqd4jlUifOKtB+7p8ytmjRokWLuvMPguKzm84k0mIAAAAASUVO\nRK5CYII=\n",
      "text/latex": [
       "$$\\left [ \\frac{s f{\\left (0 \\right )} + f{\\left (0 \\right )} + 1}{s^{2} - 2 s - 3}\\right ]$$"
      ],
      "text/plain": [
       "⎡s⋅f(0) + f(0) + 1⎤\n",
       "⎢─────────────────⎥\n",
       "⎢    2            ⎥\n",
       "⎣   s  - 2⋅s - 3  ⎦"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol = solve(eq, LaplaceTransform(f(t), t, s))\n",
    "sol"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and compute the inverse Laplace transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$$\\frac{1}{4 e^{t}} \\left(\\left(4 f{\\left (0 \\right )} + 1\\right) e^{4 t} - 1\\right)$$"
      ],
      "text/plain": [
       "⎛              4⋅t    ⎞  -t\n",
       "⎝(4⋅f(0) + 1)⋅ℯ    - 1⎠⋅ℯ  \n",
       "───────────────────────────\n",
       "             4             "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inverse_laplace_transform(sol[0], s, t)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and we verify this using ``dsolve``"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$$f{\\left (t \\right )} = \\frac{1}{4 e^{t}} \\left(4 C_{1} e^{4 t} - 1\\right)$$"
      ],
      "text/plain": [
       "       ⎛      4⋅t    ⎞  -t\n",
       "       ⎝4⋅C₁⋅ℯ    - 1⎠⋅ℯ  \n",
       "f(t) = ───────────────────\n",
       "                4         "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(dsolve(f(t).diff(t) - 3*f(t) - exp(-t)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "that is equal if $4C_1 = 4f(0) + 1$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is common to use practial fraction decomposition when computing inverse\n",
    "Laplace transforms. We can do this using ``apart``, as follows"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEcAAAAiCAYAAAANicT2AAAABHNCSVQICAgIfAhkiAAAAlVJREFU\naIHt2D9sTlEYx/FPkfjXRNSAQTvQTbUiEpGSxiBlrlEijB0MOoihMUnEVAsi4poEkYgNi4iwGBB/\nImERJfWnQoRQWsN5Gzf1vrdXnbov7jc5ee/59zvPfe55z3PyUFLXbMRFDGIMOwq1JsWMog1AI+5h\nNz4VbEtd80G5c/4OSudkUDong9I5GZTOyWBW0QYIoXxF5XkGmtGBYTwtyqh6oUu4/E0sSXEmlZSU\nTBMNld+xQq0o+bdZhqt4gLvYVqeahbBUuH/AEiH/Mr8ONeuCO8KXH2chhrA8ouaf4Bz2xBRcIySo\n0hzCyciaMZgs09gm3MYXxFisCfexPtU2D2/RGVEziwT7c47digPowUfVk2m30Jsl0oPPaEm1DeAJ\nFlfqs3EN26vMHfbjahBDM4tEfuekqZVp7Mf1rIkNggePV+p9eInWVP/pGkYN4EpkzSySKcyhtnO6\n8QVzsyZvxgj24j3Wpvo6MYrbqdJW6buAU5E1s0jEdc4q4TyaNJjcwFds+YVFL+FYZM00+4QXGy8j\nwpdOt23IoVPLOa2Cc1amGyfmczahXdjuQ7lN57UQyqsxVc00R3E2VT8oRJ/DqbbBKWoTAgK8qjWg\nHe+wE+eF3ZCXPtXD8O9oZpGI+7fahWe1JrXguXBqE7bXqJCIykMbvmFRRM0sEvmd0yjcwjuEUN5f\neW6eoHei2uQmPPTzmXEGN3MaoDJ2/K4QS7MWifzO6ZKdaZwj7O51EeyqSTceYeZ0LjIN9OJytY6Y\nL/JYSJC/EL7E38JqHMGbog0pKfkP+A4xVJ7pEzkZSAAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$$\\frac{1}{x^{2} \\left(x^{2} + 1\\right)}$$"
      ],
      "text/plain": [
       "     1     \n",
       "───────────\n",
       " 2 ⎛ 2    ⎞\n",
       "x ⋅⎝x  + 1⎠"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frac = 1/(x**2*(x**2 + 1))\n",
    "frac"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGcAAAAhCAYAAADEQLWIAAAABHNCSVQICAgIfAhkiAAAAktJREFU\naIHt2TmIFEEUxvHfLoKBG8gkaqCbaKbsgJipDAaCkYmGwmBgamIgBmJqpkaKSSuCKJiYmS0GmhiI\niEbCIqwXIijeK2pQvdCMx3ZPXzVL/+HBVPX0q1ff6zq6i46OHOzFbSziF4atRlM9hfs3XXNARZjB\nYxzHl5ZjqYNV07+PVt/IyZKrfzGNnI4RuuRETJeciOmSszJDYXc1aLrhLjkRs6btADLMYGv6expb\n0Mc7PG8rqAqZ6P4NhOlj1JL2QkJ109pAwf7FNHLmMdV2EDUyr2T/Fvw9u/+ya2Uai5AFxfqf1BnM\n6Mh5hq8F7n9RYSwxcA7rR+r6OIgrQvKyPGwgptIUedpisCIMjbfmlI6zqjVnNa8V41JakybfczYL\ni+ITPMLhBtuOlWg02STM37BRONdY11YwBRiq7wvBfzVpciv9MjV4hbfo4VODMcRGlJrsFA6eqmaS\nT1P/0KSNb2s9XMWxAvckOJPjf5N62jiOJoU4hG+YzdSdF96dNqTltbiLIwV9J/IlJ0sMp6l1alKI\nKTzA5bR8Am+wLXP9uuIiM7nJqVOTwuzHEk7iA3Zlru3GT+Gtetl25PSbmMzkUJ8mY3EPP3CghI9T\ngrjLtoTvI3V7VvARS3IYU5Oqt9L7MCcM19cl/FzEzUz5rLADu5CpWyzhv0mq0qQUc3iPo7iFOxX6\nTkzmtFanJrmZFb5Qn07L24W5dFCR/0T+rXQ/tc9pPH3h1LFp6tYkFz08xaWR+hu4X1EbiXzJGYjj\nNLUJTTo6Ojo6OirjNyS29o/rdlkWAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$- \\frac{1}{x^{2} + 1} + \\frac{1}{x^{2}}$$"
      ],
      "text/plain": [
       "    1      1 \n",
       "- ────── + ──\n",
       "   2        2\n",
       "  x  + 1   x "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "apart(frac)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also compute the Laplace transform of Heaviside\n",
    "and Dirac's Delta \"functions\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD0AAAAYCAYAAABJA/VsAAAABHNCSVQICAgIfAhkiAAAAr1JREFU\nWIXt11+Izlkcx/HXmGVnN3FDLtTaZQiZ3ZDWhW1p/UmyigtyhYuhNrVtolxIwrhRsmqj3bVCyv8L\nm9JQkkiSISZpa7mSpl07dmf9Hxff3+TX4/d7nsHzzONi3nUufud7zvd8vr9zzvecQy8V5TtcQ3tS\nLmBOVRX1APMwG/UYhU14is+rKaoa/IXlqe8arMYt/I/7OFIFXRWhFovwBA2p+tW4iW8wDJOxIsfH\nEDzHj5WTWR4a8C+e4YHX9/QZbO2mr0Z0YlrZ1HWTjcnAxcrUVPt+Yk9PRBPaMC5l/17MXrNY9oOK\njH0y6V/77mEEC1JOn+A21mYMMAijS5SPi4zTjF8K6uqxCi34B2My+g3AY+zOsH2Fo/gDj0ReuCR+\ncia1OCBm6DZ+wjaRWDqxp0gAb8MZ7MuxfSCOtoUZtsWJnm8L6tcm9XewC5vFT23BlTwRO5JOTcmg\nXfTF+cQ2tngcuWwRs/Cp2NtNeCGOMViDJYn/riOtTSSsQg6J3FCXqhsicsU5sY0KydwqXyYijueI\n7kocS3PspfhNzMBjseSaMStlX4dWdIhgT+CLDD91eCgCT/N1oq9wu7xGejZXinOyA+sz2nYlnD6l\nnOawpIR9Q1JKMQP9cayg/obIAcswGPtxCn8Xc3Zf6UzciendEFZJdovVMjDDNk6sgP+E1mciIU/I\nclSXNDpbEZnlo1Ys/ZMl2vUTk3NQxNWGDwsbfZQYb5RXY9mZJnQ2vkGfc0mfT7KMLYlxfk7nKcp4\nEXhLtovLS2FGH48RGe3rxZ6+I5WLalINZuJ3kdyaxTOwD4aKG1RfOX+rh6gR4u+KCUjzq0iUF3FZ\nHGfDvTrH5+J0nuNJOIx74tnXhuvYKR4B1WSSWIk/ZNjmYa+4RLWLW+Sf+Bkje0hfRdgsgv6s2kJ6\nklZcrbaIXnrp5f3jJb6lqSRGFTVaAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$\\frac{1}{s} e^{- 3 s}$$"
      ],
      "text/plain": [
       " -3⋅s\n",
       "ℯ    \n",
       "─────\n",
       "  s  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace_transform(Heaviside(t - 3), t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAACsAAAAWCAYAAABZuWWzAAAABHNCSVQICAgIfAhkiAAAAa5JREFU\nSInt1T9oFEEUgPFf/ggisZGAimAhIhoMBkRsLETFzkYLW9MYEASLqMRCghhSJRpQxNJKkAQFDUEI\ngoWVhUSLILFWSQTRIoEEPYuZg8m5e3sceqdwH7xm3u7Mt29m3tIikyG8xncs4Sn2N9WoCs/RLwj2\n4jE+Y0szpWqlCz9wKhlrwxW8xwoWMVVOdjbSroLNaMfXZOwyzuECPmA7+hpulsEjvEFHMvYCY39r\nwZsoFcTRjPfG8RG7KsYvCUdjFgPorkXiDGbwBatYwDXrqyBOtrcgNlW8cwufYi6L3RjEHL5hX55k\nBx4KFVnAPdwWDnwJD4q+soAJoQPkCiR0Cm3ubN4Dd6LUqPWXbwNexVxPnaJ34+LHsC2Jrpi/Klyu\nHuzBiLCzW7MmO4yfeJKz2Pko21+nbN6ZHo7565jHcpR8hgPpBGn1Lgp9bjmZIKX8t2mvU7atIH8j\nRk0sKr7ZJZyox/RPsjGKvGy2SDXKW1reopr62r/AnFDd0zn5I37vsw0lPfQnMS1culm8FSq/AweF\n9rWz0YLVOIRJoXGvCS3kHe7jeBO9WrT4L/kFmrdjSkukfLEAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$$e^{- 2 s}$$"
      ],
      "text/plain": [
       " -2⋅s\n",
       "ℯ    "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace_transform(DiracDelta(t - 2), t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The next cell change the format of the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
       "<style>\n",
       "/* Based on Lorena Barba template available at: https://github.com/barbagroup/AeroPython/blob/master/styles/custom.css*/\n",
       "@font-face {\n",
       "font-family: \"Computer Modern\";\n",
       "src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
       "}\n",
       "div.cell{\n",
       "width:800px;\n",
       "margin-left:16% !important;\n",
       "margin-right:auto;\n",
       "}\n",
       "h1 {\n",
       "font-family: 'Alegreya Sans', sans-serif;\n",
       "}\n",
       "h2 {\n",
       "font-family: 'Fenix', serif;\n",
       "}\n",
       "h3{\n",
       "font-family: 'Fenix', serif;\n",
       "margin-top:12px;\n",
       "margin-bottom: 3px;\n",
       "}\n",
       "h4{\n",
       "font-family: 'Fenix', serif;\n",
       "}\n",
       "h5 {\n",
       "font-family: 'Alegreya Sans', sans-serif;\n",
       "}\t\n",
       "div.text_cell_render{\n",
       "font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
       "line-height: 135%;\n",
       "font-size: 120%;\n",
       "width:600px;\n",
       "margin-left:auto;\n",
       "margin-right:auto;\n",
       "}\n",
       ".CodeMirror{\n",
       "font-family: \"Source Code Pro\";\n",
       "font-size: 90%;\n",
       "}\n",
       "/* .prompt{\n",
       "display: None;\n",
       "}*/\n",
       ".text_cell_render h1 {\n",
       "font-weight: 200;\n",
       "font-size: 50pt;\n",
       "line-height: 100%;\n",
       "color:#CD2305;\n",
       "margin-bottom: 0.5em;\n",
       "margin-top: 0.5em;\n",
       "display: block;\n",
       "}\t\n",
       ".text_cell_render h5 {\n",
       "font-weight: 300;\n",
       "font-size: 16pt;\n",
       "color: #CD2305;\n",
       "font-style: italic;\n",
       "margin-bottom: .5em;\n",
       "margin-top: 0.5em;\n",
       "display: block;\n",
       "}\n",
       ".warning{\n",
       "color: rgb( 240, 20, 20 )\n",
       "}\n",
       "</style>\n",
       "<script>\n",
       "MathJax.Hub.Config({\n",
       "TeX: {\n",
       "extensions: [\"AMSmath.js\"]\n",
       "},\n",
       "tex2jax: {\n",
       "inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
       "displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
       "},\n",
       "displayAlign: 'center', // Change this to 'center' to center equations.\n",
       "\"HTML-CSS\": {\n",
       "styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "}\n",
       "});\n",
       "</script>\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.core.display import HTML\n",
    "def css_styling():\n",
    "    styles = open('./styles/custom_barba.css', 'r').read()\n",
    "    return HTML(styles)\n",
    "css_styling()"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}