{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of Systems in the Time Domain\n", "\n", "*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Communications Engineering, Universität Rostock. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Impulse Response\n", "\n", "The response $y(t)$ of a linear time-invariant (LTI) system $\\mathcal{H}$ to an arbitrary input signal $x(t)$ is derived in the following. The input signal can be represented as an integral when applying the [sifting-property of the Dirac impulse](../continuous_signals/standard_signals.ipynb#Dirac-Impulse)\n", "\n", "\\begin{equation}\n", "x(t) = \\int_{-\\infty}^{\\infty} x(\\tau) \\cdot \\delta(t-\\tau) \\; d \\tau\n", "\\end{equation}\n", "\n", "Introducing above relation for the the input signal $x(t)$ into the output signal $y(t) = \\mathcal{H} \\{ x(t) \\}$ of the system yields\n", "\n", "\\begin{equation}\n", "y(t) = \\mathcal{H} \\left\\{ \\int_{-\\infty}^{\\infty} x(\\tau) \\cdot \\delta(t-\\tau) \\; d \\tau \\right\\}\n", "\\end{equation}\n", "\n", "where $\\mathcal{H} \\{ \\cdot \\}$ denotes the system response operator. The integration and system response operator can be exchanged under the assumption that the system is linear\n", "\n", "\\begin{equation}\n", "y(t) = \\int_{-\\infty}^{\\infty} x(\\tau) \\cdot \\mathcal{H} \\left\\{ \\delta(t-\\tau) \\right\\} \\; d \\tau \n", "\\end{equation}\n", "\n", "where $\\mathcal{H} \\{\\cdot\\}$ was only applied to the Dirac impulse, since $x(\\tau)$ can be regarded as constant factor with respect to the time $t$. It becomes evident that the response of a system to a Dirac impulse plays an important role in the calculation of the output signal for arbitrary input signals. \n", "\n", "The response of a system to a Dirac impulse as input signal is denoted as [*impulse response*](https://en.wikipedia.org/wiki/Impulse_response). It is defined as\n", "\n", "\\begin{equation}\n", "h(t) = \\mathcal{H} \\left\\{ \\delta(t) \\right\\}\n", "\\end{equation}\n", "\n", "If the system is time-invariant, the response to a shifted Dirac impulse is $\\mathcal{H} \\left\\{ \\delta(t-\\tau) \\right\\} = h(t-\\tau)$. Hence, for an LTI system we finally get\n", "\n", "\\begin{equation}\n", "y(t) = \\int_{-\\infty}^{\\infty} x(\\tau) \\cdot h(t-\\tau) \\; d \\tau \n", "\\end{equation}\n", "\n", "Due to its relevance in the theory of LTI systems, this operation is explicitly termed as [*convolution*](https://en.wikipedia.org/wiki/Convolution). It is commonly abbreviated by $*$, hence for above integral we get $y(t) = x(t) * h(t)$. In some books the mathematically more precise nomenclature $y(t) = (x*h)(t)$ is used, since $*$ is the operator acting on the two signals $x$ and $h$ with regard to time $t$.\n", "\n", "It can be concluded that the properties of an LTI system are entirely characterized by its impulse response. The response $y(t)$ of a system to an arbitrary input signal $x(t)$ is given by the convolution of the input signal $x(t)$ with its impulse response $h(t)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The following example considers an LTI system whose relation between input $x(t)$ and output $y(t)$ is given by an ordinary differential equation (ODE) with constant coefficients\n", "\n", "\\begin{equation}\n", "y(t) + \\frac{d}{dt} y(t) = x(t)\n", "\\end{equation}\n", "\n", "The system response is computed for the input signal $x(t) = e^{- 2 t} \\cdot \\epsilon(t)$ by \n", "\n", "1. explicitly solving the ODE and by \n", "2. computing the impulse response $h(t)$ and convolution with the input signal.\n", "\n", "The solution should fulfill the initial conditions $y(t)\\big\\vert_{t = 0-} = 0$ and $\\frac{d}{dt}y(t)\\big\\vert_{t = 0-} = 0$ due to causality.\n", "\n", "First the ODE is defined in `SymPy`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} + \\frac{d}{d t} y{\\left(t \\right)} = x{\\left(t \\right)}$" ], "text/plain": [ " d \n", "y(t) + ──(y(t)) = x(t)\n", " dt " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "t = sym.symbols('t', real=True)\n", "x = sym.Function('x')(t)\n", "y = sym.Function('y')(t)\n", "\n", "ode = sym.Eq(y + y.diff(t), x)\n", "ode" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ODE is solved for the given input signal in order to calculate the output signal. The integration constant is calculated such that the solution fulfills the initial conditions" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAANcAAAAaCAYAAAAkC8nfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHVElEQVR4Ae2c7XUVNxCGDccFQOgAOjBQQUwHgVQQ0wE5/LL/cUwHQAXEdABUQEwHpoOAO3DeR5bWWq2k1X7c1dq+c46utPp8NRrNjLRr37m4uNjZ0pYDPgeOjo5O9fxc8Q8/f43pNWO9u0aG1cakBTtQ2K+No8b4mvc9jbunuLWx9PyuBp7cmCmsuTZLlm03V8BtLdgfynqs+EtQdFseUSrfI5M9Fk8+R/JrZqWw1sTUjD3L5hLTHzY9ZhKl9TJdbLRI+NDarxW/3OhAK+yctVE4FjTCDmmFPQdVaSzZieJXLq9WLAxZrHPiYqyS/mL1Jm8uy+xmEXqAwJTqi5PBeKKy1bk/GbyzFWldfij8rQ7PFd6QVmhZMD2/V9lLxSihaqTxe7HOAU7jIKujZXvS5tLguFAPFH8qmYzqGVdL8UFJ/SXrCBMa6oliBChJKuc8cqZQVcCSAKcXIEw5lxjl82H6MLP00IfVDKK1eqWAJW5Z4xwC1Z0s23fG3hZqcITrq+LHMZC2nFunZ0qHh2Pyf1c+WnIVJCwIzblitHeLlMdcEaifCk8UWNT7a8IvPC0SNjAaF69V0H3AEpn1UcwZBtfvfrfaZY7K4MUvhdnmrz43ghXE6ptzInN6rwD2U8WPKEuRrTdZtndTAxTks3A5F4qFwhogkCHRjvZrOttgTZ+FQHkWs1ECz216iKtAkyokzLh00flkADWWwAoYbnzoGqKAyHuhkLXymXFaRRvE6s6PBqfGATtzwvtozasF6FI2J8v2FLfwhQDmmMvC4hsjmC2y7WiPJqlOwoFQQf9eRrf2F43+zc7+teKWx+FxBT4ZZePlLZ3MYrVriiKMWW+Ufo5mke1Rm0vA8UdTjHegsVy5sxjt0X5rILBGFcEawC2IAW39SOuLFf+ouKMYLZYzxbjHNakPq1EOmkNzflTaKfPfUsBVZzbZNm6hHRSGog3wSRuLZMs+KPY1FVapAe2Aqg5CiqvHJNAOmF9u4L4pfqvYJ9rTTzOWX7hw+qnGSwnSwlDKhhM/4TEC9J9twdpxwzd6HmqLq1TiqlPvHhhKxqOe6i+G1Y7HJgnPz04h5AzDbLJtNhcTFyAWBkAc3H2Bx7qQ7xMg0RwtUns2zBfbz75igKYI7cdm7CX1w1hFdb3OvqudrxC8ok6Sxf/ZyV1phuYFL+AJnyiZs4NiXFsEOBQoZc1OjlcoUDN+aoRKWN1tdGgAnPuf21yzyfauXRTnZ7MZHOMcv2I7uU8YaZNluh2nz/c1GISxRJs6vGNi3IQcw8f0uZE24gU84waMWz6fx2w48pcgZx2T7hUgKmL90zIBo2GTJsJIcKmRW+vZZHtXg3HWcIuElXpjYFz9sGhhHkx1DL6qeZWiTe68RU0myETWQH0MHY1RvKXvrwpD5tpYpMjAzmPAJePADj1Q+KznUFObwg38hAo4NUQtrFgoPKjGc7HrwOYKZTnEPptsY7nO6V0xGwIBaFxC5QGSvOJFUxvqO+2qZJL6JpFsuIECeACe2Un8oO/ou8CRgxnFpX7DM+zI7kY1c7zq22SLY7Xyx6RCK+4uzxr5HjrzobK96w3ALuecgjA4gjmYUWfZXD5MZRPFiDY7atNsSKVjB1/a9y2O6V/t0YCmX5NR9jPkzFXW43pqOTe+FiK39r6spLDUwhrKLGdRXiT3YZ5Ntv3NhbUJfdHYeQsmUi91XmqdtzQZTDH1w8mi/cLxlNUl9bHpMxc4nMB0AawrB6y4gR2C1wp97nin3YiMUsu1OFbNH2PQmhJ8UQaYSy57wDyLbPubi04d03YECEtBiAk2G4Xr6xg1m0Z9ILC8EY8tOK5SuOFi/S2Rh3blpq2EnGAzzz4tWNLf0DqdL1ssn8mPvTAd2n9JfYQPIe6bfy2syJtRlh5vSj+3m022/c3FruZ9Fgzh3QnvTaDGvbt8NL8f9XviPftJ+nmnfsx1qOLU2SC1cf2+lkrDUFzXmPtqMKjMzRfcEN+roZC4SBjtx5ueBvwwlgI4WSdeZ0A8x5TgZen8vyjGmFy0RqqI9S8B4SNdlABy3Pm+tQW0/TCfbPPhbiwcHh4eK5zGyshT2ZnCXqo8l692D2mfq7N0mfD8UthfetzrOJ74dKpwcB2xl2DW3GaR7btsWu1wdjlfqhtSGpOK5cldW6I5x2pLrBvt10T/CAznxS1lOGBlY09V4NdNpVlk22wucYgDH+bQkflKQ4yMnZVMHZXhCnGewvQWk61Pu8VcqUJw3Ei6N/uFTW5lNa60P2n9+s5b15Y5VjYny7bbXFiSc3XKH5UhZJyZyOsjru+pP4SoP9biDRlnUF3Nl3OX+3RrUNtbVhm5KJGN686WybI9+o8lHecklFguroBTFxeu6o7q8EUBWo+LgNWRcOEOJ/9IbnWAFwYk/mDZuTzpXeuFoW1kOM1zkmxP3lwbmVXFTsVQXOSnim+Ddi7mtBU0PJrtubSQa84tLKx+86tJeDhn8j8y3JX7zZ902QxRNrhKWyrkwP9c4YWOUZb8hQAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = \\left(1 - e^{- t}\\right) e^{- t} \\theta\\left(t\\right)$" ], "text/plain": [ " ⎛ -t⎞ -t \n", "y(t) = ⎝1 - ℯ ⎠⋅ℯ ⋅θ(t)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solution = sym.dsolve(ode.subs(x, sym.exp(-2*t)*sym.Heaviside(t)))\n", "integration_constants = sym.solve(\n", " (solution.rhs.limit(t, 0, '-'), solution.rhs.diff(t).limit(t, 0, '-')), 'C1')\n", "y1 = solution.subs(integration_constants)\n", "y1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets plot the output signal derived by explicit solution of the ODE" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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41SyGmAX/MmkgdUE2i2hFWhdSigOWjrrCETbFvXpB32uk3jkUrGkai+1viliuTv0jtFtWsCjZ072rtDm4HJPRkEmTspT1qGTNH02mQfUIsllPNr70Pz+mfS7ALu8LdsKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTE2IC90IDEyMSAveSBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9iago8PCAvdCAxNiAwIFIgL3kgMTcgMCBSID4+CmVuZG9iagoyMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM5MiA+PgpzdHJlYW0KeJw9UktuBTEI288puECl8E1ynqne7t1/W5vMVKoKLwO2MZSXDKklP+qSiDNMfvVyXeJR8r1samfmIe4uNqb4WHJfuobYctGaYrFPHMkvyLRUWKFW3aND8YUoEw8ALeCBBeG+HP/xF6jB17CFcsN7ZAJgStRuQMZD0RlIWUERYfuRFeikUK9s4e8oIFfUrIWhdGKIDZYAKb6rDYmYqNmgh4SVkqod0vGMpPBbwV2JYVBbW9sEeGbQENnekY0RM+3RGXFZEWs/PemjUTK1URkPTWd88d0yUvPRFeik0sjdykNnz0InYCTmSZjncCPhnttBCzH0ca+WT2z3mClWkfAFO8oBA7393pKNz3vgLIxc2+xMJ/DRaaccE62+HmL9gz9sS5tcxyuHRRSovCgIftdBE3F8WMX3ZKNEd7QB1iMT1WglEAwSws7tMPJ4xnnZ3hW05vREaKNEHtSOET0ossXlnBWwp/yszbEcng8me2+0j5TMzKiEFdR2eqi2z2Md1Hee+/r8AS4AoRkKZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDI0NyA+PgpzdHJlYW0KeJxNUbttRDEM698UXOAA62t5ngtSXfZvQ8kIkMIgoS8ppyUW9sZLDOEHWw++5JFVQ38ePzHsMyw9yeTUP+a5yVQUvhWqm5hQF2Lh/WgEvBZ0LyIrygffj2UMc8734KMQl2AmNGCsb0kmF9W8M2TCiaGOw0GbVBh3TRQsrhXNM8jtVjeyOrMgbHglE+LGAEQE2ReQzWCjjLGVkMVyHqgKkgVaYNfpG1GLgiuU1gl0otbEuszgq+f2djdDL/LgqLp4fQzrS7DC6KV7LHyuQh/M9Ew7d0kjvfCmExFmDwVSmZ2RlTo9Yn23QP+fZSv4+8nP8/0LFShcKgplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggOTAgPj4Kc3RyZWFtCnicTY1BEsAgCAPvvCJPUETQ/3R60v9fq9QOvcBOAokWRYL0NWpLMO64MhVrUCmYlJfAVTBcC9ruosr+MklMnYbTe7cDg7LxcYPSSfv2cXoAq/16Bt0P0hwiWAplbmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggODAgPj4Kc3RyZWFtCnicRYy7DcAwCER7pmAEfiZmnyiVs38bIErccE+6e7g6EjJT3mGGhwSeDCyGU/EGmaNgNbhGUo2d7KOwbl91geZ6U6v19wcqT3Z2cT3Nyxn0CmVuZHN0cmVhbQplbmRvYmoKMjYgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNDcgPj4Kc3RyZWFtCnicPU+5DQMxDOs9BRc4wHosW/NckOqyfxvKRlIIIkDxkWVHxwpcYgKTjjkSL2k/+GkagVgGNUf0hIphWOBukgIPgyxKV54tXgyR2kJdSPjWEN6tTGSiPK8RO3AnF6MHPlQbWR56QDtEFVmuScNY1VZdap2wAhyyzsJ1PcyqBOXRJ2spH1BUQr10/5972vsLAG8v6wplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTQ5ID4+CnN0cmVhbQp4nDWPSw4DIQxD9zmFLzBSfoRwHqqupvffNmFaCQkL2y/BFoORjEtMYOyYY+ElVE+tPiQjj7pJORCpUDcET2hMDDNs0iXwynTfMp5bvJxW6oJOSOTprDYaooxmXsPRU84Km/7L3CRqZUaZAzLrVLcTsrJgBeYFtTz3M+6oXOiEh53KsOhOMaLcZkYafv/b9P4CezIwYwplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNDkgPj4Kc3RyZWFtCnicMza0UDBQMDQwB5JGhkCWkYlCiiEXSADEzOWCCeaAWQZAGqI4B64mhysNAMboDSYKZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMxNyA+PgpzdHJlYW0KeJw1UktyQzEI279TcIHOmL99nnSyau6/rYQnK7AtQEIuL1nSS37UJdulw+RXH/clsUI+j+2azFLF9xazFM8tr0fPEbctCgRREz34MicVItTP1Og6eGGXPgOvEE4pFngHkwAGr+FfeJROg8A7GzLeEZORGhAkwZpLi01IlD1J/Cvl9aSVNHR+Jitz+XtyqRRqo8kIFSBYudgHpCspHiQTPYlIsnK9N1aI3pBXksdnJSYZEN0msU20wOPclbSEmZhCBeZYgNV0s7r6HExY47CE8SphFtWDTZ41qYRmtI5jZMN498JMiYWGwxJQm32VCaqXj9PcCSOmR0127cKyWzbvIUSj+TMslMHHKCQBh05jJArSsIARgTm9sIq95gs5FsCIZZ2aLAxtaCW7eo6FwNCcs6Vhxtee1/P+B0Vbe6MKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMSA+PgpzdHJlYW0KeJxFj8sNBCEMQ+9U4RLyGT6ph9We2P6v6zCaQUL4QSI78TAIrPPyNtDF8NGiwzf+NtWrY5UsH7p6UlYP6ZCHvPIVUGkwUcSFWUwdQ2HOmMrIljK3G+G2TYOsbJVUrYN2PAYPtqdlqwh+qW1h6izxDMJVXrjHDT+QS613vVW+f0JTMJcKZW5kc3RyZWFtCmVuZG9iagozMSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDI0OCA+PgpzdHJlYW0KeJwtUTmSA0EIy+cVekJz0++xy5H3/+kKygGDhkMgOi1xUMZPEJYr3vLIVbTh75kYwXfBod/KdRsWORAVSNIYVE2oXbwevQd2HGYC86Q1LIMZ6wM/Ywo3enF4TMbZ7XUZNQR712tPZlAyKxdxycQFU3XYyJnDT6aMC+1czw3IuRHWZRikm5XGjIQjTSFSSKHqJqkzQZAEo6tRo40cxX7pyyOdYVUjagz7XEvb13MTzho0OxarPDmlR1ecy8nFCysH/bzNwEVUGqs8EBJwv9tD/Zzs5Dfe0rmzxfT4XnOyvDAVWPHmtRuQTbX4Ny/i+D3j6/n8A6ilWxYKZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIxMCA+PgpzdHJlYW0KeJw1UMsNQzEIu2cKFqgUAoFknla9df9rbdA7YRH/QljIlAh5qcnOKelLPjpMD7Yuv7EiC611JezKmiCeK++hmbKx0djiYHAaJl6AFjdg6GmNGjV04YKmLpVCgcUl8Jl8dXvovk8ZeGoZcnYEEUPJYAlquhZNWLQ8n5BOAeL/fsPuLeShkvPKnhv5G5zt8DuzbuEnanYi0XIVMtSzNMcYCBNFHjx5RaZw4rPWd9U0EtRmC06WAa5OP4wOAGAiXlmA7K5EOUvSjqWfb7zH9w9AAFO0CmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0Jhc2VGb250IC9EZWphVnVTYW5zIC9DaGFyUHJvY3MgMjEgMCBSCi9FbmNvZGluZyA8PAovRGlmZmVyZW5jZXMgWyA0MCAvcGFyZW5sZWZ0IC9wYXJlbnJpZ2h0IDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIDUyIC9mb3VyIC9maXZlCi9zaXggNTYgL2VpZ2h0IDExNiAvdCBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMTkgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTggMCBSID4+CmVuZG9iagoxOSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjE4IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIxIDAgb2JqCjw8IC9laWdodCAyMiAwIFIgL2ZpdmUgMjMgMCBSIC9mb3VyIDI0IDAgUiAvb25lIDI1IDAgUiAvcGFyZW5sZWZ0IDI2IDAgUgovcGFyZW5yaWdodCAyNyAwIFIgL3BlcmlvZCAyOCAwIFIgL3NpeCAyOSAwIFIgL3QgMzAgMCBSIC90d28gMzEgMCBSCi96ZXJvIDMyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjAgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMzIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MjcxMzEwNTArMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjQsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjQpID4+CmVuZG9iagp4cmVmCjAgMzQKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDkzMTYgMDAwMDAgbiAKMDAwMDAwOTExMSAwMDAwMCBuIAowMDAwMDA5MTU0IDAwMDAwIG4gCjAwMDAwMDkyNTMgMDAwMDAgbiAKMDAwMDAwOTI3NCAwMDAwMCBuIAowMDAwMDA5Mjk1IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMiAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIzMjkgMDAwMDAgbiAKMDAwMDAwMzM0NCAwMDAwMCBuIAowMDAwMDAzMTM2IDAwMDAwIG4gCjAwMDAwMDI4MTMgMDAwMDAgbiAKMDAwMDAwNDM5NyAwMDAwMCBuIAowMDAwMDAyMzUwIDAwMDAwIG4gCjAwMDAwMDI2MDEgMDAwMDAgbiAKMDAwMDAwNzg4NSAwMDAwMCBuIAowMDAwMDA3Njg1IDAwMDAwIG4gCjAwMDAwMDcyOTkgMDAwMDAgbiAKMDAwMDAwODkzOCAwMDAwMCBuIAowMDAwMDA0NDM5IDAwMDAwIG4gCjAwMDAwMDQ5MDQgMDAwMDAgbiAKMDAwMDAwNTIyNCAwMDAwMCBuIAowMDAwMDA1Mzg2IDAwMDAwIG4gCjAwMDAwMDU1MzggMDAwMDAgbiAKMDAwMDAwNTc1OCAwMDAwMCBuIAowMDAwMDA1OTgwIDAwMDAwIG4gCjAwMDAwMDYxMDEgMDAwMDAgbiAKMDAwMDAwNjQ5MSAwMDAwMCBuIAowMDAwMDA2Njk1IDAwMDAwIG4gCjAwMDAwMDcwMTYgMDAwMDAgbiAKMDAwMDAwOTM3NiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDMzIDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNCA+PgpzdGFydHhyZWYKOTUzMwolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-27T13:10:50.032083\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sym.plot(y1.rhs, (t, -1, 10), ylabel=r'$y(t)$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The impulse response $h(t)$ is computed by solving the ODE for a Dirac impulse as input signal, $x(t) = \\delta(t)$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH8AAAAYCAYAAADTTCLxAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE40lEQVRoBe2a7VHcMBCGjwwFAOkAOiBQQY4OAlRA6IAMv+Afk3QAHTCkA0gFBDoIHYTQAXkfIXnkRbZ1PvlC4HZGJ1na712tZMPC4+PjaA7DeeD4+PhG3LfV3w0npR/nhXnw+zkuh0oBXxLeH/ULOfizxnk3a4FvTN5Y9t6+VJuLBF+ZvZpjYC5eDq+XjIOdal+lI23EWG19CJ3Ft7fvpw6+hB/IqFzDcAr4rxpk453aFxn5oHbCWK14BRDPqXzvznwx4Wy6UNtQu9fzmvpOEN4nIW2qx9AsEC4KP6g/yyL4j5FkI7fpZfUkQSN4n7z3COd67kwU4Uzt+9qFTwy5mf5Uv9+oqV8QDgnzQ/2HFK5fh9+WxrWbrp6Z/6i+1Skpvv9iTnpS2VwJ75C/H2xVz3l/oX65jUbrlx7vTGN8eqO+dfN5vKl9v2gUw8gTM9f0iDNOmxY1j/GcR/cJHOig70yyBO3Mp+RsduLWhILx5RU0PlgcebUdredwJ3BVUM9URPDW1Wq4RnYR31dnvoQRLMAp/DRs/d0RTVvpxlmcfc92t6eDnkx/rcDuvfbGHaq31Y/k4Ah0CeDxQtd1iSvi+yr4ktoYrKBR6BU0zpuaMWEt6kmm79GzHUK/Yydf0TPVbU2++qyec9xuApcQmq82m8ZhM6w0+UE4xXwfl32CdeWZI5zMJTurc0zjACRKpXSYFC08KOUYQfZSvrhIXqv/pj4G6OHTVj1i/MHG0g19CcZvLwTbuaHbgPnl7k60lO3kseblEUR7Ud7wnNs2VjHfu+B7ZQg0wDupE66ewFGWtlmIACXJ7BoIn4CGBBrrGUWb4JcWSJZOEB9kZeFGzG5FZ/WOlp+GwoEv/PkE685Z9fiCZLDB0VQRoBoAdgOFGLQFv5jvXfClRHDsngy3gkMpctr6H+bu4wkzJuhtFxbQoe8628AbSafkDnKLU/yIL/K5bVPdYn3xB/NDwa5nfCi5sQyqAZc+G4MYp5jvQ/BdsIwDEEgmps7tFc23lUScl6LTdAUYmEqsCmEGg1C9lmQ7ly+A9+1LPdtd6RYL/eBXKmRVmTTGFwT/pENGMd+H4D8LlpRhV9DOO5SpLXsjwo6qrZmHLiMM+iCPzm7pbO8jgwiDqfcPQ1tZwuW39x1oUt8vthBQailBcTlEaYCS3bRrcehIdNXOQYaarRTQw6cTRDvYmS/h4XWsU4/CCNav3C/40GP9ZMUW8z0732WchFbB8tK4lISPD4wpU+Esomd3p6B23ouGUga+NZadH/il+FRz4jHIme/lh8+qlTwG6K3WdXTVaHIexJMNVUNFlibwR84Fs5jvCT7BsoHXlNvZoeTzvhqXIwK5CVICqqCKht3NF6uUE/ksbBMiwW7QKd5kaonldWaeNhTgD3wziuTlfu4u5nuCjxK80lkgC3el3FjNZiRJkaKBB7inonGvM+qbztOx8GqOh3iWIN3c93T1BJpXT4Ajami99iSHV2qqJ98Unv39Q3NNUMz3tT/sNElLzUtxnFW9G6dwmua80dyoMXwOE3qglO/fTSg3Rme39N0hVAfo59DPA0V83zv4yj7uAJznlK5s8PjQxXeIbPo5orsnFPF97+D7IPCRInwoyY0L+H0rRq6Mt4A3ve/5791p2tHR0araQQ4P8MDPwZ3jdMdlWt//BToAg++e4dCIAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle h{\\left(t \\right)} = e^{- t} \\theta\\left(t\\right)$" ], "text/plain": [ " -t \n", "h(t) = ℯ ⋅θ(t)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h = sym.Function('h')(t)\n", "solution2 = sym.dsolve(ode.subs(x, sym.DiracDelta(t)).subs(y, h))\n", "integration_constants = sym.solve((solution2.rhs.limit(\n", " t, 0, '-'), solution2.rhs.diff(t).limit(t, 0, '-')), 'C1')\n", "h = solution2.subs(integration_constants)\n", "h" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets plot the impulse response $h(t)$ of the LTI system" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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hnkPRSN+BuVabmBlrYOfhh2a97ZoKP/kJ3sWeLXPD96rQqEKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTA0IC9oIDExNiAvdCBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9iago8PCAvaCAxNiAwIFIgL3QgMTcgMCBSID4+CmVuZG9iagoyMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM5MiA+PgpzdHJlYW0KeJw9UktuBTEI288puECl8E1ynqne7t1/W5vMVKoKLwO2MZSXDKklP+qSiDNMfvVyXeJR8r1samfmIe4uNqb4WHJf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IDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDE4IDAgUiA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMSAwIG9iago8PCAvZWlnaHQgMjIgMCBSIC9mb3VyIDIzIDAgUiAvb25lIDI0IDAgUiAvcGFyZW5sZWZ0IDI1IDAgUgovcGFyZW5yaWdodCAyNiAwIFIgL3BlcmlvZCAyNyAwIFIgL3NpeCAyOCAwIFIgL3QgMjkgMCBSIC90d28gMzAgMCBSCi96ZXJvIDMxIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjAgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMyIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MjcxMzEwNTErMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjQsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjQpID4+CmVuZG9iagp4cmVmCjAgMzMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDg5MjAgMDAwMDAgbiAKMDAwMDAwODcxNSAwMDAwMCBuIAowMDAwMDA4NzU4IDAwMDAwIG4gCjAwMDAwMDg4NTcgMDAwMDAgbiAKMDAwMDAwODg3OCAwMDAwMCBuIAowMDAwMDA4ODk5IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OSAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIxOTUgMDAwMDAgbiAKMDAwMDAwMzI4NCAwMDAwMCBuIAowMDAwMDAzMDc2IDAwMDAwIG4gCjAwMDAwMDI3NTMgMDAwMDAgbiAKMDAwMDAwNDMzNyAwMDAwMCBuIAowMDAwMDAyMjE2IDAwMDAwIG4gCjAwMDAwMDI1MDIgMDAwMDAgbiAKMDAwMDAwNzUwMiAwMDAwMCBuIAowMDAwMDA3MzAyIDAwMDAwIG4gCjAwMDAwMDY5MTkgMDAwMDAgbiAKMDAwMDAwODU1NSAwMDAwMCBuIAowMDAwMDA0Mzc5IDAwMDAwIG4gCjAwMDAwMDQ4NDQgMDAwMDAgbiAKMDAwMDAwNTAwNiAwMDAwMCBuIAowMDAwMDA1MTU4IDAwMDAwIG4gCjAwMDAwMDUzNzggMDAwMDAgbiAKMDAwMDAwNTYwMCAwMDAwMCBuIAowMDAwMDA1NzIxIDAwMDAwIG4gCjAwMDAwMDYxMTEgMDAwMDAgbiAKMDAwMDAwNjMxNSAwMDAwMCBuIAowMDAwMDA2NjM2IDAwMDAwIG4gCjAwMDAwMDg5ODAgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzMiAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzMgPj4Kc3RhcnR4cmVmCjkxMzcKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-27T13:10:51.285743\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sym.plot(h.rhs, (t, -1, 10), ylabel=r'$h(t)$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As alternative to the explicit solution of the ODE, the system response is computed by evaluating the convolution $y(t) = x(t) * h(t)$. Since `SymPy` cannot handle the Heaviside function properly in integrands, the convolution integral is first simplified. Both the input signal $x(t)$ and the impulse response $h(t)$ are causal signals. Hence, the convolution integral degenerates to\n", "\n", "\\begin{equation}\n", "y(t) = \\int_{0}^{t} x(\\tau) \\cdot h(t - \\tau) \\; d\\tau\n", "\\end{equation}\n", "\n", "for $t \\geq 0$. Note that $y(t) = 0$ for $t<0$." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAALoAAAAaCAYAAAAAEkYfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGSklEQVR4Ae2b21EcORSGxxQBjO0MIANsR2DIwGYjMGSAiyd4c+EM7I3AlwzwRuCFDCCDZScD9v9kqUuo1Wr1IM10e0dVQmr1uevo6Eg9PLm/v59tStsC5+fnVxp9q/a2/Xa6I9JnLulPrQY7tn2n8YWv1e+m/5avXM2+DHekul+TRynakhNn2FP7Wzm5tc+F9Hpv61uN3amyqJvSpb/GPzVAE+usxNFloDeyywu1PyZiHxbk9URkHSpmGHAuRGBHc7PnEerSn0Vy6cFNplvd0WUYs1WqPR67VSQjE87EU2f0VX0HGLsKOfIxD3/HAKVrUn+9Z4f7pvYkhl97DPlyeEThyNFr1rOzs0vVo5o8StOWvFeqb0rTHSM96XmheuPL1qc/8KpzH6d2X/xOVLPmRHD7wPsyVY3odmW9VPs5ZyWOCIYoPpU0a2mzaV7Q06SVAZE+/cnV/wxwsh7F80SVnTJ7txQsMj5X+z2HieDM3Kk9cvDbrlOpfS+6a3NyKcqEmTSkR79jwZqDp1ry04XaB7cQPfhreb2Mfk5Q4ZIGYBvOTo2u6ufoz5ziqHMf19HuagVLfk/q8xFc9TkE73bBM27hTtW+iMF5dA7Uby4P1IfHlepX1UVtR2dFHcQEXMWYFORAOZR/E82Ez2SQtw4+mAoHhwG32kK3cg3VbyY8nJybF4NrnxnHUXr1FxyBAJscqmbpJ3h37jHwlgb24XYrZV/wUrc9xs6CuVMNC3jgH1dLXVDAco0efEKJRvRMhPlp5TlV20SJgTKySKijKpoXnBwH+GSdjHli53WOkqs/88r1ZG+xvsAB1jh7gIA8qXIo/NRiYrHeCmYRErF44M+rObqYstKiAoQCjewZJ9iVcdiNvsQMODJ5h4pDusDc0Lp65OmZq/+N8F+q5hQTMMSjOfeo74LAsy4CgiE37ws06JLK3cE/3O5iUmD8lWi0VlkBug0JayyM+I8dJBqxJS/NV7hso6O4Cq2k31Nrq2gzQH/sRI6ezNOtDjgsu4Zf3CJJOTLRulkcDlk0cW7miMXCjkD6803tT7Uf1foF/IOajo4Qbjv0GRfpW2WJPnymx+gztWzDOH5oVF5PqkxAPze3OJqxf4eB3c1H6LAutU05OouBOX5QZBto/VDLAtpXmzqnsPPs13R0tqSUEnq9XJFiGJcTPLclvpFZ6ZP8cudbYiL6uV2zM/WwOv1hW25OfDVxUg61KR/pC5Y4uD//Pn3XZ0HubIsRxP5Spc0tTRRNIHQKWYCnW+Vsm+4r3XPJcqnnMHIkRHz8K/FDFhZYWIwD6H0sDbrWeOogNxr9QqW8ZxwopxC5ib6NvurjGzj6hx4C2HCRgMHuqfwcVBbSHEeHUPSOEqhHFOhGV3sBnkZB0QnzsUeIuxyqZIg58kzjTCTXZ8vIOBr9ElZxc9vp8NJ9bvHDXZZrSUrqNuUXRMdfS9vt7B1QZtgslq0UxMjfuSvAkYu5tHhj1885MQGtr4TpBWeoz3LWPlwWkeMT8jC7qGg0O7i3sHxY8O9qOrrZMnyOBfvQJlVpFSlLJJ16mYJ+ORG95ch2fsDNuTDADkTtWHmQn1u6MVh43W7HKBQaIyKdFqIVkjFfu/xBu5oZj32U8EGn0J+CfjgVh8mWMwcGJoc2Udmbo9cZeJBhJ+CaOlaMA/PC0iVNjOXrpOXXNR0dITksUvuMgbzZRfTY9qCLQ3B9ROE5mi//ej2dvxPRDwdq0oaEdd/pHb+LYWHwnePBb1ISeLz6osr9eKywI/B111xfqu06C5HiHD/hp4y1ipj/K9rc0OQYpJYYa6ErnR9zGF2LzEOYSj++quJoSx8oc/iJPoEs55avRU64LC5u4na3Wm/LDnwVudRlfllu46LGLlZ0JxuLenIcUpE9Vea3dmmlcQMYEvXBn9V2dO6D3Zcx+P1vipyBu+Oq0W6NxuR68Lv0q76QrQ3Jv4nO2cXCg2fmoKqjiwl5uvtUmy3kBnD0FiBS5tyalFKEj03uI1ouTeCbM1tVR7cScRipdfuSq/QGrpAFFLzYocnNufpbSREvdg5+7uG+gif5Wrjmn2kArnoYddKIMQezV2pXGQUc+01byAKaP9IHnHxy565VRPSZDMP95o1a8zWrkN03ZFZvAQJV85uV1bNfnuN/C/J+3KFadwgAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle - \\left(- e^{- t} + e^{- 2 t}\\right) \\theta\\left(t\\right)$" ], "text/plain": [ " ⎛ -t -2⋅t⎞ \n", "-⎝- ℯ + ℯ ⎠⋅θ(t)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tau = sym.symbols('tau', real=True)\n", "\n", "y2 = sym.integrate(sym.exp(-2*tau) * h.rhs.subs(t, t-tau), (tau, 0, t))\n", "y2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets plot the output signal derived by evaluation of the convolution" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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FWhdSigOWjrrCETbFvXpB32uk3jkUrGkai+1viliuTv0jtFtWsCjZ072rtDm4HJPRkEmTspT1qGTNH02mQfUIsllPNr70Pz+mfS7ALu8LdsKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTE2IC90IDEyMSAveSBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjggNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjE3IDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTcgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwOAo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTk1IDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNSAwIG9iago8PCAvdCAxNiAwIFIgL3kgMTcgMCBSID4+CmVuZG9iagoyMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM5MiA+PgpzdHJlYW0KeJw9UktuBTEI288puECl8E1ynqne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buEnanYi0XIVMtSzNMcYCBNFHjx5RaZw4rPWd9U0EtRmC06WAa5OP4wOAGAiXlmA7K5EOUvSjqWfb7zH9w9AAFO0CmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0Jhc2VGb250IC9EZWphVnVTYW5zIC9DaGFyUHJvY3MgMjEgMCBSCi9FbmNvZGluZyA8PAovRGlmZmVyZW5jZXMgWyA0MCAvcGFyZW5sZWZ0IC9wYXJlbnJpZ2h0IDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIDUyIC9mb3VyIC9maXZlCi9zaXggNTYgL2VpZ2h0IDExNiAvdCBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMTkgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTggMCBSID4+CmVuZG9iagoxOSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjE4IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIxIDAgb2JqCjw8IC9laWdodCAyMiAwIFIgL2ZpdmUgMjMgMCBSIC9mb3VyIDI0IDAgUiAvb25lIDI1IDAgUiAvcGFyZW5sZWZ0IDI2IDAgUgovcGFyZW5yaWdodCAyNyAwIFIgL3BlcmlvZCAyOCAwIFIgL3NpeCAyOSAwIFIgL3QgMzAgMCBSIC90d28gMzEgMCBSCi96ZXJvIDMyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMjAgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMzIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MjcxMzEwNTIrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjQsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjQpID4+CmVuZG9iagp4cmVmCjAgMzQKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDkzMDEgMDAwMDAgbiAKMDAwMDAwOTA5NiAwMDAwMCBuIAowMDAwMDA5MTM5IDAwMDAwIG4gCjAwMDAwMDkyMzggMDAwMDAgbiAKMDAwMDAwOTI1OSAwMDAwMCBuIAowMDAwMDA5MjgwIDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDQwMiAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIzMTQgMDAwMDAgbiAKMDAwMDAwMzMyOSAwMDAwMCBuIAowMDAwMDAzMTIxIDAwMDAwIG4gCjAwMDAwMDI3OTggMDAwMDAgbiAKMDAwMDAwNDM4MiAwMDAwMCBuIAowMDAwMDAyMzM1IDAwMDAwIG4gCjAwMDAwMDI1ODYgMDAwMDAgbiAKMDAwMDAwNzg3MCAwMDAwMCBuIAowMDAwMDA3NjcwIDAwMDAwIG4gCjAwMDAwMDcyODQgMDAwMDAgbiAKMDAwMDAwODkyMyAwMDAwMCBuIAowMDAwMDA0NDI0IDAwMDAwIG4gCjAwMDAwMDQ4ODkgMDAwMDAgbiAKMDAwMDAwNTIwOSAwMDAwMCBuIAowMDAwMDA1MzcxIDAwMDAwIG4gCjAwMDAwMDU1MjMgMDAwMDAgbiAKMDAwMDAwNTc0MyAwMDAwMCBuIAowMDAwMDA1OTY1IDAwMDAwIG4gCjAwMDAwMDYwODYgMDAwMDAgbiAKMDAwMDAwNjQ3NiAwMDAwMCBuIAowMDAwMDA2NjgwIDAwMDAwIG4gCjAwMDAwMDcwMDEgMDAwMDAgbiAKMDAwMDAwOTM2MSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDMzIDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNCA+PgpzdGFydHhyZWYKOTUxOAolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-27T13:10:52.567440\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sym.plot(y2, (t, -1, 10), ylabel=r'$y(t)$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Compare the output signal derived by explicit solution of the ODE with the signal derived by convolution. Are both equal?\n", "* Check if the impulse response $h(t)$ is a solution of the ODE by manual calculation. Hint $\\frac{d}{dt} \\epsilon(t) = \\delta(t)$.\n", "* Check the solution of the convolution integral by manual calculation including the Heaviside functions." ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Continuous- and Discrete-Time Signals and Systems - Theory and Computational Examples*." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11" } }, "nbformat": 4, "nbformat_minor": 1 }