Last active
August 29, 2015 14:23
-
-
Save domitry/e565a73e52f6cbd11fd6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from math import pi, sin, cos" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 単振り子をオイラー法で解いてみる" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"time = []\n", | |
"result = []\n", | |
"l = 30.\n", | |
"g = 9.8\n", | |
"theta = 0\n", | |
"d_theta = 0.1\n", | |
"h = 1e-3\n", | |
"for i in xrange(0, 50000):\n", | |
" new_theta = theta + h*d_theta\n", | |
" d_theta = d_theta-h*(g/l)*sin(theta)\n", | |
" theta = new_theta\n", | |
" result.append(theta)\n", | |
" time.append(i*h)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x7f904b36ddd0>]" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": [ | |
"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\n", | |
"tUOr+hRs5QAAAABJRU5ErkJggg==\n" | |
], | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f906592b8d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%matplotlib inline\n", | |
"from matplotlib import pylab\n", | |
"pylab.plot(time, result)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"from draw import *" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<html>\n", | |
" <head>\n", | |
" <script type=\"text/javascript\">\n", | |
" if(typeof window.Draw == \"undefined\"){\n", | |
" window.Draw = {};\n", | |
"\n", | |
" require.config({\n", | |
" paths: {\n", | |
" d3: \"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min\",\n", | |
" underscore: \"http://underscorejs.org/underscore\"\n", | |
" }\n", | |
" });\n", | |
"\n", | |
" require([\"underscore\", \"d3\"], function(_, d3){\n", | |
" IPython.notebook.kernel.comm_manager.register_target(\"Draw\", function(comm){\n", | |
" window.Draw.comm = comm;\n", | |
"\n", | |
" comm.on_msg(function(msg){\n", | |
" var mdata = msg.content.data;\n", | |
" var svg = d3.select(\"#\" + mdata[\"canvas_id\"]);\n", | |
"\n", | |
" if(!_.isUndefined(svg)){\n", | |
" /***********************************\n", | |
" msg = {\n", | |
" queue: [{\n", | |
" method: \"append\",\n", | |
" type: \"rect\"\n", | |
" attr: {\n", | |
" width: \n", | |
" height: \n", | |
" }\n", | |
" selector_id: \"1234-5678-9\"\n", | |
" }]\n", | |
" }\n", | |
" ***********************************/\n", | |
" _.each(mdata[\"queue\"], function(m){\n", | |
" switch(m.method){\n", | |
" case \"append\":\n", | |
" var node = svg.append(m.type).attr(\"id\", m.selector_id);\n", | |
" break;\n", | |
" case \"update\":\n", | |
" var node = d3.select(\"#\" + m.selector_id);\n", | |
" break;\n", | |
" case \"delete\":\n", | |
" var node = d3.select(\"#\" + m.selector_id);\n", | |
" node.remove();\n", | |
" break;\n", | |
" }\n", | |
"\n", | |
" if(m.css)node.style(m.css);\n", | |
" if(m.attr)node.attr(m.attr);\n", | |
" });\n", | |
" }\n", | |
" });\n", | |
" });\n", | |
" });\n", | |
" }\n", | |
" </script>\n", | |
" </head>\n", | |
" <body>\n", | |
" <svg id=\"canvasc0c9bcd7-a670-46b6-a7dc-efdfc1d8cf8f\" style=\"width: 500px; background-color: white; height: 500px\">\n", | |
" </svg>\n", | |
" </body>\n", | |
"</html>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"theta = pi/4\n", | |
"c = Canvas()\n", | |
"c.add(Circle(250+200*sin(theta), 200*cos(theta), 20, fill=\"#000\"))\n", | |
"l = Line(250, 0, 250+200*sin(theta), 200*cos(theta))\n", | |
"c.add(l)\n", | |
"c.add(Line(0, 0, 500, 0))\n", | |
"c.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<html>\n", | |
" <head>\n", | |
" <script type=\"text/javascript\">\n", | |
" if(typeof window.Draw == \"undefined\"){\n", | |
" window.Draw = {};\n", | |
"\n", | |
" require.config({\n", | |
" paths: {\n", | |
" d3: \"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min\",\n", | |
" underscore: \"http://underscorejs.org/underscore\"\n", | |
" }\n", | |
" });\n", | |
"\n", | |
" require([\"underscore\", \"d3\"], function(_, d3){\n", | |
" IPython.notebook.kernel.comm_manager.register_target(\"Draw\", function(comm){\n", | |
" window.Draw.comm = comm;\n", | |
"\n", | |
" comm.on_msg(function(msg){\n", | |
" var mdata = msg.content.data;\n", | |
" var svg = d3.select(\"#\" + mdata[\"canvas_id\"]);\n", | |
"\n", | |
" if(!_.isUndefined(svg)){\n", | |
" /***********************************\n", | |
" msg = {\n", | |
" queue: [{\n", | |
" method: \"append\",\n", | |
" type: \"rect\"\n", | |
" attr: {\n", | |
" width: \n", | |
" height: \n", | |
" }\n", | |
" selector_id: \"1234-5678-9\"\n", | |
" }]\n", | |
" }\n", | |
" ***********************************/\n", | |
" _.each(mdata[\"queue\"], function(m){\n", | |
" switch(m.method){\n", | |
" case \"append\":\n", | |
" var node = svg.append(m.type).attr(\"id\", m.selector_id);\n", | |
" break;\n", | |
" case \"update\":\n", | |
" var node = d3.select(\"#\" + m.selector_id);\n", | |
" break;\n", | |
" case \"delete\":\n", | |
" var node = d3.select(\"#\" + m.selector_id);\n", | |
" node.remove();\n", | |
" break;\n", | |
" }\n", | |
"\n", | |
" if(m.css)node.style(m.css);\n", | |
" if(m.attr)node.attr(m.attr);\n", | |
" });\n", | |
" }\n", | |
" });\n", | |
" });\n", | |
" });\n", | |
" }\n", | |
" </script>\n", | |
" </head>\n", | |
" <body>\n", | |
" <svg id=\"canvasa727f97e-4470-454e-96ae-757f364d8a81\" style=\"width: 500px; background-color: white; height: 500px\">\n", | |
" </svg>\n", | |
" </body>\n", | |
"</html>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"from math import pi, sin, cos\n", | |
"theta = result[0]\n", | |
"c = Canvas()\n", | |
"cr = Circle(250+200*sin(theta), 200*cos(theta), 20, fill=\"#000\")\n", | |
"l = Line(250, 0, 250+200*sin(theta), 200*cos(theta))\n", | |
"c.add(cr)\n", | |
"c.add(l)\n", | |
"c.add(Line(0, 0, 500, 0))\n", | |
"c.interval = 0.0005\n", | |
"\n", | |
"def func(i):\n", | |
" if(i > len(result)):\n", | |
" c.timer.stop = True\n", | |
" return\n", | |
" new_x = 250+200*sin(result[i])\n", | |
" new_y = 200*cos(result[i])\n", | |
" cr.update(cx=new_x, cy=new_y)\n", | |
" l.update(x2=new_x, y2=new_y)\n", | |
"\n", | |
"c.loop(func)\n", | |
"c.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"c.stop = True" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Lorenz Attractor" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"x_arr = []\n", | |
"y_arr = []\n", | |
"z_arr = []\n", | |
"p=10\n", | |
"r=28\n", | |
"b=8./3\n", | |
"x=1e-3\n", | |
"y=1e-3\n", | |
"z=1e-3\n", | |
"for i in xrange(0, 50000):\n", | |
" new_x = x + h*(-p*x+p*y)\n", | |
" new_y = y + h*(-x*z + r*x - y)\n", | |
" new_z = z + h*(x*y - b*z)\n", | |
" x_arr.append(new_x)\n", | |
" y_arr.append(new_y)\n", | |
" z_arr.append(new_z)\n", | |
" x = new_x\n", | |
" y = new_y\n", | |
" z = new_z" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pylab.plot(x_arr, z_arr)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"def dsolve1(x0, func, num, h):\n", | |
" result = np.zeros((num, len(x0)))\n", | |
" for i in xrange(0, num):\n", | |
" x = x0 + h*func(x0)\n", | |
" result[i] = x\n", | |
" x0 = x\n", | |
" return result" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def f(y):\n", | |
" return np.array([\n", | |
" -p*y[0]+p*y[1],\n", | |
" -y[0]*y[2] + r*y[0] - y[1],\n", | |
" y[0]*y[1] - b*y[2]\n", | |
" ])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"result = dsolve1(np.array([1e-3, 1e-3, 1e-3]), f, 50000, 1e-3)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"t = result.transpose()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pylab.plot(t[0], t[2])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"length = 50000\n", | |
"h = 1e-3\n", | |
"arr1 = dsolve1(np.array([0.0, 1.0]), lambda x: np.array([x[1], -x[0]]), length, h)\n", | |
"arr2 = np.array([sin(h*i) for i in range(0, length)])\n", | |
"pylab.plot(arr1.transpose()[0])\n", | |
"pylab.plot(arr2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false, | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"pylab.plot(arr1.transpose()[0] - arr2)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# RK4" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def dsolve2(x0, func, num, h):\n", | |
" result = np.zeros((num, len(x0)))\n", | |
" for i in xrange(0, num):\n", | |
" k1 = func(x0)\n", | |
" k2 = func(x0 + (h/2)*k1)\n", | |
" k3 = func(x0 + (h/2)*k2)\n", | |
" k4 = func(x0 + h*k3)\n", | |
" x = x0 + (h/6)*(k1 + 2*k2 + 2*k3 + k4)\n", | |
" result[i] = x\n", | |
" x0 = x\n", | |
" return result" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"length = 50000\n", | |
"h = 1e-3\n", | |
"arr1 = dsolve2(np.array([0.0, 1.0]), lambda x: np.array([x[1], -x[0]]), length, h)\n", | |
"arr2 = np.array([sin(h*i) for i in range(0, length)])\n", | |
"pylab.plot(arr1.transpose()[0])\n", | |
"pylab.plot(arr2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"pylab.plot(arr1.transpose()[0] - arr2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"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.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment