diff --git a/hw2_work/.ipynb_checkpoints/hw2_work-checkpoint.ipynb b/hw2_work/.ipynb_checkpoints/hw2_work-checkpoint.ipynb index d39ff0f..a802c7d 100644 --- a/hw2_work/.ipynb_checkpoints/hw2_work-checkpoint.ipynb +++ b/hw2_work/.ipynb_checkpoints/hw2_work-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": true, "slideshow": { @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": true, "slideshow": { @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "collapsed": true, "slideshow": { @@ -74,9 +74,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { - "collapsed": true, + "collapsed": false, "slideshow": { "slide_type": "subslide" } @@ -87,12 +87,12 @@ "wnapprox=@(w) sqrt(0.7*g-w^2);\n", "ode1=@(t,r,w) [r(2);-(0.49*r(2).^2.*r(1)+(0.7*g-w^2).*r(1))./(1+0.49*r(1).^2)];\n", "\n", - "[t1,r1]=ode23(@(t,r) ode1(t,r,1), [0 1.1*8*pi/wnapprox(1)], [10 0]);" + "[t1,r1]=ode23(@(t,r) ode1(t,r,2), [0 20], [10 0]);" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "collapsed": false, "slideshow": { @@ -178,33 +178,23 @@ "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t4\n", + "\t\t\n", + "\t\t5\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t6\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t8\n", + "\t\t10\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t10\n", + "\t\t\n", + "\t\t15\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t12\n", + "\t\t20\n", "\t\n", "\n", "\n", @@ -227,7 +217,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -256,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 11, "metadata": { "collapsed": false, "slideshow": { @@ -306,82 +296,92 @@ "\n", "\n", "\t\n", - "\t\t\n", + "\t\t\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\t\n", - "\t\t10\n", + "\t\t\n", + "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t15\n", + "\t\t\n", + "\t\t100\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t20\n", + "\t\t\n", + "\t\t200\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t25\n", + "\t\t\n", + "\t\t300\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t30\n", + "\t\t\n", + "\t\t400\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t35\n", + "\t\t\n", + "\t\t500\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", + "\t\t600\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t700\n", + "\t\n", + "\n", + "\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t1\n", + "\t\t\n", + "\t\t20\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", + "\t\t\n", + "\t\t40\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t3\n", + "\t\t\n", + "\t\t60\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t4\n", + "\t\t\n", + "\t\t80\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t5\n", + "\t\t100\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\n", "\t\n", "\t\tposition (m)\n", "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\ttime (s)\n", "\t\n", "\n", @@ -391,7 +391,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -413,7 +413,7 @@ } ], "source": [ - "[t5,r5]=ode23(@(t,r) ode1(t,r,5), [0 5], [10 0]);\n", + "[t5,r5]=ode23(@(t,r) ode1(t,r,5), [0 100], [10 0]);\n", "plot(t5,r5(:,1))\n", "xlabel('time (s)')\n", "ylabel('position (m)')" @@ -447,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 19, "metadata": { "collapsed": false, "slideshow": { @@ -460,12 +460,12 @@ "l=1;\n", "wnapprox=@(w) sqrt(g/l-w^2);\n", "ode2= @(t,r,a) [r(2); a*w^2/l*cos(r(1))-(g/l-cos(r(1))*w^2).*sin(r(1))];\n", - "[t0,r0]=ode23(@(t,r) ode2(t,r,0), [0 2*2*pi/wnapprox(w)],[pi/9,0]);" + "[t0,r0]=ode23(@(t,r) ode2(t,r,0), [0 2*2*pi/wnapprox(w)],[0,0]);" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 20, "metadata": { "collapsed": false, "slideshow": { @@ -522,32 +522,32 @@ "\n", "\n", "\t\t\n", - "\t\t-20\n", + "\t\t0\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t0\n", + "\t\t20\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t20\n", + "\t\t40\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t40\n", + "\t\t60\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t60\n", + "\t\t80\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t80\n", + "\t\t100\n", "\t\n", "\n", "\n", @@ -609,7 +609,7 @@ "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\ta=10 m\n", "\n", @@ -618,7 +618,7 @@ "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -640,8 +640,7 @@ } ], "source": [ - "[t10,r10]=ode23(@(t,r) ode2(t,r,10), [0 2*2*pi/wnapprox(w)],[pi/9,0]);\n", - "\n", + "[t10,r10]=ode23(@(t,r) ode2(t,r,10), [0 2*2*pi/wnapprox(w)],[0,0]);\n", "plot(t0,r0(:,1)*180/pi,t10,r10(:,1)*180/pi)\n", "xlabel('time (s)')\n", "ylabel('angle (deg)')\n", @@ -906,7 +905,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 21, "metadata": { "collapsed": false, "slideshow": { @@ -1274,7 +1273,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 23, "metadata": { "collapsed": false, "slideshow": { @@ -1283,12 +1282,12 @@ }, "outputs": [], "source": [ - "[t,r]=ode23(@(t,r) ode4(t,r,10,0.5),[0 5],[0.5 0.1 0 2.5/0.5]);" + "[t,r]=ode23(@(t,r) ode4(t,r,10,0.1),[0 5],[0.5 0.1 0 2.5/0.5]);" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "metadata": { "collapsed": false, "slideshow": { @@ -1433,7 +1432,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", diff --git a/hw2_work/hw2_work.ipynb b/hw2_work/hw2_work.ipynb index d39ff0f..a802c7d 100644 --- a/hw2_work/hw2_work.ipynb +++ b/hw2_work/hw2_work.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": true, "slideshow": { @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": true, "slideshow": { @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "collapsed": true, "slideshow": { @@ -74,9 +74,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { - "collapsed": true, + "collapsed": false, "slideshow": { "slide_type": "subslide" } @@ -87,12 +87,12 @@ "wnapprox=@(w) sqrt(0.7*g-w^2);\n", "ode1=@(t,r,w) [r(2);-(0.49*r(2).^2.*r(1)+(0.7*g-w^2).*r(1))./(1+0.49*r(1).^2)];\n", "\n", - "[t1,r1]=ode23(@(t,r) ode1(t,r,1), [0 1.1*8*pi/wnapprox(1)], [10 0]);" + "[t1,r1]=ode23(@(t,r) ode1(t,r,2), [0 20], [10 0]);" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "collapsed": false, "slideshow": { @@ -178,33 +178,23 @@ "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t4\n", + "\t\t\n", + "\t\t5\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t6\n", - "\t\n", - "\n", - "\n", - "\t\t\n", - "\t\t8\n", + "\t\t10\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t10\n", + "\t\t\n", + "\t\t15\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t12\n", + "\t\t20\n", "\t\n", "\n", "\n", @@ -227,7 +217,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -256,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 11, "metadata": { "collapsed": false, "slideshow": { @@ -306,82 +296,92 @@ "\n", "\n", "\t\n", - "\t\t\n", + "\t\t\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\t\n", - "\t\t10\n", + "\t\t\n", + "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t15\n", + "\t\t\n", + "\t\t100\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t20\n", + "\t\t\n", + "\t\t200\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t25\n", + "\t\t\n", + "\t\t300\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t30\n", + "\t\t\n", + "\t\t400\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t35\n", + "\t\t\n", + "\t\t500\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", + "\t\t600\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t700\n", + "\t\n", + "\n", + "\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t1\n", + "\t\t\n", + "\t\t20\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", + "\t\t\n", + "\t\t40\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t3\n", + "\t\t\n", + "\t\t60\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t4\n", + "\t\t\n", + "\t\t80\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t5\n", + "\t\t100\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\n", "\t\n", "\t\tposition (m)\n", "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\ttime (s)\n", "\t\n", "\n", @@ -391,7 +391,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -413,7 +413,7 @@ } ], "source": [ - "[t5,r5]=ode23(@(t,r) ode1(t,r,5), [0 5], [10 0]);\n", + "[t5,r5]=ode23(@(t,r) ode1(t,r,5), [0 100], [10 0]);\n", "plot(t5,r5(:,1))\n", "xlabel('time (s)')\n", "ylabel('position (m)')" @@ -447,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 19, "metadata": { "collapsed": false, "slideshow": { @@ -460,12 +460,12 @@ "l=1;\n", "wnapprox=@(w) sqrt(g/l-w^2);\n", "ode2= @(t,r,a) [r(2); a*w^2/l*cos(r(1))-(g/l-cos(r(1))*w^2).*sin(r(1))];\n", - "[t0,r0]=ode23(@(t,r) ode2(t,r,0), [0 2*2*pi/wnapprox(w)],[pi/9,0]);" + "[t0,r0]=ode23(@(t,r) ode2(t,r,0), [0 2*2*pi/wnapprox(w)],[0,0]);" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 20, "metadata": { "collapsed": false, "slideshow": { @@ -522,32 +522,32 @@ "\n", "\n", "\t\t\n", - "\t\t-20\n", + "\t\t0\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t0\n", + "\t\t20\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t20\n", + "\t\t40\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t40\n", + "\t\t60\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t60\n", + "\t\t80\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t80\n", + "\t\t100\n", "\t\n", "\n", "\n", @@ -609,7 +609,7 @@ "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\ta=10 m\n", "\n", @@ -618,7 +618,7 @@ "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -640,8 +640,7 @@ } ], "source": [ - "[t10,r10]=ode23(@(t,r) ode2(t,r,10), [0 2*2*pi/wnapprox(w)],[pi/9,0]);\n", - "\n", + "[t10,r10]=ode23(@(t,r) ode2(t,r,10), [0 2*2*pi/wnapprox(w)],[0,0]);\n", "plot(t0,r0(:,1)*180/pi,t10,r10(:,1)*180/pi)\n", "xlabel('time (s)')\n", "ylabel('angle (deg)')\n", @@ -906,7 +905,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 21, "metadata": { "collapsed": false, "slideshow": { @@ -1274,7 +1273,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 23, "metadata": { "collapsed": false, "slideshow": { @@ -1283,12 +1282,12 @@ }, "outputs": [], "source": [ - "[t,r]=ode23(@(t,r) ode4(t,r,10,0.5),[0 5],[0.5 0.1 0 2.5/0.5]);" + "[t,r]=ode23(@(t,r) ode4(t,r,10,0.1),[0 5],[0.5 0.1 0 2.5/0.5]);" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "metadata": { "collapsed": false, "slideshow": { @@ -1433,7 +1432,7 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", diff --git a/hw2_work/octave-workspace b/hw2_work/octave-workspace index 35088d6..80a32a8 100644 Binary files a/hw2_work/octave-workspace and b/hw2_work/octave-workspace differ diff --git a/hw2_work/ode4.m b/hw2_work/ode4.m index 5e47023..7c884f2 100644 --- a/hw2_work/ode4.m +++ b/hw2_work/ode4.m @@ -2,6 +2,9 @@ function dr=ode4(t,r,k,m) % first order ODEs for two masses attached by a linear spring % k is spring stiffness (assume le=0) % m is mass of each + % r=[ radius, d(radius)/dt, theta, d(theta)/dt] + %dr=[ d(radius)/dt,dd(radius)/ddt, d(theta)/dt, dd(theta)/ddt] + % dr=zeros(size(r)); dr(1)=r(2); dr(3)=r(4); diff --git a/octave-workspace b/octave-workspace index 7c017c0..41ef164 100644 Binary files a/octave-workspace and b/octave-workspace differ diff --git a/plate.png b/plate.png new file mode 100644 index 0000000..d03a2a7 Binary files /dev/null and b/plate.png differ diff --git a/rotating_ball_bearing.ipynb b/rotating_ball_bearing.ipynb new file mode 100644 index 0000000..7962499 --- /dev/null +++ b/rotating_ball_bearing.ipynb @@ -0,0 +1,316 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults\n", + "pkg load odepkg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A ball bearing is rolling in a track without slipping as shown in Figure 1. The track\n", + "is spinning at a constant $\\Omega$. The ball\n", + "bearing weighs m=0.1 kg and has a radius of r=5 mm. The track has a radius of R=50 mm.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "function dy=myode(t,y,Omega,r,R)\n", + " g=9.81;\n", + " dy=zeros(size(y));\n", + " dy(1)=y(2);\n", + " dy(2)=5/7*Omega^2*sin(y(1)).*cos((y(1)))-g/(R-r)*sin(y(1));\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wn =\n", + "\n", + "@(omega) sqrt (-(5 / 7 * omega .^ 2 - 9.81 / 45e-3))\n", + "\n", + "T =\n", + "\n", + " 0.42555 0.51899\n", + "\n" + ] + } + ], + "source": [ + "wn=@(omega)sqrt(-(5/7*omega.^2-9.81/45e-3))\n", + "T=2*pi./wn([0,10])" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "[t0,y0]=ode23(@(t,y) myode(t,y,0,5e-3,50e-3),[0,0.85],[pi/4,0]);\n", + "[t10,y10]=ode23(@(t,y) myode(t,y,10,5e-3,50e-3),[0,1.02],[pi/4,0]);" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.4\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\ttheta (deg)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tw=0 rad/s\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tw=0 rad/s\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tw=10 rad/s\n", + "\n", + "\t\n", + "\t\tw=10 rad/s\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(t0,y0(:,1)*180/pi,t10,y10(:,1)*180/pi)\n", + "xlabel('time (s)')\n", + "ylabel('theta (deg)')\n", + "legend('w=0 rad/s','w=10 rad/s')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/rotating_plate.ipynb b/rotating_plate.ipynb new file mode 100644 index 0000000..e2df2f8 --- /dev/null +++ b/rotating_plate.ipynb @@ -0,0 +1,406 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults\n", + "pkg load odepkg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![square plate](./plate.png)\n", + "\n", + "Square plate 50 mm-by-50 mm is pinned at center of top and rotates with a torque, $\\tau(t)$=2 N-m. The plate has mass, m=0.8 kg. What is the rotation rate of the system and the resulting $\\theta(t)$? The plate starts at rest at 10$^{o}$ off the vertical position" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "function dy=myode(t,y,L,m,tau)\n", + " g=9.81;\n", + " dy=zeros(size(y));\n", + " dy(1)=12/m/L^2*tau-(6*y(1).*y(3).*sin(y(2)).*cos(y(2)))./(1+3*sin(y(2)).^2); % d/dt(dpsi/dt)=...\n", + " dy(2)=y(3); % d/dt(theta)=dtheta/dt\n", + " dy(3)=-12*g/L/2*sin(y(2))-3*y(1).^2.*sin(y(2)).*cos(y(2)); %d/dt(dtheta/dt)=...\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "[t,y]=ode23(@(t,y) myode(t,y,50e-3,0.8,0.05),[0,0.5],[0,pi/18,0]);" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\ttheta (deg)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(t,y(:,2)*180/pi)\n", + "xlabel('time (s)')\n", + "ylabel('theta (deg)')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\trotational speed (rad/s)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\ttime (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(t,y(:,1))\n", + "xlabel('time (s)')\n", + "ylabel('rotational speed (rad/s)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}