{ "metadata": { "name": "", "signature": "sha256:54940c2c9b55cf934ebe7a2fc867b65b8709fa7101799b378a8f3845989c1731" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from ipywidgets import StaticInteract, RangeWidget, RadioWidget" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "h = 0.1\n", "\n", "def fn(k,m,y):\n", " return -k*y/m\n", "\n", "#def euler_step(k,m,y,dy):\n", "# F1 = dy\n", "# f1 = fn(k,m,y)\n", "# return [f1*h, F1*h] # [dy, y] update\n", "\n", "def rk2_step(k,m,y,dy):\n", " F1 = dy\n", " f1 = fn(k,m,y)\n", " F2 = dy +f1*h\n", " f2 = fn(k,m,(y+F1*h))\n", " return [(f1+f2)*h/2., (F1+F2)*h/2.] # [dy, y] update\n", "\n", "def main(k,m):\n", " y = 0\n", " dy = 1\n", " i = 0\n", " ylist = []\n", " while i<100:\n", "# array = euler_step(k,m,y,dy)\n", " array = rk2_step(k,m,y,dy)\n", " dy += array[0]\n", " y += array[1]\n", " #print y,dy\n", " ylist.append(y)\n", " i +=1\n", " return ylist\n", "\n", "def plot(k,m):\n", " fig, ax = plt.subplots(figsize=(4, 3),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " alist = main(k,m)\n", " ax.plot(alist, lw=5, alpha=0.4, label = m/k)\n", " ax.legend(loc='upper right')\n", " #ax.set_xlim(0,2*np.pi)\n", " #ax.set_ylim(-1, 1)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot, k=RangeWidget(1., 5., 1.), m=RangeWidget(1., 3., 1.))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "