{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Practice Sheet 8 - Sample Solutions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "class Particle(object):\n", " \n", " def __init__(self, mass, x, y, z, vx, vy, vz):\n", " self.mass = mass\n", " self.x = x\n", " self.y = y\n", " self.z = z\n", " self.vx = vx\n", " self.vy = vy\n", " self.vz = vz\n", " \n", " def kinetic_energy(self):\n", " return 0.5 * self.mass * (self.vx ** 2 + self.vy ** 2 + self.vz ** 2)\n", " \n", " def separation(self, other):\n", " return np.sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2 + (self.z - other.z) ** 2)\n", " \n", " def move(self, dt):\n", " self.x += dt * self.vx\n", " self.y += dt * self.vy\n", " self.z += dt * self.vz" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "p1 = Particle(1., 5.5, 4.4, 3.4, 3.4, 4.4, 7.7)\n", "p1.kinetic_energy()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 2, "text": [ "45.105000000000004" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "p2 = Particle(0.2, 3.3, 4.1, 3.1, -2.2, 4.4, -5.4)\n", "p1.separation(p2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 3, "text": [ "2.2405356502408083" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "p2.separation(p1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "2.2405356502408083" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "p1.move(1.)\n", "print p1.x, p1.y, p1.z" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "8.9 8.8 11.1\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "for i in range(10):\n", " p1.move(0.1)\n", " print p1.x, p1.y, p1.z" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "9.24 9.24 11.87\n", "9.58 9.68 12.64\n", "9.92 10.12 13.41\n", "10.26 10.56 14.18\n", "10.6 11.0 14.95\n", "10.94 11.44 15.72\n", "11.28 11.88 16.49\n", "11.62 12.32 17.26\n", "11.96 12.76 18.03\n", "12.3 13.2 18.8\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "class ChargedParticle(Particle):\n", " def __init__(self, mass, x, y, z, vx, vy, vz, charge):\n", " self.charge = charge\n", " Particle.__init__(self, mass, x, y, z, vx, vy, vz) # avoids having to re-define all the attributes" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "p3 = ChargedParticle(4., 2.2, 3.2, 4.3, 6.6, -2.3, 2.2, -1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "p3.separation(p1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "20.304186760370378" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "p3.charge" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "-1" ] } ], "prompt_number": 10 } ], "metadata": {} } ] }