{ "cells": [ { "cell_type": "markdown", "id": "3fd2453e-69d1-41e5-bb98-1b657c431634", "metadata": {}, "source": [ "# p2.m - convergence of periodic spectral method\n", "\n", "Compare this to p1." ] }, { "cell_type": "code", "execution_count": 1, "id": "31f1a9f3-1b7c-494f-83b5-89bb94352482", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABGAAAANICAIAAAAHNA4rAAAAB3RJTUUH5wQLBzUyir0l6AAAIABJREFUeJzs3Xl8FdXd+PETEvY9soSANMBjAlgQECIpIITaSiNQXg+yCUF5pCBKBNwFEVAj2IgoScGFRUFRWbSioEgFRCs0giAW2SQJBGN+EKTEkJCN+/tjhul4t9zczHrn837xx9xzJ2e+Z851XvP1zJwT5nK5BAAAAABAiFpmBwAAAAAAVkGCBAAAAAAyEiQAAAAAkJEgAQAAAICMBAkAAAAAZCRIAAAAACAjQQIAAAAAGQkSAAAAAMhIkAAAAABARoIEAAAAADISJAAAAACQkSABAAAAgIwECQAAAABkJEgAAAAAICNBAgAAAAAZCRIAAAAAyEiQAAAAAEBGggQAAAAAMhIkAAAAAJCRIAEAAACAjAQJAAAAAGQkSAAAAAAgI0ECAAAAABkJEgAAAADISJAAAAAAQEaCBAAAAAAyEiQAAAAAkJEgAQAAAICMBAkAAAAAZCRIAAAAACAjQQIAAAAAGQkSAAAAAMhIkAAAAABARoIEAAAAADISJAAAAACQkSABAAAAgIwECQAAAABkJEgAAAAAICNBAgAAAAAZCRIAAAAAyEiQAAAAAEBGggQAAAAAMhIkAAAAAJCRIAEAAACAjAQJAAAAAGQkSAAAAAAgI0ECAAAAABkJEgAAAADISJAAAAAAQEaCBAAAAAAyEiQAAAAAkJEgAQAAAICMBAkAAAAAZCRIAAAAACAjQQIAAAAAGQkSAAAAAMhIkAAAAABARoIEAAAAALIIswMAYEtXrlw5ceLE0aNH27RpExcX17RpU7MjAgAA0AAjSACqZ+/evYMGDWratGnnzp1HjBhx0003NWvWrF+/fp9//rnZoSF4paWlzzzzTM+ePZs1a9a8efNXXnnF7IiqweVyFV+lYbXdu3dv0KBBgwYNnnzyyer+bbNmzaS/Xblypa+qvJ5zi3eEr1Md3LnStjYA0AojSAACdeXKlUWLFs2bN6+iosLtq6+++mrQoEFz5sx55plnTIkNNTRlypQ1a9YoH3/55RcTg6mun376qW3bttL2zp07Bw0apEm1ly9fLikpEUKUl5dX929LSkrKysqEENJ/LF6r8nrOLd4Rvk51cOdK29oAQCskSAAC9fTTT8+fP19dEhUVVVBQoORLqamp11133Z133mlCcKiBs2fPKjflrVu37tu3b9euXc0NKWhSWmI1HTt2rKysFEK0bt1aKvF6zu3VEepT7dlAc2sDgJogQQIQkNzc3Oeee075+NRTT02ZMqV169ZFRUWpqamLFi2SymfPnj1x4sSwsDCTwkQwjh8/rmyvX7/+5ptvNjGYkPTJJ5+4lXg9519++aVnoS14NtA6tQFAdZEgAQjInDlzpIdehBBpaWkPPfSQtN2oUaOFCxdevHhx+fLlQoi8vLx9+/b16dNH+vbUqVMvvvjit99+e+TIkZYtW3bv3n3YsGFjxoxRqk1JSSksLBRCPPbYY0ePHl2zZk1mZmZERETv3r0XLFjw29/+Vghx3333FRUVCSEGDhz4f//3f9IfVlZWTp06VXoCZ+LEib///e+l8m+//fbVV1/95ptvsrOzu3XrlpCQcPfdd//mN7/xPNzFixdTU1P3798/evToF198UdrhlVde2bJly/79+9u0afO73/3umWeemTVrljRE9vjjj3fu3DmQowTYLkVWVlZGRsaBAweOHDkSGRkZGxs7efLkoUOHunVBlQf1yn8XXLhwYdasWT/99JOy/9KlS1euXPnwww+7BSnZvXv36tWr9+3bd/bs2bp167Zt23bo0KF/+ctfWrVq5dbwRx99dNeuXX//+9+/++67Tp069e3bNyUlxTPaQBrl//zcc889+fn5ys4LFy586623brvtttGjR/vp7osXL7711lubNm06derUhQsXmjZt2qFDh6SkpPvuu69evXr+T6kbl8v1yiuvbNu27euvv46KihowYIDbQKt0NqQghw4desstt3ie8+XLl5eUlCj/iXl2RLV+cp6/bU1+sX5OtbqBo0aNknbwf5KrW5vQ6HoCAFVzAUAAoqOjpYtGixYtSkpK3L794YcfUq7au3evVLhy5cpGjRp5XnZuu+228+fPS/so098NHTrUbdypfv36+/fvd7lcQ4YMkUo6duyoHHHXrl3Knt9//71UuGjRojp16rgdrlWrVnv27HE73PTp05U9x48f73K5SktL1bdikptuuknZ3rVrV4BHCbBdkjVr1ng9S8OGDSsvL1d2C+SgnqrsguzsbM9vhRCffPKJ19pq1fIytU9MTEx2drZbw3v27OkZ7VdffaWuMJBGVXl+vA5Xzpgxw093nzlzRsl13fTp0+fSpUvS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tFsaXBja29v37dtXVVXlPV4BAIB/7sIMpH7o5MmT69ata2pq2r9/f01NzcyZM2fMmJH1UAClpL6+fteuXWvWrMl6EIDSkMvl1qxZs3nz5gMHDtTU1MyaNevBBx/MeqgSUKqX2JWclStX1tfXd3d3T5s27ciRIwsXLvzoo4+yHgqgNOTz+S+//PKTTz75888/s54FoGQsXLhwxYoVQ4cOnT59+oEDB55//vmNGzdmPVQJ8ApSMZw4ceKuu+66/vrrN2zYMGjQoOPHj0+ZMiWl9P3332c9GkB/V19f39TU1NbWllK67bbbNmzYkPVEACVg165dU6dOnTZt2ooVK1JK7e3tU6ZMqays3LRpU9aj9XdeQSqGrVu3dnR0PPLII4MGDUopXXrppdOnTz948ODevXuzHg2gv6utrZ0xY8acOXOqqqrKysqyHgegNOzcuTOfzz/22GOFD4cNGzZu3Di/fP4TF9Rtvvut/fv3p5RGjx7dc1J4fODAgeuuuy6zsQBKwaOPPlp48Msvv5w4cSLbYQBKxc0337x06dJbb7218GEul9uxY0d1dXW2U5UEgVQMx48fTyldfvnlPSeFx4VzAAD4d9XU1NTU1BQe5/P5hoaG1tbWF154IdupSoJAKobCNSG5XK7npPCnX/4ADACA86qtrW3x4sWbN2+ePHnyk08+mfU4JUAgnZvdu3f/+OOPU6dOveKKK057qr29ffv27a2trVVVVbW1tVdeeWXPUxdddFFK6dQrQzo6OlJKF198cVGmBshe7/YnAH3Zn99+++2iRYuOHj06b968p59+urzcDQjOTiCdm7fffrupqemmm2664447Tj3fuHHj0qVLjx49Wvhw8ODBzz333Ny5cwsfjhgxIqW0Z8+eu+++u3CyZ8+ennOAgaB3+xOAXu/Pzz777MUXX7zlllvefPPNG2+8sahDlzKB9E8dO3ZszZo1TU1NZz71008/LVq0KJ/PT506ta6u7tdff12/fv2KFStGjhz50EMPpZTGjh1bXl7+xRdfPP744ymlXC73zTffDB069IYbbij2twFQdH3ZnwADWV/25+HDh5csWXLnnXe+9957rlo6JwLp7H744Yfly5fv3bv3/909afXq1fl8ftasWa+88krhpKamZvny5atXry78gFZWVk6ePPnrr79evHjxPffc89VXX+3YseOJJ54o3PUb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AIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAIJAAgAACAIJAAAgCCQAAIAgkAAAAMJ/AB4siVTnyP1UAAAAAElFTkSuQmCC" }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "% For various N (even), set up grid as before:\n", " clf, subplot('position',[.1 .4 .8 .5])\n", " for N = 2:2:100;\n", " h = 2*pi/N;\n", " x = -pi + (1:N)'*h;\n", " u = exp(sin(x)); uprime = cos(x).*u;\n", "\n", " % Construct spectral differentiation matrix:\n", " column = [0 .5*(-1).^(1:N-1).*cot((1:N-1)*h/2)];\n", " D = toeplitz(column,column([1 N:-1:2]));\n", "\n", " % Plot max(abs(D*u-uprime)):\n", " error = norm(D*u-uprime,inf);\n", " loglog(N,error,'.','markersize',15), hold on\n", " end\n", " grid on, xlabel N, ylabel error\n", " title('Convergence of spectral differentiation')" ] } ], "metadata": { "kernelspec": { "display_name": "MATLAB Kernel", "language": "matlab", "name": "jupyter_matlab_kernel" }, "language_info": { "file_extension": ".m", "mimetype": "text/x-matlab", "name": "matlab" } }, "nbformat": 4, "nbformat_minor": 5 }