{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simulation of Ball drop and Spring mass damper system\n", "> Simulation of dynamic systems for dummies. This is a very simple description of how to do time simulations of a dynamic system using SciPy ODE (Ordinary Differnetial Equation) Solver.\n", "- toc: true\n", "- branch: master\n", "- badges: true\n", "- comments: true\n", "- categories: [machine learning, regression]\n", "- image: images/for_dummies.jpg\n", "- hide: false\n", "- search_exclude: true\n", "- metadata_key1: metadata_value1\n", "- metadata_key2: metadata_value2" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#hide\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "from scipy.integrate import odeint\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation of a static system to introduce ODEint" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a method that takes a system state and describe how this state will change in time. The method does this by returning time derivatives for each state. The ODE solver will use these time derivatives to calculate new states, for the next time step.\n", "\n", "Here is a method that takes a system to simulate a train that travels with constant speed:\n", "\n", "(The system has only one state, the position of the train)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "V_start = 150*10**3/3600 # [m/s] Train velocity at start\n", "\n", "def train(states,t):\n", " \n", " # states:\n", " # [x]\n", " \n", " x = states[0] # Position of train\n", " dxdt = V_start # The position state will change by the speed of the train\n", " \n", " # Time derivative of the states:\n", " d_states_dt = np.array([dxdt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "x_start = 0 # [m] Train position at start\n", "\n", "# The states at start of the simulation, the train is traveling with constant speed V at position x = 0.\n", "states_0 = np.array([x_start])\n", "\n", "# Create a time vector for the simulation:\n", "t = np.linspace(0,10,100)\n", "\n", "# Simulate with the \"train\" method and start states for the times in t:\n", "states = odeint(func = train,y0 = states_0,t = t)\n", "\n", "# The result is the time series of the states:\n", "x = states[:,0]\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "ax.plot(t,x,label = 'Train position')\n", "\n", "ax.set_title('Train traveling at constant speed')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('x [m]')\n", "a = ax.legend()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The speed can hower be a state too:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def train_2_states(states,t):\n", " \n", " # states:\n", " # [x,V]\n", " \n", " x = states[0] # Position of train\n", " V = states[1] # Speed of train\n", " dxdt = V # The position state will change by the speed of the train\n", " dVdt = 0 # The velocity will not change (No acceleration)\n", " \n", " # Time derivative of the states:\n", " d_states_dt = np.array([dxdt,dVdt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# The states at start of the simulation, the train is traveling with constant speed V at position x = 0.\n", "states_0 = np.array([x_start,V_start])\n", "\n", "# Create a time vector for the simulation:\n", "t = np.linspace(0,10,100)\n", "\n", "# Simulate with the \"train\" method and start states for the times in t:\n", "states = odeint(func = train_2_states,y0 = states_0,t = t)\n", "\n", "# The result is the time series of the states:\n", "x = states[:,0]\n", "dxdt = states[:,1]\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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HV27dmXz5s3fWfcDDzxAv379uPDCC2nWrBmjR48GICcnhzvvvJPWrVvTpk0bpk2bBsD69es599xzad++Pa1bt+azzz4DICUlhZ07d3LfffexbNky2rdvz3333XfUK58DBw7Qr18/2rRpQ4cOHfjoo48AGDlyJDfccAOXXXYZzZo14/7774/q4ylSEHsPZjHio1Xk5HjYUUSkBInmc/4HH3xAu3btaN++PR06dGDfvn289957XHjhhVx33XW0bNmSW265BffIuPfWW2/RtWtXOnToQPfu3dm3bx8As2bN4vzzz6djx45cfvnlbNq06dv5bdu2pWvXrkcdBS1KKp8xtGTJEgYNGsS8efOoX78+jz76KLNnz2bBggW8++67LFmy5Du32bVrF+effz4LFiyga9eu3xbLYy1atIi33nqLTz/9lN/+9rds2rSJl156iSVLlny7/l/84hds3ryZCRMmcPXVVzN//nwWLFhA27Ztj1rXo48+yplnnsn8+fN59NFHj7rumWeeoWzZsixatIjx48fTt2/fbw8tLFiwgGnTprFw4UImTJjAhg0biuiREzl5uw4cpu+odB59+0u+2LAr7DgiUsJE6zn/scceY/jw4cyfP5+PPvqI5ORkANLT03nqqadYtGgRS5cu5dVXX2Xz5s08+uijvP/++8ydO5e2bdvy9NNPc/DgQW6//XZefvll5syZQ58+ffjNb34DQP/+/Xn22Wf5/PPPyc7Ojspjk9CH3R/+z2KWbNhdpOtsWa8yD17dqlC3PeOMM+jUqdO305MnT2bUqFFkZWWxYcMGlixZQsuWLY+6zWmnncbll18OQMeOHfn444/zXPd1111HcnIyycnJnHfeecyaNYtPPvmEXr16kZSURJ06dTj33HOZPXs2nTp1YtiwYWRmZnLdddfRrl27Am/DJ598wt133w1Aq1atqFevHitWrADgkksuoVKlSgA0b96ctWvXUq9evYI/QCJFZOf+Q9w0eiZLN+7mH7060DalatiRRCTKSspz/jnnnMMdd9xBr169uP7666lYsSIAaWlpNGrUCIAePXrwySefAJESfPbZZwNw6NAhzj33XJYuXcrixYu55JJLAMjOziYlJYWtW7dy4MABzjnnHAD69u3Lhx9+WKjtP56ELp/xpkKFCt9eXr58OU8//TQzZ86katWq9OnTJ8+PLShbtuy3l5OSksjKyspz3ce+88zMvt3lfqyLLrqI6dOn88Ybb9C7d2/uv/9+evfuXaBtyG+dAOXKlStQVpFo2r7vEH1GprNi816e69ORi1vUDjuSiJRA0XrOf+CBB7jmmmt444036NSpE9OnTwfy7wHdunVj/PjxR103b9482rZt+51yu3Xr1ph8ekBCl8/CvlqJhd27d1OpUiUqV67Mxo0beeedd+jWrVuh1/fKK69wzz33sGfPHj7++GOefPJJ9u3bx9ixY+nduzdbt27l008/5emnn2bNmjWkpKQwdOhQdu/ezbx5844qn5UqVWLPnj153s95553HxIkTOe+881i6dCkbN26kadOm3543KhKmLXsO0mdkOqu37WNkv1TO+37NsCOJSIyUlOf8lStX0rZtW9q2bcunn37KsmXLSE5OZsaMGaxdu5b69evz4osvcuutt5KWlsbtt9/OqlWraNKkCfv27WPDhg20bNmS9evXM3PmTDp37syhQ4dYvnw5rVq1Ijk5mc8//5yuXbsyceLEIn4kIhK6fMazDh060LJlS1q3bk2TJk2+3cVdWJ06deLyyy9n3bp1PPzww9SuXZsbbriBGTNm0K5dO8yMJ554glq1ajF69GieeOIJypQpQ8WKFZkwYcJR66pduzapqam0adOGK6+8ksGDB3973a233sqwYcNo06YNZcqU4YUXXjjqlZpIWDbtzqTXiBls2JnJmP6dOLtpjbAjiYgARfuc//jjj/Pxxx9TqlQp2rZty6WXXspHH33E2WefzV133cXixYu54IILuOaaazAzRo0aRffu3b99f8Yf//hHmjVrxrRp07jtttvYs2cPWVlZ3HXXXbRq1YoxY8YwePBgKlSowKWXXlpUD8FR7HiHUeNdamqqz549+6h5S5cupUWLFiElCscDDzxAjRo1uOOOO8KOckIl8fcj0bdh5wF6jZjBlj0HGTOgM50bVzul9ZnZHHdPLaJ4cSevsVOkONJzSsR7773H3//+d1555ZWY3Wdej31Bx86ov9vdzJLMbJ6ZvR5MNzazdDNbbmZTzaxsML9cML0iuL5RtLOJSPG3bvt+ug//nG17D/HCoC6nXDxFRCS6YnHY/XZgKVA5mP4z8KS7TzGz54BBwLPBvzvcvamZ9QiW09fqFMAjjzwSdgSRUKzZto+ew2ew71A2E4d00bvaRaREuuSSS759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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,axes = plt.subplots(ncols = 2)\n", "fig.set_size_inches(11,5)\n", "ax = axes[0]\n", "ax.plot(t,x,label = 'Train position')\n", "\n", "ax.set_title('Train traveling at constant speed')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('x [m]')\n", "a = ax.legend()\n", "\n", "ax = axes[1]\n", "ax.plot(t,dxdt,label = 'Train speed')\n", "\n", "ax.set_title('Train traveling at constant speed')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('dx/dt [m/s]')\n", "a = ax.legend()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ball drop\n", "Here is a system where the speed is not constant.\n", "A simulation of a ball drop under the influence of gravity force." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "g = 9.81\n", "m = 1\n", "\n", "def ball_drop(states,t):\n", " \n", " # states:\n", " # [x,v]\n", " # F = g*m = m*dv/dt\n", " # --> dv/dt = (g*m) / m\n", " \n", " x = states[0]\n", " dxdt = states[1]\n", " \n", " dvdt = (g*m) / m\n", " \n", " d_states_dt = np.array([dxdt,dvdt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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tGlD69atefDBBwHIzs5myJAhtG7dmjZt2vDyyy8DMGTIEGbPns2rr77Krl27uPjii7n44ouB375jf+mll2jdujWtW7fmlVdeAXJ7Flq0aMHIkSNp1aoVPXv25OjRo/nzjRLxg4NHMnjvxy2kZ2Z7HSXPzGw68DPQzMwSzGw4RazdhPxrO3fv3k23bt1o164drVu35vvvvwdye0zvu+8+OnTowKWXXkpiYiIAmzZtolevXnTs2JELL7yQtWtzZ4slJiZy44030qlTJzp16sSPP/4IQFJSEj179qR9+/aMHj2a3Gu/RILb9qQ0Zi9J8N8XcM4F7UfHjh3d761evfoP+wpasWLFXGRkpGvWrJkrX768i42Ndc45l5mZ6ZKTk51zziUmJrpGjRq5nJwc55xzZcqUcc45t2XLFteqVas/nHPevHmuZMmSbtOmTS4rK8v16NHDvf/++27nzp2ubt26bt++fS4zM9NdfPHF7sMPP3SxsbGuR48ev77+4MGDzjnnBg8e7N5//33nnHP169d3iYmJvx7zy3ZsbKxr3bq1O3z4sEtNTXUtW7Z0S5cudVu2bHEhISFu2bJlzjnn+vTp4yZPnvyHrIHwMxBxzrnn5qxxEQ996tbuTjmj1wGxLgDaOH99FKW284UXXnBPP/20c865rKwsl5KS+38BcFOmTHHOOffkk0+6O+64wznn3CWXXOLWr1/vnHMuJibGXXzxxc455/r27eu+//5755xz27Ztc82bN3fOOXfnnXe6J5980jnn3KeffuqA37SrvwiE769IXmzal+q6PPO1a//UV+7QkYwzem1e286gvrf76Tz5ySpW70rJ13O2rFWeJ65pdcpjfhk6Avj5558ZNGgQK1euxDnHI488woIFCyhWrBg7d+5k79691KhRI09fu3PnzjRs2BCAvn378sMPPxAaGkr37t35ZQ5X//79WbBgAY899hibN2/mzjvv5KqrrqJnz555/jf+8MMP3HDDDZQpUwaA3r178/3333PttdfSoEED2rVrB0DHjh3ZunVrns8rUpASU48x4cetXBtZi2Y1ynkdJ6gUprazU6dODBs2jMzMTK6//vpf269ixYpx8803AzBgwAB69+7N4cOH+emnn+jTp8+vrz927BgAX3/9NatXr/51f0pKCqmpqSxYsIAPPvgAgKuuuurX3lqRYLRhbyr9xi4k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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "states_0 = np.array([0,0])\n", "t = np.linspace(0,10,100)\n", "states = odeint(func = ball_drop,y0 = states_0,t = t)\n", "x = states[:,0]\n", "dxdt = states[:,1]\n", "\n", "fig,axes = plt.subplots(ncols = 2)\n", "fig.set_size_inches(11,5)\n", "ax = axes[0]\n", "ax.plot(t,x,label = 'Ball position')\n", "\n", "ax.set_title('Ball drop')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('x [m]')\n", "a = ax.legend()\n", "\n", "ax = axes[1]\n", "ax.plot(t,dxdt,label = 'Ball speed')\n", "\n", "ax.set_title('Ball drop')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('dx/dt [m/s]')\n", "a = ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simulating in air, where the ball has a resistance due aerodynamic drag." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "cd = 0.01\n", "\n", "def ball_drop_air(states,t):\n", " \n", " # states:\n", " # [x,u]\n", " # F = g*m - cd*u = m*du/dt\n", " # --> du/dt = (g*m - cd*u**2) / m\n", " \n", " x = states[0]\n", " u = states[1]\n", " dxdt = u\n", " \n", " dudt = (g*m - cd*u**2) / m\n", " \n", " d_states_dt = np.array([dxdt,dudt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "states = odeint(func = ball_drop_air,y0 = states_0,t = t)\n", "x_air = states[:,0]\n", "dxdt_air = states[:,1]\n", "\n", "fig,axes = plt.subplots(ncols = 2)\n", "fig.set_size_inches(11,5)\n", "ax = axes[0]\n", "ax.plot(t,x,label = 'Vacuum')\n", "ax.plot(t,x_air,label = 'Air')\n", "\n", "ax.set_title('Ball drop in vacuum and air')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('x [m]')\n", "a = ax.legend()\n", "\n", "ax = axes[1]\n", "ax.plot(t,dxdt,label = 'Vacuum')\n", "ax.plot(t,dxdt_air,label = 'Air')\n", "\n", "ax.set_title('Ball drop in vacuum and air')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('dx/dt [m/s]')\n", "a = ax.legend()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The very classical dynamic system with a spring, a mass and a damper.\n", "![title](my_icons/spring_mass_damp.png)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "k = 3 # The stiffnes of the spring (relates to position)\n", "c = 0.1 # Damping term (relates to velocity)\n", "m = 0.1 # The mass (relates to acceleration)\n", "\n", "def spring_mass_damp(states,t):\n", " \n", " # states:\n", " # [x,v]\n", " # F = -k*x -c*v = m*dv/dt\n", " # --> dv/dt = (-kx -c*v) / m\n", " \n", " x = states[0]\n", " dxdt = states[1]\n", " \n", " dvdt = (-k*x -c*dxdt) / m\n", " \n", " d_states_dt = np.array([dxdt,dvdt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "y0 = np.array([1,0])\n", "t = np.linspace(0,10,100)\n", "states = odeint(func = spring_mass_damp,y0 = y0,t = t)\n", "x = states[:,0]\n", "dxdt = states[:,1]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "ax.plot(t,x)\n", "ax.set_title('Spring mass damper simulation')\n", "ax.set_xlabel('time [s]')\n", "a = ax.set_ylabel('x [m]')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also add a gravity force" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "g = 9.81\n", "\n", "def spring_mass_damp_g(states,t):\n", " \n", " # states:\n", " # [x,v]\n", " # F = g*m -k*x -c*v = m*dv/dt\n", " # --> dv/dt = (g*m -kx -c*v) / m\n", " \n", " x = states[0]\n", " dxdt = states[1]\n", " \n", " dvdt = (g*m -k*x -c*dxdt) / m\n", " \n", " d_states_dt = np.array([dxdt,dvdt])\n", " \n", " return d_states_dt" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "states_g = odeint(func = spring_mass_damp_g,y0 = y0,t = t)\n", "x_g = states_g[:,0]\n", "dxdt_g = states_g[:,1]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots()\n", "ax.plot(t,x,label = 'No gravity force')\n", "ax.plot(t,x_g,label = 'Gravity force')\n", "\n", "ax.set_title('Spring mass damper simulation with and without gravity')\n", "ax.set_xlabel('time [s]')\n", "ax.set_ylabel('x [m]')\n", "a = ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## SymPy solution\n", "(To be continued...)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "import sympy as sym\n", "import sympy.physics.mechanics as me\n", "from sympy.physics.vector import init_vprinting\n", "init_vprinting(use_latex='mathjax')\n", "x, v = me.dynamicsymbols('x v')\n", "m, c, k, g, t = sym.symbols('m c k g t')\n", "ceiling = me.ReferenceFrame('C')\n", "O = me.Point('O')\n", "P = me.Point('P')\n", "O.set_vel(ceiling, 0)\n", "P.set_pos(O, x * ceiling.x)\n", "P.set_vel(ceiling, v * ceiling.x)\n", "P.vel(ceiling)\n", "\n", "damping = -c * P.vel(ceiling)\n", "stiffness = -k * P.pos_from(O)\n", "gravity = m * g * ceiling.x\n", "forces = damping + stiffness + gravity" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }