{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from pylab import *\n", "%matplotlib inline\n", "from matplotlib import animation\n", "\n", "# nastavitve za izris grafov (http://matplotlib.org/1.3.1/users/customizing.html)\n", "rc('text', usetex=True)\n", "rc('font', size=12, family='serif', serif=['Computer Modern'])\n", "rc('xtick', labelsize='small')\n", "rc('ytick', labelsize='small')\n", "rc('legend', fontsize='medium')\n", "rc('figure', figsize=(5, 3))\n", "rc('lines', linewidth=2.0)\n", "rc('axes', color_cycle=['k'])\n", "rc('contour', negative_linestyle='solid')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Animacije" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pripravimo animacijo utripanja dveh vzmetnih nihal z masama $m$ in koeficientoma vzmeti $k$, sklopljenih s \u0161ibkej\u0161o vzmetjo s koeficientom $k^\\prime$. Na za\u010detku je raztezek vzmeti prvega nihala A, vzmet drugega pa je neraztegnjena. Obe ute\u017ei na za\u010deku mirujeta. Re\u0161iti moramo sklopljen sistem diferencialnih ena\u010db\n", "\n", "$$m\\ddot{x_1}=-kx_1+k^\\prime(x_2-x_1),$$\n", "\n", "$$m\\ddot{x_2}=-kx_2-k^\\prime(x_2-x_1),$$\n", "\n", "z za\u010detnimi pogoji $x_1(0)=A$, $x_2(0)=0$, $\\dot{x_1}(0)=0$ in $\\dot{x_2}(0)=0$. Re\u0161itev je\n", "\n", "$$x_1(t)=\\frac{A}{2}\\left(\\cos(\\omega_1 t)+\\cos(\\omega_2 t)\\right),$$\n", "\n", "$$x_2(t)=\\frac{A}{2}\\left(\\cos(\\omega_1 t)-\\cos(\\omega_2 t)\\right),$$\n", "\n", "z $\\omega_1=\\sqrt{\\frac{k}{m}}$ in $\\omega_2=\\sqrt{\\frac{k+2k^\\prime}{m}}$. V animaciji utripanje.gif je prikazana ena perioda utripanja za $A=3\\,$cm, $\\omega_1=10\\pi\\,$s$^{-1}$ in $\\omega_2=12\\pi\\,$s$^{-1}$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ((axa), (axb)) = subplots(2, 1, figsize=(6, 3))\n", "axa.set_xlim([0, 30])\n", "axa.set_ylim([-1, 1])\n", "vzmet1,=axa.plot([], [])\n", "vzmet2,=axa.plot([], [])\n", "vzmet3,=axa.plot([], [])\n", "utez1,=axa.plot([], [], 'or', markersize=40)\n", "utez2,=axa.plot([], [], 'ob', markersize=40)\n", "axa.set_xlabel(r'Polo\\v zaj (cm)')\n", "axa.set_yticks([])\n", "axa.grid()\n", "axb.set_xlim([0, 1])\n", "axb.set_ylim([-3, 3])\n", "axb.set_xlabel(r'\\v Cas (s)')\n", "axb.set_ylabel(r'Odmik (cm)')\n", "axb.grid()\n", "crta,=axb.plot([], [])\n", "\n", "A=3.0\n", "w1=5.0 * 2 * pi\n", "w2=6.0 * 2 * pi\n", "x1t=lambda t: 0.5 * A * (cos(w1 * t) + cos(w2 * t))\n", "x2t=lambda t: 0.5 * A * (cos(w1 * t) - cos(w2 * t))\n", "\n", "t=linspace(0, 1, 200)\n", "axb.plot(t, x1t(t), 'r', t, x2t(t), 'b')\n", "\n", "def init():\n", " vzmet1.set_data([], [])\n", " vzmet2.set_data([], [])\n", " vzmet3.set_data([], [])\n", " utez1.set_data([], [])\n", " utez2.set_data([], [])\n", " crta.set_data([], [])\n", "\n", "nf=200; \n", "def animate(f): \n", " t=f / float(nf)\n", " x1=x1t(t)\n", " x2=x2t(t)\n", " vzmet1.set_data([0, 10 + x1], [0, 0])\n", " setp(vzmet1, lw=20 * 10 / (10 + x1))\n", " vzmet2.set_data([10 + x1, 20 + x2], [0, 0])\n", " setp(vzmet2, lw=10 * 10 / (10 - x1 + x2))\n", " vzmet3.set_data([20 + x2, 30], [0, 0])\n", " setp(vzmet3, lw=20 * 10 / (10 - x2))\n", " utez1.set_data([10 + x1], [0])\n", " utez2.set_data([20 + x2], [0])\n", " crta.set_data([t, t], [-A, A])\n", " fig.tight_layout(pad=0.3)\n", "\n", "anim=animation.FuncAnimation(fig, animate, init_func=init, frames=nf, interval=25, blit=True)\n", "anim.save('utripanje.gif', writer='imagemagick');\n", "close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Naloga" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
    \n", "
  1. Pripravi animacijo vodoravnega meta \u017eoge z maso $m$, na katero poleg sile te\u017ee ($g=9.81\\,$m/s$^2$) deluje tudi zaviralna sila $\\mathbf{F}_\\mathrm{u}$, za katero velja kvadratni zakon upora: $\\mathbf{F}_\\mathrm{u}=-cmv\\mathbf{v}$, $c=1\\,$m$^{-1}$. \u017dogo vr\u017eemo z vi\u0161ine $1\\,$m nad vodoravnimi tlemi z za\u010detno hitrostjo $1\\,$m/s. Od tal se \u017eoga odbija elasti\u010dno. Animacijo pripravi v formatu \"animated GIF\". Velikost oddane datoteke naj bo najve\u010d $5\\,$MB, uporabi\u0161 lahko program za stiskanje datotek v format RAR. \n", "
" ] } ], "metadata": {} } ] }