diff --git a/animate_Fourier_series.ipynb b/animate_Fourier_series.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..d386943c6a96cb142bb21fdafa98e381d34d99d6
--- /dev/null
+++ b/animate_Fourier_series.ipynb
@@ -0,0 +1,146 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Simple animation of Fourier series representation of square wave\n",
+    "\n",
+    "Does two things:\n",
+    "\n",
+    "1) Builds square wave from $n=1$ sine wave, then $n=1, 3$ sine waves, ..., $n=1,3,\\ldots,$max_num_waves Fourier modes\n",
+    "\n",
+    "2) Then translates it at velocity $v$\n",
+    "\n",
+    "NB sine Fourier series for this square wave has only $n$ odd terms, $n$ even terms are zero\n",
+    "\n",
+    "Fourier series is $y(x)=\\sum_{n=1,3,5,7,\\ldots}\\frac{4}{\\pi}\\sin(2n\\pi x)$ \n",
+    "\n",
+    "period = 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "from IPython.display import clear_output\n",
+    "import time\n",
+    "#########################\n",
+    "## build square wave\n",
+    "for max_num_waves in range(1,21):\n",
+    "    clear_output(wait=True)\n",
+    "# Fourier series\n",
+    "    n_pts=200\n",
+    "    x=np.linspace(-1,1,n_pts)\n",
+    "    y=np.zeros(n_pts)\n",
+    "    for n in range(1,max_num_waves,2):\n",
+    "        y=y+(4.0/(np.pi*float(n)))*np.sin(2.0*float(n)*np.pi*x)\n",
+    "#\n",
+    "    plt.plot(x , y,linewidth=6,color='blue')\n",
+    "    plt.xlim([-1.0 , 1.0])\n",
+    "    plt.ylim([-2.0,2.00])\n",
+    "    plt.xlabel('$x$',fontsize=20)\n",
+    "    plt.ylabel('$y$',fontsize=20)\n",
+    "    plt.show() \n",
+    "    time.sleep(0.1)\n",
+    "#############################\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Above is Fourier series for standing wave - square wave of period 1\n",
+    "\n",
+    "Below is code to to make it move to right at speed $v$"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAETCAYAAAAGUmAJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3XmYFNW5P/DvC8OiMGyCbIKoQYWIgk6My41XwSh4jbgGiBtGRXOvMVdjIoo/NUaTKN54E2OiGI0a40o04UYMiktUIsQBRQMIDriBKFsAEQRm5vv749TYPdNVPT3TtU3P9/M8/Ux3nerqd6qr++1z6pxTRhIiIiJxaZN0ACIi0roo8YiISKyUeEREJFZKPCIiEislHhERiZUSj4iIxCrVicfMBpjZC2a22MwWmdn3fNYxM/ulmVWZ2ZtmdnASsYqISGHKkg6gEdUAvk9ygZmVA5hvZs+SXJy1zhgAg73bVwH8xvsrIiIplOoaD8nVJBd49z8FsARA/warjQXwAJ25ALqZWd+YQxURkQKlvcbzBTMbBGAEgHkNivoD+DDr8Upv2WqfbUwCMAkAOnXqdMj+++8fRagiIiVp/vz560j2KnY7LSLxmFlnAH8E8N8kNzd3OySnAZgGABUVFaysrAwpQhGR0mdm74exnVQ3tQGAmbWDSzp/IPmEzyqrAAzIeryHt0xERFIo1YnHzAzAPQCWkPx5wGozAJzj9W47DMAmkjnNbCIikg5pb2o7EsDZAN4ysze8ZVcDGAgAJO8EMBPACQCqAGwFcF4CcYqISIFSnXhIvgLAGlmHAP4rnohERKRYqW5qExGR0qPEIyIisVLiERGRWCnxiIhIrJR4REQkVko8IiISKyUeERGJlRKPiIjESolHRERipcQjIiKxUuIREZFYKfGIiEislHhERCRWSjwiIhIrJR4REYmVEo+IiMRKiUdERGKlxCMiIrFKfeIxs3vNbI2Z/TOg/Ggz22Rmb3i3a+OOUURECleWdAAFuA/ArwA8kGedl0meGE84IiJSjNTXeEi+BGBD0nGIiEg4Up94CnS4mS00s6fN7MtJByMiIsFaQlNbYxYA2JPkFjM7AcCfAAz2W9HMJgGYBAADBw6ML0IREflCi6/xkNxMcot3fyaAdmbWM2DdaSQrSFb06tUr1jhFRMRp8YnHzPqYmXn3D4X7n9YnG5WIiARJfVObmT0M4GgAPc1sJYDrALQDAJJ3AjgdwHfMrBrANgDjSTKhcEVEpBGpTzwkJzRS/iu47tYiItICtPimNhERaVmUeEREJFZKPCIiEislHhERiZUSj4iIxEqJR0REYqXEIyIisVLiERGRWCnxiIhIrJR4BABAAnPnAjNmAJs2JR1N6fvkE+DUU4Hu3YEBA4C77046onTbuhV44AHgssuA3/0OqKlJOiIpRuqnzJHoffYZcPrpwF//6h536QI88ggwZkyycZWyceOAv/3N3d+4EZg0CdhzT+C445KNK42qq4GxY4HZszPLHn8c+MtfgDb66RwZEnj3XZfkv/QlwE3FHA69bYLf/CaTdABg82bg3HNV84nK4sWZpJPtxhvjj6UluOuu+kkHAJ5+GnjppWTiKXU1NcA99wD77w/ssw+w777AEUcAH38c3mso8Qgeeih32dq1wGOPxR9LazBvnv/yl19Wsm+opgb47nf9y557Lt5YWoOtW4GTTwYuuABYtiyzfO5c18wZFiWeVu7zz4HXX/cv+/nP442ltVi+PLjs+efji6MlmDHDNfn4Wbw43lhag0cfdU2YfqZPD+91lHhauYULg8vefht45534Ymktsn9JNjRrVu6y1nx1qXw/fjZvji+O1mLmzOCy6urwXqdVJ56dO4EFC9zOfvZZ4KOPko4oGrW1wMMPAxMmABdd5P7nOpWV+Z97//3RxtYavf12cNmsWZlEc+edwH77Ab16AeecA2zZEk98cSPdcXboocBBBwFTp7omtvffB155Jfh5q1bFF2Nr8cknMb0QyVZ5O+CAQzhkCOkOe3czI3/wA7K2ll9Yv558/nlyzhxy9Wqm0s6d5NNPk7fdRs6aRe7YUb98yhT//3PbNnLixPplDW/DhiXzP5Wq6mqyQ4f8+3zpUvLuu3OXH3mke6/r7NhB3nEHef755I9+RG7e7P+aH3xArlwZ7f+1aZN7jZqa3LIdO8jHHycvvpi85RZy48ZMWXU1eeGFuf/rlCnkY4/l30/l5dH+T63R0KH59zmASobw/Zt4Akjq1rnzIYE79/HHXfK5+urcsuOPz3xwtm4lv/c99+W8997k175GXndd/S+AykpywgTymGPc35tvJletypRv3kxecQV57LHkmDHklVeSc+dmynfscF8q/fuTPXu67fzsZy4h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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "## now move sine wave representation of square wave at speed v, with time step dt between frames\n",
+    "v=1.0\n",
+    "dt=0.05\n",
+    "for i in range(0,40):\n",
+    "    clear_output(wait=True)\n",
+    "# Fourier series\n",
+    "    n_pts=200\n",
+    "    x=np.linspace(-1,1,n_pts)\n",
+    "    y=np.zeros(n_pts)\n",
+    "    for n in range(1,21,2):\n",
+    "        y=y+(4.0/(np.pi*float(n)))*np.sin(2.0*float(n)*np.pi*(x-float(i)*v*dt))\n",
+    "#\n",
+    "    plt.plot(x , y,linewidth=6,color='blue')\n",
+    "    plt.xlim([-1.0 , 1.0])\n",
+    "    plt.ylim([-2.0,2.00])\n",
+    "    plt.xlabel('$x$',fontsize=20)\n",
+    "    plt.ylabel('$y$',fontsize=20)\n",
+    "    plt.show() \n",
+    "    time.sleep(0.01)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "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.5.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}