{ "cells": [ { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as pp\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "import numpy as np\n", "pp.rcParams.update({'font.size': 14})\n", "pp.rcParams['figure.figsize'] = [10, 5]\n", "\n", "from matplotlib import animation, rc\n", "from IPython.display import HTML" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def wave_equation(u0,v0,N,M,T,c=1):\n", " from scipy import sparse\n", " k = T/M\n", " h = 1/(N+1)\n", " lam = c*k/h\n", "\n", " x = np.linspace(0,1,N+2)\n", " t = np.linspace(0,T,M+1)\n", " \n", " u = np.zeros((N+2,M+1))\n", " \n", " u[:,0] = u0(x)\n", " u[:,1] = u[:,0]+k*v0(x)\n", "\n", " B = np.zeros((3,N))\n", " B[0,:] = lam*lam\n", " B[1,:] = 2*(1-lam*lam)\n", " B[2,:] = lam*lam\n", "\n", " B = sparse.spdiags(B,[1,0,-1],N,N)\n", " \n", " for k in range(2,M+1):\n", " u_pprev = u[1:N+1,k-2]\n", " u_prev = u[1:N+1,k-1]\n", "\n", " u_next = B.dot(u_prev) - u_pprev\n", " u[1:N+1,k] = u_next\n", " return (x,t,u)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def anim_wave(u0, v0, N, M, T, ylim):\n", " (x,t,u) = wave_equation(u0,v0,N=N,M=M,T=T)\n", "\n", " fig, ax = plt.subplots()\n", " ax.set_xlim(( 0, 1))\n", " ax.set_ylim(ylim)\n", " line, = ax.plot([], [], lw=2)\n", "\n", " # initialization function: plot the background of each frame\n", " def init():\n", " line.set_data([], [])\n", " return (line, )\n", "\n", " # animation function. This is called sequentially\n", " def animate(i):\n", " line.set_data(x, u[:,i])\n", " return (line,)\n", "\n", " anim = animation.FuncAnimation(fig, animate, init_func=init,\n", " frames=M, interval=20, blit=True)\n", " return anim" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ERGREKSQJyIiIhKCFPJEREREQpBCnoiIiEgIUsgTERERCUEKeSIiIiIhSCFPREREJAQp5ImIiIiEIIU8ERERkRCkkCciIiISghTyREREREKQQp6IiIhICFLIExEREQlBCnkiIiIiIUghT0RERCQEKeSJiIiIhCCFPBEREZEQ5PeQZ2bRZjbBzDLMLMfMPjOzVsc55kEz+97Mssws3cw+N7NeZdq8bmauzGuBv+sXERERCQWBGMkbD4wGrgaSgfrAF2YWfoxjhgEvAIOAXwDFwHQza1ym3XSgeanX+X6tXERERCRERPizMzNrANwE3Oic+9q37VdAKjACmFrecc65c8r08yvgADAY+LzUrgLn3C5/1iwiIiISivw9ktcfiASmHdrgnNsGrMY7SldRcXhr21dm+xAz22Nm68zsFTNreqIFi4iIiIQif4e8ZkAJkFFm+27fvop6BlgCzC+17StgDHAWcB8wAPjGzKLL68DMbjWzFDNLSU9Pr8SXFhEREan5KhTyzOyxch56KPsa5o+CzOwpYAgw2jlXcmi7c+4959xnzrnlzrnPgfOArsAF5fXjnHvZOZfknEtKSEjwR2kiIiIiNUZF78kbD7x9nDZbgTOAcCAeKD18lgjMPt4XMbOngauA4c65Tcdq65zbYWZpQOfj9SsiIiJS21Qo5DnnMvj5JdifMbPFQBEwEnjXt60V0B2Yd5xjnwGuxBvw1lTga8UDLYGdx2srIiIiUtv49Z4859wB4N/A381shJn1A94CluGd/gQAM1tjZmNLff48cCNwDbDPzJr5XrG+/bFm9qSZDTSzdr5Lw58De4CP/fkeREREREKBX6dQ8bkX7zx3E4G6wAxgTOn76/DeSxdf6vM7fR9nlOnrz8AjeB/m6I33wYuGeEfvZgJXOOcO+rl+ERERkRrP7yHPOVcA3O17Ha2NHevzctrnAeccq42IiIiI/ERr14qIiIiEIIU8ERERkRCkkCciIiISghTyREREREKQQp6IiIhICFLIExEREQlBCnkiIiIiIUghT0RERCQEKeSJiIiIhCCFPBEREZEQpJAnIiIiEoIU8kRERERCkEKeiIiISAhSyBMREREJQQp5IiIiIiFIIU9EREQkBCnkiYiIiIQghTwRERGREKSQJyIiIhKCFPJEREREQpBCnoiIiEgIUsgTERERCUEKeSIiIiIhyO8h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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0 = lambda x: np.sin(np.pi*x)\n", "v0 = lambda x: 0*x\n", "\n", "periods = 2\n", "M=2*110*periods\n", "\n", "anim = anim_wave(u0,v0, 100, M, T=periods, ylim=(-1,1))\n", "HTML(anim.to_jshtml())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAEzCAYAAACxNz78AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAX2UlEQVR4nO3df6ykV30f4M/37mKS1oAKtmwjyzGNWkQAFddbNRgMbsW2iIgoxTQGVByjJJZxMImA/kFFfhZBEypi14pFnEZxbYJiQYsEkZEXiCDIRia7TWq5NREVxhDA1m6D+BWMvfee/jEz97537szd3euZvXt2n0d6NfOe95zznrtn787nPe/MbLXWAgBAP1Z2ewAAAJwYAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOrN3twfwZJ1zzjnt4osv3u1hAAAc06FDh4601s59sv10H+AuvvjiHDx4cLeHAQBwTFX18CL6cQsVAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6s7QAV1XXV9VDVfVYVR2qqsu3qfuaqjpQVYer6rtVdV9V/fSyxgYA0LOlBLiquirJTUnek+SSJPcm+URVXTSnycuT/FmSnxrXvyvJR7cLfQAAZ6pqrS2+06r7ktzfWvvFQdmXknyktfbO4+zjC0k+11p7+3b19u3b1w4ePPikxgsAcDJU1aHW2r4n28/CV+Cq6qwklyY5MHXoQJLLTqCrpyX51qLGBQBwuljGLdRzkuxJ8uhU+aNJzj+eDqrql5JcmOSOOcevraqDVXXw8OHDT2asAADdOeU+hVpVVyZ5X5I3tNYenlWntXZra21fa23fueeee3IHCACwy5YR4I4kWU1y3lT5eUke2a5hVb02o1W3q1trH1/C2AAAurfwANdaezzJoST7pw7tz+jTqDNV1c9mFN6uaa19ZNHjAgA4XexdUr/vT3LH+JOk9yS5Lsmzk3wgSarq9iRprV093n9dRuHtHUn+vKom75V7vLX2t0saIwBAl5YS4Fprd1bVs5K8K8kFSR5I8qrBe9qmvw/uuvFYbhxvE59NcsUyxggA0KtlrcCltXZLklvmHLtiu30AAOY75T6FCgDA9gQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdWVqAq6rrq+qhqnqsqg5V1eXb1L2gqj5UVV+sqtWqum1Z4wIA6N1SAlxVXZXkpiTvSXJJknuTfKKqLprT5KlJjiT5T0nuW8aYAABOF8tagXtbkttaa3/QWnuwtXZDkm8mefOsyq21r7TW3tpauy3J3y5pTAAAp4WFB7iqOivJpUkOTB06kOSyRZ8PAOBMs4wVuHOS7Eny6FT5o0nOX8L5AADOKF1+CrWqrq2qg1V18PDhw7s9HACAk2oZAe5IktUk502Vn5fkkUWcoLV2a2ttX2tt37nnnruILgEAurHwANdaezzJoST7pw7tz+jTqAAAPAl7l9Tv+5PcUVVfSHJPkuuSPDvJB5Kkqm5Pktba1ZMGVfWi8dOnJ1kb7z/eWvs/SxojAECXlhLgWmt3VtWzkrwryQVJHkjyqtbaw+Mqs74P7i+n9l+d5OEkFy9jjAAAvVrWClxaa7ckuWXOsStmlNWyxgIAcDrp8lOoAABnMgEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4sLcBV1fVV9VBVPVZVh6rq8mPUf/m43mNV9eWqum5ZYwMA6NlSAlxVXZXkpiTvSXJJknuTfKKqLppT/zlJ7hrXuyTJe5PcXFVXLmN8AAA927ukft+W5LbW2h+M92+oqlcmeXOSd86of12Sb7TWbhjvP1hV/zzJO5L89+1OdHS15f9974fZs1Kbtr0rK1mppKoW9CMBAGyvtZa1lhxdW8va2ubH1dYWdp6FB7iqOivJpUn+89ShA0kum9PsxePjQ3cn+bmqekpr7Yl553vwke/k0nd/au549qxU9tQk1FVWph43h77KSlX27hm2WcnKSsaPgzpTbbf0P6fOnqrs2bN5TKNjK9mzkvXzj9qPyvYMH6uyspLsGdTb0v+sc46fr0zXqVEZABxLay1H11pW11rW2uhxfWttS2AZ1ZldtrndRr+TstW1tayuZeNYa1ldXcvR8bmPrm2021xn0n5jO546w3OPxrI2Hufa7H6m+hqO/2RYxgrcOUn2JHl0qvzRJK+Y0+b8JNMp7NGMxndOkm8OD1TVtUmuTZIfOf/H88y/f1aOrq6tJ97JH+BaG/8FSUtWn+RPdZrbOyvcrUwCYtaD3pZAWMNgmE1lm45P+hker41zrozD6+z2o/PXoLwq6+NYqcrK5NyTNjWuMzk+OU9lo87KaIV2VD49hoz73Xxs2G54npVxm8k4h+1rve3osTb1bZUYTkRrLa1lFAIGz9fGj21tsj8qa4Njq2vTbTdeJ9bGfU2eT9qsrW2cZ+PYKKhMgsday3p/k9eetUnAGdYZhJ7hmIbnWV3bpnwQdlY31cnM8s2hZNx+eGzQZm0SqAbtJseOrm3+c+DYJq9RwwWhyfbwgs6xrFuoS9VauzXJrUmyb9++dvBX98+rt5GYW8sTq5v/gh9d25rCJ1cJT6ytrf9lX0/kq1uvFtYm5cNzTT9uqjNM9KPHWf0Mt8mVxqyytcHYNv3CbrrCyLj/tY1QO6ibJEdH/5qctDlkQ1VSGQS+qaC3EfiyHg6HIbEy3l9JKhvlGfQ76SPZ2vekfU3Vr3EHK+PnVdnUT62fe9DHeD8Z9r3RPoP9DNqNWmSjzlT55MmmfgZ/fhtVNnY2lc/MyLOD83Td+S9YWw8M6256Pqg7KW+D/fXjbVje1usN27Q2rj1ut35s0E9b/3Vu4/KNdsP9jbptvX1r2fR8bUa7YZu16X4yLpvaX1sbjXNzuJoErEEAmwpd0/0KELtvz+DCe/J2pem7PtN3uyYXx8PFgsnj3j2z7xbtnVc21c/ewV2sTXezVip79qys15m+8zZ9p2y7u3Tr55hxF21lU51j39mqX13MPCwjwB3JaL3rvKny85I8MqfNI3PqHx33tyM1/ouxd89OezgzDIPmloA6vKIbX+VthM8ZV3LDq7ktZdNXh1uvUjddKa6fd+MKd2v9jReE4dXolivfGVfHq+svIjOuZKeOTYLupiv1tnFF39pGf2trwxetrasFs/bXX/RmhAJgs+FFzeSCY7KSvrEiPorzk9Xx4QXScOV+ZvmgzazV/OFq++TOwsZqfjbdCZi+uzBZxd90Z2DQ58pUCFipOXcuZva7uXze22dm1Z31dpxhiBnenXDX4NSw8ADXWnu8qg4l2Z/kw4ND+zP/AwmfT/Jvpsr2Jzm43fvfWIyVlcpZ21wtsDybVjOyscKwutbWVzuGQXJ9JWSwQrE2FQxbMg6cbVM43LTSMl5hGd5i2lR/eK7MbjO9CjRrpWfYZ6b7y8YqUNbrb11VGp9m45yTgsxe2Roc3lK+cXx2UJ63ujPv9apmrOJtXhGcV755GXHuSmRt1N+8olizVzc3td1YnV2vO2P1c/Oq69Rq7MrWVdX11eDBqmxl8wrwpP50QEo2wshwRbfG5ZWNtxysl9VGvxvt/HsFy7qF+v4kd1TVF5Lck9GnTJ+d5ANJUlW3J0lr7epx/Q8keUtV3Zjk95O8JMk1SV6/pPHBKWHyYrky53YeAMyylADXWruzqp6V5F1JLkjyQJJXtdYm7927aKr+Q1X1qiS/m9FXjXwjyVtba9t+hQgAwJloaR9iaK3dkuSWOceumFH22ST/dFnjAQA4Xfi/UAEAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDozMIDXFU9tapurqojVfX9qvpYVV14jDYvG9f7elW1qrpm0eMCADhdLGMF7sYkVyZ5fZLLkzw9yZ9W1Z5t2pyd5IEkv5zkB0sYEwDAaWPvIjurqmck+fkkb2qtfXJc9sYkDyd5RZK7Z7Vrrd2V5K5x/dsWOSYAgNPNolfgLk3ylCQHJgWtta8leTDJZQs+FwDAGWnRAe78JKtJjkyVPzo+thBVdW1VHayqg4cPH15UtwAAXTiuAFdV7x5/uGC77Yolj3Vda+3W1tq+1tq+c88992SdFgDglHC874G7MckHj1Hnq0l+MsmeJOckGS6NnZfkcyc8OgAAtjiuANdaO5Ktt0W3qKpDSZ5Isj/Jh8ZlFyZ5XpJ7dz5MAAAmFvoeuNbat5P8YZLfqapXVNUlSe5Icn+ST03qVdUXq+otg/2zq+pFVfWi8ZguGu9ftMjxAQCcDpbxPXC/kuSjSe5Mck+S7yV5dWttdVDnuRndZp3Yl+Qvx9uPJvnN8fPfWsL4AAC6ttDvgUuS1toPk9ww3ubVqan9zySp2bUBABjyf6ECAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOCHAAAJ0R4AAAOiPAAQB0RoADAOiMAAcA0JmFB7iqempV3VxVR6rq+1X1saq68Bht3llVf1FV36mqw1X18ap6waLHBgBwOljGCtyNSa5M8voklyd5epI/rao927S5IsktSS5L8i+THE3yqap65hLGBwDQtb2L7KyqnpHk55O8qbX2yXHZG5M8nOQVSe6e1a619q+n+nljkm8neUmSjy9yjAAAvVv0CtylSZ6S5MCkoLX2tSQPZrS6dryeltHYvrXQ0QEAnAYWHeDOT7Ka5MhU+aPjY8frpiR/leTzCxoXAMBp47gCXFW9u6raMbYrFjGgqnp/kpcmubK1tjqnzrVVdbCqDh4+fHgRpwUA6MbxvgfuxiQfPEadryb5ySR7kpyTZJiszkvyuWOdpKp+N8nrkvyL1tqX59Vrrd2a5NYk2bdvXztWvwAAp5PjCnCttSPZelt0i6o6lOSJJPuTfGhcdmGS5yW59xhtb0pyVUbh7YvHMy4AgDPRQt8D11r7dpI/TPI7VfWKqrokyR1J7k/yqUm9qvpiVb1lsP97Sd6U5A1JvlVV54+3sxc5PgCA08FCv0Zk7Fcy+h63O5P8aJJPJ7l66v1sz83oNuvE9ePHT0/19ZtJfmMJYwQA6NbCA1xr7YdJbhhv8+rUdvsAAMzn/0IFAOiMAAcA0BkBDgCgMwIcAEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGcEOACAzghwAACdEeAAADojwAEAdEaAAwDojAAHANAZAQ4AoDMCHABAZwQ4AIDOVGttt8fwpFTVd5P89W6Pgx07J8mR3R4EO2Lu+mb++mXu+vbc1trTnmwnexcxkl321621fbs9CHamqg6avz6Zu76Zv36Zu75V1cFF9OMWKgBAZwQ4AIDOnA4B7tbdHgBPivnrl7nrm/nrl7nr20Lmr/sPMQAAnGlOhxU4AIAzigAHANCZUz7AVdX1VfVQVT1WVYeq6vJj1H/5uN5jVfXlqrruZI2VzU5k7qrqNVV1oKoOV9V3q+q+qvrpkzleNjvR371Bu5dW1dGqemDZY2S+HfzbeVZV/da4zQ+r6qtV9daTNV427GDu3lBVf1VVf1dVj1TVB6vq/JM1XjZU1cuq6mNV9fWqalV1zXG0eWFVfbaqfjBu92tVVcdqd0oHuKq6KslNSd6T5JIk9yb5RFVdNKf+c5LcNa53SZL3Jrm5qq48OSNm4kTnLsnLk/xZkp8a178ryUePNzSwWDuYv0m7f5Dk9iSfXvogmWuH8/cnSV6Z5Nokz03yb5Pcv+ShMmUHr3svSXJHkv+W5PlJfibJTyT545MyYKadneSBJL+c5AfHqlxVT0/yySSPJvln43b/Psnbjtn2VP4QQ1Xdl+T+1tovDsq+lOQjrbV3zqj/20le01r7R4Oy/5rk+a21F5+MMTNyonM3p48vJPlca+3tSxomc+x0/qrqfyT5X0kqyWtbay9Y+mDZYgf/dv6rJB9O8uOtNd/wv4t2MHfvSHJDa+3HBmVvSnJza+3skzFmZquq7yV5S2vttm3qvDnJbyc5r7X2g3HZu5K8OcmFbZuQdsquwFXVWUkuTXJg6tCBJJfNafbiGfXvTrKvqp6y2BEyzw7nbpanJfnWosbF8dnp/FXV9UnOS/Lu5Y2OY9nh/P1Mkr9I8raq+puq+lJV/ZeqEgBOoh3O3T1JLqiqV9fIOUlel9FdDE59L85ooWK4Wnd3kmcnuXi7hqdsgMvo/3rbk9Gy4tCjSebd2z9/Tv294/44OXYyd5tU1S8luTCjWwOcXCc8f1X1wiS/nuTftdZWlzs8jmEnv3//MMlLk/yTJFcmeUtGt1NvW84QmeOE56619vmMAtsfJ3k8yeGMVsB/bnnDZIHm5ZbJsblO5QDHGWr8nsX3JXlDa+3h3R4P26uqpya5M8k7WmsP7fZ42JGVJC2j37n7Wmt3ZxTirqyq83Z3aGynqn4iyc1J/mNGq3evzOiF//d3c1ws36n8n9kfSbKa0S2ZofOSPDKnzSNz6h8d98fJsZO5S5JU1WszehP81a21jy9neBzDic7fBUmel+SPquqPxmUrSaqqjiZ5VWtt+pYQy7OT379vJvl6a+3bg7IHx48XZesKAcuxk7l7Z5IvtNbeN96/v6q+n+RzVfUfWmt/s5yhsiDzcsvk2Fyn7Apca+3xJIeS7J86tD+jT+XM8vk59Q+21p5Y7AiZZ4dzl6r62YxumV7TWvvI8kbIdnYwf19P8sIkLxpsH0jyf8fP5845i7fD3797kjx76j1v/3j8aBX8JNnh3P29jELf0GT/lH2NZ93nk1xeVT8yKNuf5BtJvrJty9baKbsluSqje/q/kNEV/k1Jvpfkx8bHb09y+6D+c5J8P8mN4/q/MG5/5W7/LGfatoO5e12SJzL6CPX5g+2Zu/2znInbic7fjPa/keSB3f45ztRtB79/Zyf5WkafRH1+kpdk9FUIH97tn+VM23Ywd9eM/+18c0bvZXxJRh9IObTbP8uZuI1/lyYXsn+X5NfGzy8aH39vkk8P6j8jo5W2P0nygiSvSfKdJG8/5rl2+4c9jj+M6zNKoT/M6MrkZYNjn0nyman6L0/yP8f1H0py3W7/DGfqdiJzN95vM7bPnOxx2058/ma0FeA6m7+MvvvtwPhF5+tJfi/J03b75zgTtx3M3Q1J/vd47r6Z0QcaLtztn+NM3JJcMee17Lbx8duSfGWqzQuT/HmSx8bz9+sZf83bdtsp/T1wAABs5f44AEBnBDgAgM4IcAAAnRHgAAA6I8ABAHRGgAMA6IwABwDQGQEOAKAzAhwAQGf+PzFZA0nyS9DyAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0 = lambda x: 0*x\n", "v0 = lambda x: np.sin(np.pi*x)\n", "\n", "periods = 2\n", "M=2*110*periods\n", "\n", "anim = anim_wave(u0,v0, 100, M, T=periods, ylim=(-0.25,0.25))\n", "HTML(anim.to_jshtml())" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def u0(x):\n", " xleft = 1.0*(x<0.5)\n", " xright = 1.0*(x>=0.5)\n", " return x*xleft + (1.0-x)*xright\n", "v0= lambda x: 0*x\n", "\n", "periods = 2\n", "M=2*110*periods\n", "\n", "anim = anim_wave(u0,v0, 100, M, T=periods, ylim=(-0.5,0.5))\n", "HTML(anim.to_jshtml())" ] }, { "cell_type": "code", "execution_count": 240, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Once \n", " Loop \n", " Reflect \n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 240, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0 = lambda x: 0*x\n", "v0 = lambda x: 1.0*( np.abs(x-0.5)<0.25 )\n", "\n", "periods = 2\n", "M=2*110*periods\n", "\n", "anim = anim_wave(u0,v0, 100, M, T=periods, ylim=(-0.5,0.5))\n", "HTML(anim.to_jshtml())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Utilites for convergence plots.\n", "\n", "def linfit(h,err):\n", " print( err )\n", " logh = np.log10(h);\n", " loge = np.log10(err);\n", " (p,logC) = np.polyfit(logh,loge,deg=1)\n", " return (10**logC,p)\n", "\n", "def convplot(h,*args):\n", " fits = []\n", " for y in args:\n", " fits.append(linfit(h,y[0]))\n", " \n", " import matplotlib.pyplot as pp\n", " for (k,y) in enumerate(args):\n", " C,p = fits[k]\n", " pp.loglog(h,y[0],y[1],label=\"$O(%s^{%f})$\" % (y[2],p)) \n", " pp.loglog(h,C*(h**p))" ] }, { "cell_type": "code", "execution_count": 245, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.06320749236038077, 0.031566052128385355, 0.0062901939222605695, 0.003143358624318717, 0.00062839084147435]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 245, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0=lambda x: np.sin(np.pi*x)\n", "v0= lambda x: 0*x\n", "u_exact = lambda x,t : u0(x)*np.cos(np.pi*t)\n", "T=2\n", "M_list=[50,100,500,1000,5000]\n", "k_list = 2/np.array(M_list)\n", "err = []\n", "for M in M_list:\n", " N=int(0.9*M/2)\n", " (x,t,u) = wave_equation(u0,v0,N=N,M=M,T=T)\n", "\n", " (xx,tt) = np.meshgrid(x,t,indexing=\"ij\")\n", " u_true = u_exact(xx,tt)\n", " this_err = np.max(np.abs(u-u_true))\n", " err.append(this_err)\n", " \n", "convplot(k_list,(err,'o','k'))\n", "pp.legend()" ] }, { "cell_type": "code", "execution_count": 246, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.000894645492278412, 0.00022389298123232093, 9.148177075313235e-06, 2.2936094487557845e-06, 9.195952055396361e-08]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 246, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0= lambda x: 0*x\n", "v0=lambda x: np.sin(np.pi*x)\n", "\n", "\n", "u_exact = lambda x,t: (1/np.pi)*np.sin(np.pi*x)*np.sin(np.pi*t)\n", "\n", "T=2\n", "M_list=[50,100,500,1000,5000]\n", "k_list = T/np.array(M_list)\n", "err = []\n", "for M in M_list:\n", " N=int(0.9*M/2)\n", " k = T/M\n", " (x,t,u) = wave_equation(u0,v0,N=N,M=M,T=T)\n", "\n", " (xx,tt) = np.meshgrid(x,t,indexing=\"ij\")\n", " u_true = u_exact(xx,tt)\n", " this_err = np.max(np.abs(u-u_true))\n", " err.append(this_err)\n", "\n", "convplot(k_list,(err,'o','k'))\n", "pp.legend()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def wave_equation_fixed(u0,v0,N,M,T,c=1):\n", " from scipy import sparse\n", " k = T/M\n", " h = 1/(N+1)\n", " lam = c*k/h\n", "\n", " x = np.linspace(0,1,N+2)\n", " t = np.linspace(0,T,M+1)\n", " \n", " u = np.zeros((N+2,M+1))\n", " \n", " u[:,0] = u0(x)\n", "\n", " D = np.zeros((3,N))\n", " D[0,:] = 1\n", " D[1,:] = -2\n", " D[2,:] = 1\n", " D = sparse.spdiags(D,[-1,0,1],N,N)\n", " u[1:N+1,1] = u[1:N+1,0]+k*v0(x[1:N+1])+lam*lam/2*D*u[1:N+1,0]\n", " \n", " B = np.zeros((3,N))\n", " B[0,:] = lam*lam\n", " B[1,:] = 2*(1-lam*lam)\n", " B[2,:] = lam*lam\n", "\n", " B = sparse.spdiags(B,[1,0,-1],N,N)\n", " \n", " for k in range(2,M+1):\n", " u_pprev = u[1:N+1,k-2]\n", " u_prev = u[1:N+1,k-1]\n", "\n", " u_next = B.dot(u_prev) - u_pprev\n", " u[1:N+1,k] = u_next\n", " return (x,t,u)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0005744051951831752, 0.00014376417837808075, 7.085414240715071e-06, 1.8143437534590134e-06, 7.395888793060301e-08]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u0=lambda x: np.sin(np.pi*x)\n", "v0= lambda x: 0*x\n", "u_exact = lambda x,t : u0(x)*np.cos(np.pi*t)\n", "T=2\n", "M_list=[50,100,500,1000,5000]\n", "k_list = 2/np.array(M_list)\n", "err = []\n", "for M in M_list:\n", " N=int(0.9*M/2)\n", " (x,t,u) = wave_equation_fixed(u0,v0,N=N,M=M,T=T)\n", "\n", " (xx,tt) = np.meshgrid(x,t,indexing=\"ij\")\n", " u_true = u_exact(xx,tt)\n", " this_err = np.max(np.abs(u-u_true))\n", " err.append(this_err)\n", " \n", "convplot(k_list,(err,'o','k'))\n", "pp.legend()" ] }, { "cell_type": "code", "execution_count": null, "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.8.1" } }, "nbformat": 4, "nbformat_minor": 4 }