{ "metadata": { "name": "", "signature": "sha256:23cf7a01a91c877f2044ac06ef3c7c6956e70a87b5b5e7b9f2033d7cac098e91" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import sympy\n", "\n", "import sympy.physics.mechanics as mech\n", "import os\n", "import matplotlib.pyplot as plt\n", "\n", "from sympy.printing.theanocode import theano_function\n", "from sympy_utils import rhs_to_scipy_ode, \\\n", " save_sympy_expr, load_sympy_expr, gen_fortran_module\n", "from numpy import f2py\n", "import numpy as np\n", "from sympy.utilities import codegen\n", "\n", "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2\n", "sympy.init_printing()\n", "mech.init_vprinting()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Dynamics" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# symbols\n", "m, g, l, t, tau, phi, theta, Q, psi = \\\n", "sympy.symbols('m, g, l, t, tau, phi, theta, Q, psi')\n", "\n", "# state space\n", "x = (theta, Q)\n", "u = (tau,)\n", "no_t_sub = {theta(t).diff(t):Q}\n", "no_t_sub.update({v(t): v for v in x+u})\n", "\n", "# frames \n", "frame_i = mech.ReferenceFrame('i') # inertial\n", "frame_b = frame_i.orientnew( # body\n", " newname='b', rot_type='Body',\n", " amounts=(0, theta(t), 0), rot_order='321')\n", "\n", "# point at center of rotation\n", "point_o = mech.Point('o')\n", "point_o.set_vel(frame_i, 0)\n", "\n", "# point at center of mass\n", "point_cm = point_o.locatenew('cm', -l*frame_b.z)\n", "point_cm.set_vel(frame_b, 0)\n", "point_cm.v1pt_theory(otherpoint=point_o,\n", " outframe=frame_i, interframe=frame_b)\n", "\n", "# particle\n", "ball = mech.Particle(name='ball', point=point_cm, mass=m)\n", "ball.set_potential_energy(m*g*l*sympy.cos(theta(t)))\n", "\n", "# derive eoms\n", "L = mech.Lagrangian(frame_i, ball)\n", "lm = mech.LagrangesMethod(\n", " Lagrangian=L,\n", " qs=[theta(t)],\n", " forcelist=[(frame_b, tau(t)*frame_b.y)], frame=frame_i)\n", "lm.form_lagranges_equations()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}- g l m \\operatorname{sin}\\left(\\theta\\right) + l^{2} m \\ddot{\\theta} - \\tau\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAOIAAAAaBAMAAABY/52QAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEM0yVIl2me9m\nq0RKBzIJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADdklEQVRIDbVWXUiTURh+5rZvm27fpK6MyrGo\nrAgXQl2IOIj+6MIRrYu6aBAhEaFelUT4YRQYWiMItKKW2B/dGHiRF9kgCPoB7SJIIlzRZYFgJIlu\nvec75zs72z5zhr0X789znvc83/mbAv/LBtFtP/WqcMR+YNmo996Q2jOIQbXkuR6uQ6gU/kfkIj6U\n0dm0goob0FbGdi1XUUsDrnfAK5vVjKE5o8CMZmOlir76RBHvdDIP7KD0y74UAsWk679opCtKzjJG\ns7FSRYwX09qMPHIY0EbwE4jlMTPzT1PYooCcpgAitVG8X8qSiM8AKtKYBfoFtlvESvoEb0oULHCa\nAojURnG0lCWRqgjwFpgHDgqsU8SqJPBG8ijhNBXheamikx1Ige1MyPIrZVuh0Rrd7Ry0FJsT0A09\nzxQ02SmTQsVzAx2gA9H7GgYm9Z71xDrVecNZO6EdezAwyXquAHoWvmx+By1FOv2TZzuislXQpBAl\nd3O5XBIFit5q5xwC1fA6atByB+fpIVSjAo4JuGvQTBuKtUBg4fOnacAf45NZiu+BF7lcvlXQFEXv\n5aYTDShUpMs9CzqQ1ooYmg12afUReJmiYxjBNHVvphsRQ5DUPCE+maU4ykvZKmgcNX0rHCyyNboO\nhck2JvAU2gzaEoi2ZNjTos9GfU3EVCSZJJVjQNBAWzu9kWnWDghFTZy+bBU07GFzh4+Y3DPMq7uq\nzcMXwi1Cu8B+hdln7z8+ZypWS8WWdjyhAVPxUjy+LR4/SqVvmBwzq1XQOCh8L4uqon8GjhTWuQB6\nknXQZ1xwRjCeYbsqFGlXaf2/qVEPsXa5RsdE1Cxlq6BxUPhNLKqKnmkE2zHvBZ7BlUVlbBc8BgJp\nRZFuTlXGG6LGopsTTBsEklmtgsZB7p3mQaiKrhlMRZA9AGeWvRG3YcAzAkeEFmitsQ+oTDZGaIbK\nFJ9GnGPwW9KsZaugcRL3dGRkqiJ+9HcDNw22Y74JeD4moPfevqpNLeydWmitfU50+gVwPR5ije4M\n83JXfY94KVsFjaPcB8yPKlAE1qgMm7yCLc+0RhHFGkVVRlAVNXZ6fzd/yhrvEcl3Cyg3qorXonRH\nlrDVYtwVW4K46LCqeOH1w0V51gD7i8zMIbeX1+V7VbGcLmeas16WQ7blLFfRdpJlgU0Ir9j/q+UI\n6+HtfwCJc+Q+1ud37QAAAABJRU5ErkJggg==\n", "prompt_number": 2, "text": [ "\u23a1 2 \u23a4\n", "\u23a3-g\u22c5l\u22c5m\u22c5sin(\u03b8) + l \u22c5m\u22c5\u03b8\u0308 - \u03c4\u23a6" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.Eq(sympy.Symbol('L'), L)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$L = - g l m \\operatorname{cos}\\left(\\theta\\right) + \\frac{l^{2} m}{2} \\left(\\dot{\\theta}\\right)^{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\na11ZDlNADKgAAAAASUVORK5CYII=\n", "prompt_number": 3, "text": [ " 2 2\n", " l \u22c5m\u22c5\u03b8\u0307 \n", "L = -g\u22c5l\u22c5m\u22c5cos(\u03b8) + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 " ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "f = lm.rhs().subs(no_t_sub)\n", "f" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}Q\\\\\\frac{1}{l^{2} m} \\left(g l m \\operatorname{sin}\\left(\\theta\\right) + \\tau\\right)\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAMQAAAAyBAMAAADxQ2lcAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhAimatmzbvd\nRHZFqlmGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAETklEQVRYCd2YW2gcVRjH/zs7M3uZvQTbgCDW\nRRQTscnWJ0FpNiSKD9Jsa1HxwUy9lEIest4vFI2iIhaSFURQwa6oFSPiglDbB5P1Ar4o3UfFgmNf\nirbGeNsm4rp+3zlzspO4G/dI58UDcy7f+Z/vN9/5zmQng0tavyDEMtz6GVvGrw+RgL3jO7A1TAD7\nHtVG3HnfQFnrrrQRxpvA86EirHfJ/e6SDkM3imSNvMeXw0QM18m78VuICPsPdh5rhogwVtm5E2YU\nqQYjsn1c91o0050ViR7xenXPOk1EStz/FzoEXYQ4rhmtVOgi0k17qDBaCDMKnL0Vg89qEXSjgHlo\n6EuYWgzNdLPvD/Bi2Ihj0UrYiCdahbARN23RIminW8+7UP+HdOtSggizqru6J30AYT5S62mJriiA\nQPT/hzDLvWwIq6yX0eV5TxTYR9eNmvIJmRNC54+4GfXaA1Z9c3MJ8ULbFug9zf2uiLeU8rDqqHYi\np3oAqcx+/A5U2rZAL8n9bohMTikfU50OLatSZfwKnPJnb1mnEl66ISKu0m5TnQ4tq14A6LVktz+7\nc53K4t/hdQg2+OWk6tj/+BW9u6DmwKrPYVIUybw0rkfgDbIGEPbBFU/qqL6Ce1cvXYvEMtID+5dm\n00MfkWXXzh/sxRnz9QeWZllAqnQTGXpzM0o8BhTip1ar5Uk3AYSQqOo4dYyqfQ7xKgxnAZM/Yged\nzypScGaQXMC0SwpSxVeee3IZSFRoSMVHGJcduGE/DV+hqxviU5obKVIiIx7GUhVM50BHK90PgxFO\nH7JlUpCK5rIVrP1l8BFjcGgauI4uiaCoAoVuChfTdRHMBiYKKE7WGXeITCcWXIEgv55UZXOYyNPR\n5UVU1EbhRjGcoHotCvPSo8LoV4QwV5Gp4TsyjAAHgW3U2/P+OYGoriEm87iXJgTiyvn5j+fn3xYu\nBkXdRliLRUccD2HnirYg0YBTwjELoEfjE6QbFmwXh+u8UT6CVBThX6RP13hVIIrPxJCPnB/FSSQx\nWRRWWVEio8vI5rFqABfAaiJWuQvRHOLlAIJUkbpRoyUb0g1bblwg3XxGOTVrZYCOTwNzLpp3wG7y\n0U3mcoj2w3EpBBUFqWLePpdWxUpyqcoFbTGXh+nyo3iHPB4RRr/iCL86dRVwOsebkJlB9KkC0oPf\nbzfnVvbOrYwtXkgKUlmPP8hLknWu2xsV98TwPap9BP3bcFsRiUd3nc6cKfBkyuX6Q642KVLFgn2+\nSkUhh3YftRJh9sF6aA8S35Yjz9ANU0mU6LWSMrB5IZVfhvz2a2UQreFRIxEZempbf+Kes8jWYzkx\nexTDRUrsvxR10K1KR+HtbJUIx5OKWRqn8qI/hWteu19aN6mn/DnH7SgSdyARkXGp2IozmDZF3y53\nXLTBqFQvbbDLYcLlViKyGWGjwzyLV+lBOK9lVHwsim0XTtMzOIIDl59XAH8sCv+T199TOBA3WBNS\nzAAAAABJRU5ErkJggg==\n", "prompt_number": 4, "text": [ "\u23a1 Q \u23a4\n", "\u23a2 \u23a5\n", "\u23a2g\u22c5l\u22c5m\u22c5sin(\u03b8) + \u03c4\u23a5\n", "\u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n", "\u23a2 2 \u23a5\n", "\u23a3 l \u22c5m \u23a6" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Measurements" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Accelerometer" ] }, { "cell_type": "code", "collapsed": false, "input": [ "accel = point_cm.acc(frame_i) - frame_i.z*g\n", "accel" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- l \\ddot{\\theta}\\mathbf{\\hat{b}_x} + l \\left(\\dot{\\theta}\\right)^{2}\\mathbf{\\hat{b}_z} - g\\mathbf{\\hat{i}_z}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAANUAAAAsBAMAAAAA8+BhAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMnZmme8iq7uJ\nRFQp1WXSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEGklEQVRYCb1XTYhTVxT+npPfycskOJSi0E4a\nC7OoMMFSOyo4aVddmVApLUUwm9ruGlsEwdKOoov+TkAXrpzQVdFFB0GU2RjqZrpquimii2YjiIoz\nY+toajPPc+7fvJf3kkkT0gO559xzvu987717330zwIBmnzg6YIfe6b/ix97BAyL3oFAZsEXP9O8x\nX+8ZPDBwOT1wi54bvNEzsg/gEcHZrph2uY8WvVLCGYFMSoePe+X1g7up1udDKVlL5vvpojjd19o6\nrWBbShy8/fC+wFsqG+SCatGcnQPiu7qKjZa53V7CrXIw5zjscPYV4QKHoFo0FyWtmzu+DmSoZIGv\nxHpEw0UXLHlquuKaesLONesxljzQtsmkmQtVNZso2rOm0BZ0qaUR9Hw1P97UEbYUTcgUvt9A61YL\nJOgkP2VlkVkd9eOtIyg4rqsN6BETZQLS5miZenfWtYYBiiA8kwduv1wOzXXSOvg3A+cJJoA0fseh\nsM4sKo85GYky46dA6CRWMdVJK7LCWIIpINxfro4sQsedKpNc9hkwUsK6X2ubAkUzHHzOwwgDgcP0\nU9ZNCwc0SvszwCfAml/rjkLIldrHMwEEliua7GeZSkAQp9V4EyG6r0PZybQboLXkSj3hkgAChYbB\n+VimAqTanyGtRrKFcAtTayh4Dg6tJVYKj6mJBAITJdPRx9KVB+/dj09V9Uz60QWM/nPxpxVMlWHz\nCWRMa13ijLVGgwTSBW9sIx9L0e2F+BN8VVUz5Wg1RjJIZVhrzNlYCEBrnWFknLUkkLRqnBLmY6n8\ncpp2kdba+jrbqyjkmUorQKyQ01BQdkorJF4vWlChIZYqVTYwD0v3pOq3CDWNlkZ/QI+/geNo0/ol\nm53OZvm8Dc8yNMT3JYGk2UGLgdIIHs75tBYtTNR55ekKk86FmdXYX2mJV/eVqPJcPEMJbH+GSafi\nvOY0JEmNkSYSZdbyVNZsxOp2TmjR3ki0ztcVXmmlSjVK0BcHCkhaJZpIoyu0H1lN+5lOSD+2glSD\ntLyV1guIFs9XSOs03qE9P/ODZmmt34uc+Zd+EkhnY4MzwgTLKi+f1AnprSZ+rrCWp/J+DdYx/jdg\n8sVLO8nNG5bSCn8h6N/QKIH0Lutb16yQ81ZaoMxw69ANepcd2m7tFQMBFvVy6X2oapddGNrQXhtf\nt8XNu7NXxSSoolGj1T8XVPyHzgm/5Jq5Y5G+XhtvuOq0bWHJj5yvsgGLzBVTT700VXTfy+IGQURJ\nZ4dT9+R+SyeqnPBXPLAOE9cZSB+FzezeR19uBulSl9cpAHQiDNdcf9DYmeFKweIDUVqspKNh+XdN\n47smGlYQy+vOu3UwNB/JqNYmGJoUcEX15sNz2DaeFwrW/mELUf/4HiGSKP0PWjgnRF76z1LPATqh\nFZglE1PRAAAAAElFTkSuQmCC\n", "prompt_number": 5, "text": [ "- l\u22c5\u03b8\u0308 b_x + 2\n", "l\u22c5\u03b8\u0307 b_z - g i_z" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "g_accel = accel.to_matrix(frame_b).subs(\n", " theta(t).diff(t,2), f[1]).subs(no_t_sub).simplify()\n", "g_accel" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}- \\frac{\\tau}{l m}\\\\0\\\\Q^{2} l - g \\operatorname{cos}\\left(\\theta\\right)\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAJEAAABLCAMAAABHo5VYAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRM3dIruJZu9sOnk5UQAAAAlwSFlzAAAOxAAADsQBlSsOGwAABKFJREFUaAXtWtmW\npCAMZZ8ZBcHh//91kgAuVVqLpKf79GketFSWS3ITQighMxUlPrv4AkQImbWBYj8bkEgIQ2VEJPnA\nhDLR4XKPiRuRlk45dxmPENyIEMvUgYcfEYAZ4ldDpNNXQ+T77ISbRyAe3yUidmb3ocHWHyCjTlCX\nEbnRL2Uk5pQl4Ob6PrzLiN4f6sUWnIjclHucdUXMiUgMnWZGmFgRRf2iZh5VY0U09nnrgpMVUQ7g\nTnSSxmhhzHTNd3MikjPMMg0ZJDUrJ8y1oJQTkYEwJDiD9M4QselrMQAnoskgExRcSVr+WpjMiWiW\nyJwZLiStLC4RiRNRFiCeAGEyySlN4pLaOBHpCOwZkM8jGF1Q8ZIH50QEUBjKD6LnQvzOMnI6Gn3J\n3vdy45PRCA7ReTCyzsKGKOGiJuLYiYcx8p9oXbX9USSbjDIhGvK1xWwjWS5ELlP8OGRabTcDvP2T\nC1HItIjJcnsbxqbB90XkinCYtPbr95+N1C7+LDyy/cz++5spD+kps5a+kPUb8pD6C3lIgWG1w5C2\ns3DZGqCJkIvuB/Sd8kedujlvzqe18zHe+/KD6Lm8fmTUK6OoJ31pY/p84NMaD7UWIY5X/evC6eCH\nHx4iwp2FxMTZ/ywPEc2QWQiYnOIvsqYsXcIfabP63CMKUceolhxn3V0Yz3l0KkI9FRwmZzFA3yyI\nd4hiOVJY6ONrKI8V+cpY7EXOcKeQamXrDSI3VvBuLrnpJUXNEPmsEzI11+VRFRR2tjd3O8hxydrj\nITd8XnLmc/e2ZwUk5mItZR+MuV2IrNrnvYziSuOIvMEj14FYFzhp1E4rPM5XltAc0wZUdohCXtWp\nAZwcrbUTqfw5jSxEbLbpHIwj4hAYxmEuUEhjjWm9VyoMNH9TpLDQY4cokgAL1AmEMtNhGT2rOlb5\neHCNUCGUDYkIM6CRoBpJuRLIKjtq3igxFUtWWUGZi8mkBneHyG+8YV4US8M/o1FxEnVvNGLvFqbk\n60ZXDmhUS+62Zro9gah6sQ3uDlFeLdzuN/CbP3LcHz4i5BmFUP17zQEsFBGwu/R5MovzR88LhTad\nlUbQlt7d2Jpf5eIb5FKv7H1qm4ObJH3TAQTYQpuNrYaSJyDUmKtOAT4hciRRXcc8RlQsHgc0N6YF\n2aHi0w7Q4KtE+p6Kr7iXkQ4on1QB0kYKWE+PDX2zv/1eBMkfopHAys1CgyOCCKpTw6f7YknmlUaC\neARMEsXNQreWWre1qTIbRRWbLo6ZLYx3MM2Y1KLyOnge3EMP6VBGqhlGmNGYIJYpMxujsMTsqXYb\nyzmXNmCVbSTdfPGO2cBFNUXjyYHsBGGeHU0NysRlvsIpbTC4EgFXbehuiMkkckzYbdWQ02aNB0fi\nFny8QYT1xQTeZBsf0MsXLpVGL9S8T+mGxagOESlhm796oXusgrQrTH2pwbpctupxIcURIg2u+obZ\nreHJPWJEUbK1JzVuXjdGtddulcARIulxFXinWJWMfqdNi9jaIBuER4hatY+8h7K01SFSszh4/ixE\n57MtiGiNL07ivOrHf1n+oenwj5HGNIfw8SOfjUD/0DRG/APAJjHHYDWr8AAAAABJRU5ErkJggg==\n", "prompt_number": 6, "text": [ "\u23a1 -\u03c4 \u23a4\n", "\u23a2 \u2500\u2500\u2500 \u23a5\n", "\u23a2 l\u22c5m \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 0 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 2 \u23a5\n", "\u23a3Q \u22c5l - g\u22c5cos(\u03b8)\u23a6" ] } ], "prompt_number": 6 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Gyroscope" ] }, { "cell_type": "code", "collapsed": false, "input": [ "gyro = frame_b.ang_vel_in(frame_i)\n", "gyro" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\dot{\\theta}\\mathbf{\\hat{b}_y}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAACIAAAAcBAMAAAD2GXAsAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA3asQzWZEu1SZMu92\niSKllWA0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA90lEQVQYGWNggAIDGANG84kgCwkBhbMd98Ek\nGRiYvwDxH4bbCBEwy4CBGU2EAJc5lIHr/x9kRekWExhWI4twbWb4zMCCLMIYwPADVSSageErqogk\nAxdIzRWXyVDD2b4x8HxjYPkfwPX7AUSI6ZOS9gcGlp8MDPcdICKMDgz8DmCR/n8QEf4LDOsbwCLr\nf0BE7BsYZjOgiiQwAF0HMif/X/Rvg/XbGLgTeAUgIvcd+D4ycBswcB54/QAo8nsB1+4HDPoJkcDQ\nmwNyGcvkSSUXGBjWO8hBTIeT7J8U4GwIg+v/AzQRhnI0gTcMUmgi99cooIk89AQKAABiPEgg0n3+\nfwAAAABJRU5ErkJggg==\n", "prompt_number": 7, "text": [ "\u03b8\u0307 b_y" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "g_gyro = gyro.to_matrix(frame_b).subs(no_t_sub)\n", "g_gyro" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}0\\\\Q\\\\0\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAACAAAABLCAMAAAAml3VfAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRInN3SJm77tsdo1uFAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAWdJREFUSA3tVs16\nhCAMDD+yWyOizfu/awkISJTurYd+ctgVM0wmCUFAURoaxPD5PYAiY+OYhB0Cv9XEACVtbR4kwBm0\n5rTgAliiJ+fXSiEBYWMTLkPAnmKZyBWEZKAEmKmGJACODC+dyQ4YVkK2qPzHj4LhI8DlpWMXkDVM\nQ5Hg9+x4GKZNiTLjRIHnVG+tGCKKaMRY4maXYbKAflwYevMlUdL8AEpGrplc0SDqMATgkiqlS8EF\ng1vShuGKp+19SfXiCzV3NY+eAWnOr2P3HS3fAVYqngHMge0ASFU87HcMnlrbU9q9QgMdwqKOqXQn\nu3i9v7I0f6yKM1/C+X6fzqgSGoCtx1Ynco7KV7QKVGuMDgDWu5hADLqJ7QGg9I7Wc7ZK7whAErvH\n7gu/AjRMNaV3DCae0YVAFCunQ/mtHnK3gAw7fu9c/APA88XhIj5fnG4rnyZ/tu0/XLQcX6isrYds\nkZguWtbCDxIJG87BYcdqAAAAAElFTkSuQmCC\n", "prompt_number": 8, "text": [ "\u23a10\u23a4\n", "\u23a2 \u23a5\n", "\u23a2Q\u23a5\n", "\u23a2 \u23a5\n", "\u23a30\u23a6" ] } ], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Save" ] }, { "cell_type": "code", "collapsed": false, "input": [ "save_sympy_expr({\n", " 't': t, 'x': x, 'u': u, 'f': f,\n", " 'g_dict': {\n", " 'g_accel': g_accel,\n", " 'g_gyro': g_gyro},\n", " 'const': (m, g, l),\n", " }, os.path.join('save','pendulum.sympy'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Generate Code" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sympy_utils" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "pendulum = sympy_utils.create_fortran_module_from_sympy_save(\n", " 'pendulum', os.path.join('save','pendulum.sympy'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "%%timeit\n", "pendulum.compute_a(t=0, x=[1,2], u=1, m=1, l=1, g=9.8)\n", "pendulum.compute_b(t=0, x=[1,2], u=1, m=1, l=1, g=9.8)\n", "pendulum.compute_f(t=0, x=[1,2], u=1, m=1, l=1, g=9.8)\n", "pendulum.compute_g_accel(t=0, x=[0,0], u=0, m=1, l=1, g=9.8)\n", "pendulum.compute_g_accel_h(t=0, x=[0,0], u=0, m=1, l=1, g=9.8)\n", "pendulum.compute_g_gyro(t=0, x=[0,0], u=0, m=1, l=1, g=9.8)\n", "pendulum.compute_g_gyro_h(t=0, x=[0,0], u=0, m=1, l=1, g=9.8)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100000 loops, best of 3: 12.7 \u00b5s per loop\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The lambdify function which uses numpy is sufficiently fast." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def do_sim():\n", " import scipy.integrate\n", " ode = scipy.integrate.ode(pendulum.compute_f, pendulum.compute_a)\n", " ode.set_initial_value([0.1,0])\n", " dt = 0.001\n", " x = []\n", " t = []\n", " u = 0\n", " m = 1\n", " g = 9.8\n", " l = 1\n", " while ode.t +dt < 100:\n", " ode.set_f_params(u, m, g, l)\n", " ode.set_jac_params(u, m, g, l)\n", " x.append(ode.y)\n", " t.append(ode.t)\n", " ode.integrate(ode.t + dt)\n", " plt.plot(t, x)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "do_sim();" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 754 ms, sys: 19.8 ms, total: 774 ms\n", "Wall time: 773 ms\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 14 } ], "metadata": {} } ] }