{ "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": "iVBORw0KGgoAAAANSUhEUgAAAKMAAAAXCAYAAABnN//jAAAABHNCSVQICAgIfAhkiAAABehJREFU\naIHtmn+IVUUUxz+rom5qqySY9oNA11Q0sGwR0niRFQQhEREFFYVJPxT6AZFWrEKmaESE0E+UyDAq\nUzIhleytltUWRkmW0tIW4ZYu5Y80W83tj3OmvW/unblz73tv3eB94XLfm3POnB/33JkzMxdqqKGG\n/1AAuiPX9x7es4HngXagS/kfU9prwAFgSKDey1R+joM+0rKr29NXVt1Z7OhtVDLGSegVf5uAV4BW\n4G1gVKBcATGuCCwC5nl4NyrvJuAp5Z8EXA6cBh52yD2kcrdZ7euBDmBogsxZ2v8i5MG4kjFNdwh8\ndvQ28sb4fGAVsB/4G4nZc8CIBN6q+TsQScLVwGi9/gRWBsoXEOcXpfBNUL4PEmhbgENAvUN2jcpe\nbLU3afvCFN1F3MmYpjsEoXZUG3ljPBb4TWU3AMuAbfTMdOdY/FXz913ga6C//n9BFb0fKF8gLBnv\nV757rPbxyBv7skf2O+AoUOeg/QT088gXSU7GEN2hCLGj2sgb480qN99qf1bbX0yQCfJ3JpJgbcAJ\npEZoBZYm8N6lyu6NtK1HHvxsn5IICviT8SbitZu5JiJvYTdwdYLsMo/s7crTrP+v89hYJDkZfboN\nQuMZYke1UE6MxyrtR+KJNQyZJY8RrzNj/g6wGBYCS4CfkWzvRGq/aSq0wOJ/Qu+bI203qlGnEwzP\ngw5gMfLWjlD7QBzZB8wC/gE+S5DdhRTddwI7ga0RWlHvn+j9Gkr9CIFPN2SLZzl2lItyYnyV3rcQ\nf+ZHEb+uBaYDH0ZoXn9HAaeAHUgdaGOk9X+aGvtrAm8WFEifpvsDx4FvrPYhiM27PbJztf+5DnqD\n0ls9fRSJj4xpurPGM8SOaiJvjFcgdj/ioK9U+n1We8zf6LA6QQ3ahyzpbXRa/82Q/anDiEpiElI4\n77Laz0Ns7vDIXqp3W9bgMDJ9XpjRpjTdWeOZ145KIW+MG/R+2EE37cMT2kv8jSbjt8pwN/AecAvJ\ny3KDGXovenhsrCDfFORKKLNK+yNF9iT+0fN34iNVGtJ0Z41nFjvacdd4SdeagD7LiXFelPgbrRk7\nkQRrBq4HbkDqhK3A45aRdcAV+ntbBuVNwPbMJvcE6iur/S+9D3bIDQCmAHuQvS8X6iN9hSJNd5Z4\nZrXDLIZCsT+AJ2+MzcjX4KCb9kMJtCB/ByJF61vIm9UJDIrQp9BTLyZtlyT1Z3bzzbVHaQXSa8Yd\nSHE8zGofo7IfO+QuUfoqT99msdXm4SkSrxnTdEeRFs9QO6qJvDGeo/SXHHSz7WOvxHP5u0M7i9Yy\nZj9qeWAf/eg5BmoCzqVnyirgT8Y64Aiw10E7ABx0yN5B8v5XFBOVZ52Hp0g8GdN0u5AUz1A7qoVy\nYpx3ayfmrxGeqp3aGAdMRrYmfom0X4ks29ciyTWZ+Ag5FDlOMm/AaJX5AhlRQ2uQ8eqUPX2gzmxH\n6o5xCXRT7xzx9D9d7x8F2hOiO2s8y7GjEignxm3Its5FwAMWbTGShK8jCRmF099VSMLsRA7Jnwbe\nRJb6xykdYocjdcIxpAYy0+5uZD9vJvAgMiWNicg9iYwKNgr4R8Zblf5oCt0OBMhL0408+BWq42aL\nZy2ydXGBo39wb3q7dGeJZxY7qoVyYgzx48Cl9BwH7iV+HAgef2cj2bsXGUW6kBXbq0BjhK8ROUhv\nAd5AjvzatFOTlF8ix0n2kL0OeTA2CviT0exjzXLQByKB+NxBn4f4dUL7WRKhNSAF9AaHrEGR5GR0\n6Q6NZ1Y7qoVyYwySVKuRLaAu5KjP9aFEVf0dgHy14ftY4AeSPxsqEHY27cMC7WNqRrn5Kjcjha+I\n+0OJvLrz2HEmUQk/Dc64v+3AM8jUHd0ALVC6yvZ9z+jCYORN3JhBph7Z8njHQQ/9njGP7ix29BWU\n66eB09/+cd6q4SDyXWEzkoybIrTDyNTfgoxCWY/ETiH7doOQMuFkgEwjsve4nOQ9MNNvC6W2VUJ3\nVjv6Asr10+D/4m8NNdRQQw011FBDDX0Q/wLI1TdG/fDwHgAAAABJRU5ErkJggg==\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": "iVBORw0KGgoAAAANSUhEUgAAAM4AAAAhCAYAAACRDZSTAAAABHNCSVQICAgIfAhkiAAAB2tJREFU\neJztnHtsFEUYwH+lBSEU2/qI8hIUtNCQCCgUpcKhtUhiRIUYDRrPREwgEoyPxEfQmihgUAOIUUiU\nR8RoBHnFKPg6BXyCAhJREC1GqA+kPIsIWP/4Zr3r3c7u3u7etifzSzZ73W9mvu/mZuabmW+2YDAY\ncsYwYCWwG2gC4i1qjSFfeAhpL3NsZDOA1dGaEx5tPKYrBrYCk4GjIekeC5wWUlmG1scQ4C5gi0Y+\nGPgiOnN8cxPQNoyCDhPc4wwDbgtuiqGVUgLsBEYACZp7nHbA34gnsq5vI7YvG84Gpqc/9OpxwqQQ\nuAd4xSHNQuB3oGNIOk8HZgN1JH+0B0PWdYkq986A5URJrmyeBywBPrSRnQAuU58rgc7A0JD1h8kf\nwJ/AFUELCupxbkfmvjoGAf8A93oo61aSo5bTj79KpXkLeAKoBSo86OoGvAzsAY4hHW8mUKZJvwyo\nR6a2LcFY4DlgLXAQ+c5OAxSEb/N4YCPJ6U2CzDXOtcq+gpB0ZoOfOuqMfI9ABO04W4ELHeRrgP1A\nB5dyuqt0h3DuOH2U/J0sdfUCflN5lyPu+gP193fAmTZ5Biv5wy6254pNSv8hYBveGkWYNpcjI3R5\nyrMEmR1nCtJwWwI/dQTiPQN5xiAdpwI4gH6kuQjxAPNcyikA3kPm0TNw7jgTlXx8lrpWq3yT0p4/\nq56/qMm3DdiF/2lwXJUf85F3BDIoFaj8XhtFUJst4krniZSrCannEyQ3g5YiU+eWwG8dPQ3MCqI4\nSMeZAHzsIJ+OfJGrXMqZjPwYw5Bpl13HGUPzBWjq1ddFVy8l+4nMxtQJqYMj2K+LHlN5R7p8Bx1x\n/HecVGJ4bxRebB4DvA3sRdaJOxAvVZiSphTol3Z9CbyqPlsD5g+0jrVgDO91NA7YbP1R5FFBMdBb\nfW4DnAf0B/YBP3u1Eqm83Q7yauAk8JlDGqvRz0I64ZWadPXA44jHKQOeVM+bgO0uukao+xqkg6Zy\nCFgP1CBbru+nyder+9XkT5zCyeZCpGHdjDT4N5D13iikTsuRdSvItHd/Wv4jSDvZmvKsCJlCdwEa\nbfK0RvYgNrchs01oiWE/ci/IUvkKYK5G1hFx59845C8CNgDfk1yX1KKfqhUiP0x6LMFNlzX9u08j\nn6PkE2xkJUrmN0YRJ3qP42Sz9V2n0XygbYt0uCZkCq4jQeYaZxzwC9IAX/BgX66I4b2OrB3Ic8G7\nx0kQzg5IR2TEtqMr0tDrHfI/CgwAqvAWiK1AOthXWeoqUfcDGrn1vFQj+wvxyvmCzuZKxGOvIHMn\n9DiylX+5SqeLxcRsni1WVz5xUN2LwXvHCYuT6KOw1i5Vg0ZeicypnwE+9ahvoLqndxw3XUHZB5zj\nIV0d0EMjs4uBLCR3x53sbJ6EDJiNiGdPp5+65zIeWIe+juxYjIQpwqaduh+H6DtOAxKMtMPyIO1t\nZEXAImRtMiULfVbH+ToLXZD0KCUaufVcNzfvgDePOJNMr9UfGI10kro02SYPZfrFzuYadb/FJe+u\n8M35j52IN/TKnhzZYbXbZoOtbvcprMtiKvCmxrAuKu06G1lpFrpmpuRbi8yjO2WhC2S91IR+PWZt\nVdvtyFmLx52avG7EiX6NY2dze5X/o4B2tGZieK+ja5AYFZD0OFFFcDcAN2hk9WQGzyyOAS9p8g1E\n1j3rkE0DaxpXAFyMbJumr6ucdEFymlRD5i5KJyQQ1oj9jly50p1L7xA2djZbbeKs6M1plfQlx4dS\nLwCu08jKkAanOxWwBBkBemvkdtRiv6tWrp6/5lOX3wDoHUp+t5PRDsSJ3uPobN6snt+oyVdF8zhO\nvhHDex0tJKUt5GKNMwoZlVfayBqQc2NVwLs28qVIoG0kEjMIgm5jwKuuicAnSIT7KiS6XonEeLYD\nj2jKrUE2QVb4sjoY16sL1LYpcqBygfq8F7jfJp/O5geQ831LkZMaWxAP3BXZnm1Lfu0egr86KgAu\ntXkeGsOR3ZkdyILcLrJeAczX5G+HnA/7PAudtdh7HCsWUx1AV3fE1nokWr4L50OeJcgCe7kHu3XE\n8e9xanFe/9XZ5HGzeRDinX9FdpT2IvGvubif8GiN1JJ9HQ0HnvJSuNObe24kgJ4uaWaT7O063QN8\n6M6WsHVNUuVVhVReFOSjzVEzFzjDLdEQ5IzWZvx1nB89pClGP9Vpj4zsq3zozpYwdXVAtkKXhFBW\nVOSjzVFTjQfP6vTmHsjcdhHyYs9+ZO6bGjTrhn6LN52e6F+dHoYcPAzrRTYnwtLVF5kG9AxYTpTk\no81R08dLotdJzuUSNO845yNrgmlIhfdH9viXpaQZihwCNBhOGdze3FuNBDBTqSZ5hgfEY21EFo9O\nB/8Mhv8Fbm/u9UAWkI3IuyjWdRSZthkMpyRxnN/cG42c3+ptc+XbPr7BEBjrWEUpsrBPZT4Sj5mK\nxDNWqXSHI7POYMhDEiSnamXIVG4ZEvPohbwt+Dwt8y+mDIYWxWujb0CO0pQgByA3If+8wHqLz2Aw\nGAwGg8FgMBgMBkOe8i/RVi7/Ay2OSQAAAABJRU5ErkJggg==\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": "iVBORw0KGgoAAAANSUhEUgAAAMUAAAAhCAYAAABp7W9kAAAABHNCSVQICAgIfAhkiAAAB7BJREFU\neJztm3lsFVUUh79CwVaqxaARUQQVBYwooFAJpBRFEeNCxLgvaBQNgYBGE5egBWUxSiIIUXFhiTsg\nAnEBNdZ9BcUFRATBqCAi4AKIgM8/fnd40+msfdsU5ksm83q3Oa/vnnuWewcSEhISHFQC84GfgRQw\nqKDSNAxuR/+ryS519wML8ytOdmlUaAFiQBnwNTAc2J6lMc8FyrM0Vtw4FRgMfOlR3x34JH/i1Jtz\ngOaFFqIh8DeZW4oK4IbMRYkl5cAqoA9QQ21L0RT4F1kQ61qWZ/miUAJMARo7K7wsxYHAJGAN6S96\nm6mbAWwAmoV8+Mmm/3WhxW24FCHX4vFCC5IjpgKzgbdc6nYBPcznCuAwoGee5KoP/yDFvipshwVo\nIr8M3AtUA8cD3YD/gJtd+txk+lzmUjcXWIdclTiTqaW4FBgdsu0VpFfUMAvGscA4YDHwG7DT3N8A\nhgD7RxU2ItebZzcxf9dQN6Y4B/gTLQ6F4ELgIeBdI0cKeMqn/X7A5+buSwcz2GsudYuALUCpS91T\npl97l7rupu6OoIcXmEyVYilwQoh2rdH/8S+ClaIIuIe0xX4feBgYDzwL/G7K36231MG0Rwpo/21r\nqKsUI3MsRxBfoP/FX8BygpUCYBpwddDAQ8xg1zvKj0NWYqpHv+VGGK9VYjmwlngH95koRQdgK8Hf\nrwit7qtQpiZIKaaZNt8AJ7nUlwJ3mna5YpCRYZftSqH5sIv0SjsHud2Fog+yqEVAFeGUYijyiFwZ\nSO0gyX51RCtTCjjd0W+8T78rbe3uNmX9AoQsJJkoxY3AhyHaDUeTqRK5pX5KMYJ0wHpAwLhu1jsM\nA4FXgY3IGq1EFt0egDZHFtB+fQo8Yz5bC+H3xCd2rCKcUvRErtae71tsq1wHjEKW4iBgjClPAd8B\nfYHdwEeOQZeg4Ptq4APgdVtdje3z++Z+BvHKY5cB7cznRsCRQGdgE/BjhHE6ob0OP6zFZSLwDnCa\nT9uWwFi0El+ErLAfUdPJjdGEuQRN5lnADqA/+u3bk3YrtpjLzlb0P/raVlaMLGYrYJtLnzjyC1pw\nWqPEUh0aoy/jzEE3Qz/OVx4DD0bKM9jn4eWmTZgc9gi0ioa9BoQY04sq3K3c9IjjzAOe9KkvBj4D\nVpBe1avxthTjTF2u3KLJZvxx1F4cm6AFLIWSK17UUDemuBz4CVnCh7MlaD2pIpylaGHa9fJq0An3\nCXGcKV/k0e8RU39KgADbgfUBbUAa6+WSZWMC54I3gAd96kcjS9vDVlaNt1J8a+r6ZEk+OxVo4r7k\nUW8tctfk4Nn5oopwStHEtDvLKih2NOhq7ksc5S3MfbPHwF1RitDLklhsAg4NaAPQNkSbuLEbbWC5\nUYH89AmEizvKkPuSAj6OKEclcAvaH2qFJvZ0R5thKA7YhhTTiZVBy2VSZA3QJkL7p1EaO9tYv9lO\nq8BLKT53lFv+aonLoMXIwixDPqkfpWTvKEXc2Iw2PZ0UAzNRXDYy5FiHmPufaOJGwTq2MtNcbpxp\n7pcGjLU24rOjsAptoIXllxzJYf1mexZ8N6VIoXyvnQ3m3oK6HI+UxWldnDRCWYwfQgg6gmjnUr7A\n2xVIRRinPliZl1XAiS71Zcj9BO9J8Ji5JqLvvtWUl6I4b3cEeV4xF7i7lSVI6d4BekcYN9s4s5iF\nwjqjttoqsCtFEcqDr6RupmMddTdvLDqbu9O6OGlvnuFUODdGEM20zsBbKfK1u/oZcLFL+Q7gCY8+\nXYEuwHsoALdcqw1olW6DfOM3fZ7bCMUHYbH+HwdH6LM30xFZcddMmeXDPufRebapb+cot453BO0K\nXmPaDQ0pbBw5GjjPo64cuYZuLpQX1XgH2sNN3QqU5nRShNKnL/iM77XvstSMfYFHv164HJRrYFQR\nLtAehSz0HuyWwivItpiDNnr6oby2xWJzH4MCtK1o93WWo/+ZyA2YFyBknOmPctrzXer+AF5ELsmC\nLDxrEnLHrkUJjEVoRduJcuq9gCPQBlpUbkW7uHNQ1uxLZHEORwF6E7Rf09AYQDo939Lce5B2Izei\nJISdSrSwu2IdOejrUd8U+BX3bMhQtKL9Y8YY46i3VlEvF6ch0Btlz1YiV9HtlPCxRJuk1QQf8zgb\nHaj8Ge04b0KLzgvIOrvFeRZ+O/TdkPVfjxRtI1K+R4mPvx+VavxT92sc7dvib2lDYb1x1SViv2EE\nbJDkEb+3xoKoIThdPIFo8VAuycb7IXszY1BMkRElKACM4h6UonTa7EwfngVORdmvpdRPKVYHN6EE\n99x/vihDyY/OKJ17l/ncEN2hXNKJ2mfzMqISHe4L+5JRRzRJ2mZLgHri99YYyJ+eiY5ib0H+tn2j\n8QiUJQpDSwr3qmMV8d31jxNuyYt9jueB+8znGmorxVEoXhqHlLgz8Dby5S16Ujd5kJDQYAl6a2wh\nOpFqpy/aUbYoN2N8hf9BuYSE2BP01lgb5F5sQ4GpdW1HrlRCwl7HIPzfGjsf7TG0c7mS4HQfpFAv\nmOeT5ihItjMN7TeMRRthC0y7v/MrWkJCfKgh7T4dhNyruWj/5Rj0duAU4v0+eUKOSH50HRnujwLp\nt9CBxQdIv0GWkJCQkJCQkJCQkJCQkBCa/wEU3/RCaDfL/AAAAABJRU5ErkJggg==\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 }