{ "cells": [ { "cell_type": "markdown", "id": "4da58ef7-37db-460b-acf5-cd7e342a89a8", "metadata": { "tags": [] }, "source": [ "# Kahden harmonisen aallon superposition aikakehitys.\n", "\n", "Alustellaan aluksi juttuja." ] }, { "cell_type": "code", "execution_count": 1, "id": "adfd5691-b196-4c28-a98e-15b521152afa", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation, rc\n", "from IPython.display import HTML\n", "\n", "plt.rcParams['text.usetex'] = True\n", "\n", "L = 100.0\n", "xvals = np.linspace(-L/2,L/2,10000)" ] }, { "cell_type": "markdown", "id": "1624c1d1-2633-4fd8-bd81-a230c0b17725", "metadata": {}, "source": [ "Määritellään aikakehitysfunktio evolve. Se koostuu suoraan kahdesta oikealle etenevästä harmonisesta aallosta. Dispersiota voi muokata muuttamalla esimerkiksi kulmataajuutta." ] }, { "cell_type": "code", "execution_count": 11, "id": "81714ed8-8746-45b1-8efb-ed3d52944b49", "metadata": {}, "outputs": [], "source": [ "def evolve(xvals,time):\n", " yt = [np.cos(1.0*x-0.25*time) + np.cos(1.2*x-0.27*time) for x in xvals]\n", " return yt" ] }, { "cell_type": "markdown", "id": "02050c0f-af23-431b-84b7-c4f7d2e10d0a", "metadata": {}, "source": [ "Ja sitten varsinainen animointi." ] }, { "cell_type": "code", "execution_count": 12, "id": "c7e7976d-3459-42ad-a915-d34a3abd5826", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.set_xlim(-L/2,L/2)\n", "ax.set_ylim(-2.0,2.0)\n", "\n", "line, = ax.plot([])\n", "\n", "def init():\n", " line.set_data([], [])\n", " return (line,)\n", "\n", "def animate(frame_num):\n", " ynew = evolve(xvals,frame_num*1.0)\n", " line.set_data(xvals,ynew)\n", " return (line,)\n", "\n", "anim = animation.FuncAnimation(fig,animate,init_func=init,frames=100,interval=100)\n", "HTML(anim.to_html5_video())" ] }, { "cell_type": "code", "execution_count": null, "id": "0be82db8-bcf6-4ad2-be6d-802ab82a54a0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" } }, "nbformat": 4, "nbformat_minor": 5 }