From 545ef3262fa6e61236b8aaa3d5394f9cebd3985e Mon Sep 17 00:00:00 2001 From: "Ryan C. Cooper" Date: Tue, 4 Apr 2017 09:17:26 -0400 Subject: [PATCH] added lecture 19 --- lecture_17/octave-workspace | Bin 23760 -> 5146 bytes lecture_18/Newtint.m | 67 +- lecture_18/lecture_18.ipynb | 631 +++++-- lecture_18/octave-workspace | Bin 0 -> 7470 bytes .../lecture 19-checkpoint.ipynb | 497 ++++++ lecture_19/Newtint.m | 34 + lecture_19/lecture 19.ipynb | 1488 +++++++++++++++++ lecture_19/newton_cotes.png | Bin 0 -> 78112 bytes lecture_19/q1.png | Bin 0 -> 30855 bytes lecture_19/q2.png | Bin 0 -> 22150 bytes lecture_19/q3.png | Bin 0 -> 30938 bytes lecture_19/q4.png | Bin 0 -> 34995 bytes lecture_19/simpson3.m | 23 + lecture_19/trap.m | 22 + 14 files changed, 2569 insertions(+), 193 deletions(-) create mode 100644 lecture_18/octave-workspace create mode 100644 lecture_19/.ipynb_checkpoints/lecture 19-checkpoint.ipynb create mode 100644 lecture_19/Newtint.m create mode 100644 lecture_19/lecture 19.ipynb create mode 100644 lecture_19/newton_cotes.png create mode 100644 lecture_19/q1.png create mode 100644 lecture_19/q2.png create mode 100644 lecture_19/q3.png create mode 100644 lecture_19/q4.png create mode 100644 lecture_19/simpson3.m create mode 100644 lecture_19/trap.m diff --git a/lecture_17/octave-workspace b/lecture_17/octave-workspace index 52eed6b91409ebc41b42f7289e345054fd896bd1..c9ec2aa3f1753ebfc595762a3c1c99b8573c1bf4 100644 GIT binary patch delta 41 xcmcbxlW~>?w|{a;Vp*!Lp{@_Z=823`*e08B_HCZey`Gb?a-x99=8Kk^%m6Vs4f_B9 literal 23760 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\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t15\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tresiduals of function\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "[sse,yhat]=sse_nonlin_exp(a,data(:,1),data(:,2));\n", + "plot(data(:,1),data(:,2)-yhat)\n", + "title('residuals of function')" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -506,12 +701,12 @@ "\n", "$\\sigma(t)=\\frac{1}{1+e^{-t}}$\n", "\n", - "We can use this function to describe the likelihood of failure (1) or success (0). When z=0, the probability of failure is 50%. " + "We can use this function to describe the likelihood of failure (1) or success (0). When t=0, the probability of failure is 50%. " ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 131, "metadata": { "collapsed": false }, @@ -691,7 +886,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 132, "metadata": { "collapsed": false }, @@ -739,7 +934,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 134, "metadata": { "collapsed": false }, @@ -786,115 +981,125 @@ "\n", "\n", "\t\n", - "\t\t\n", + "\t\t\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.2\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.4\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.6\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.8\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t50\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t55\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t60\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t65\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t70\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t75\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t80\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t85\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", + "\n", + "\t\n", + "\t\tfailure (1)/ pass (0)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tTemp (F)\n", + "\t\n", + "\n", "\n", "\n", "\tgnuplot_plot_1a\n", - "\n", + "\n", "\n", "\n", "\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\n", @@ -917,19 +1122,21 @@ } ], "source": [ - "plot(oring(:,2),oring(:,3),'o')" + "plot(oring(:,2),oring(:,3),'o')\n", + "xlabel('Temp (F)')\n", + "ylabel('failure (1)/ pass (0)')" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 135, "metadata": { "collapsed": true }, "outputs": [], "source": [ "function J=sse_logistic(a,x,y)\n", - " % Create function to calculate SSE of logistic function\n", + " % Create function to calculate cost of logistic function\n", " % t = a0+a1*x\n", " % sigma(t) = 1./(1+e^(-t))\n", " sigma=@(t) 1./(1+exp(-t));\n", @@ -942,7 +1149,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 142, "metadata": { "collapsed": false }, @@ -1006,36 +1213,41 @@ "\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.2\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.4\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.6\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.8\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", + "\t\t\n", + "\t\t1.2\n", + "\t\n", + "\n", + "\n", "\t\t\n", "\t\t50\n", "\t\n", @@ -1086,36 +1298,40 @@ "\n", "\n", "\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\tgnuplot_plot_2a\n", "\n", - "\t\n", + "\t\n", "\t\n", - "\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t\n", + "\t\n", + "\n", "\n", "\n", "\n", @@ -1139,12 +1355,13 @@ "a=fminsearch(@(a) sse_logistic(a,oring(:,2),oring(:,3)),[0,-3])\n", "\n", "T=linspace(50,85);\n", - "plot(oring(:,2),oring(:,3),'o',T,sigma(a(1)+a(2)*T))" + "plot(oring(:,2),oring(:,3),'o',T,sigma(a(1)+a(2)*T),T,a(1)+a(2)*T)\n", + "axis([50,85,-0.1,1.2])" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 139, "metadata": { "collapsed": false }, @@ -1154,13 +1371,15 @@ "output_type": "stream", "text": [ "probability of failure when 70 degrees is 23.00% \n", - "probability of failure when 60 degrees is 75.25%\n" + "probability of failure when 60 degrees is 75.25%\n", + "probability of failure when 36 degrees is 99.87%\n" ] } ], "source": [ "fprintf('probability of failure when 70 degrees is %1.2f%% ',100*sigma(a(1)+a(2)*70))\n", - "fprintf('probability of failure when 60 degrees is %1.2f%%',100*sigma(a(1)+a(2)*60))\n" + "fprintf('probability of failure when 60 degrees is %1.2f%%',100*sigma(a(1)+a(2)*60))\n", + "fprintf('probability of failure when 36 degrees is %1.2f%%',100*sigma(a(1)+a(2)*36))\n" ] }, { @@ -1196,7 +1415,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 149, "metadata": { "collapsed": false }, @@ -1207,6 +1426,7 @@ "text": [ "ln(2)~0.358352\n", "ln(2)~0.462098\n", + "ln(2)~0.549306\n", "ln(2)=0.693147\n" ] } @@ -1215,14 +1435,16 @@ "ln2_16=log(1)+(log(6)-log(1))/(6-1)*(2-1);\n", "fprintf('ln(2)~%f\\n',ln2_16)\n", "ln2_14=log(1)+(log(4)-log(1))/(4-1)*(2-1);\n", + "ln2_13=log(1)+(log(3)-log(1))/(3-1)*(2-1);\n", "fprintf('ln(2)~%f\\n',ln2_14)\n", + "fprintf('ln(2)~%f\\n',ln2_13)\n", "ln2=log(2);\n", "fprintf('ln(2)=%f\\n',ln2)" ] }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 147, "metadata": { "collapsed": false }, @@ -1269,98 +1491,108 @@ "\n", "\n", "\t\n", - "\t\t\n", + "\t\t\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1.5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t2\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t2\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t3\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t4\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t6\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", + "\n", + "\t\n", + "\t\tln(x)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tx\n", + "\t\n", + "\n", "\n", "\n", "\tgnuplot_plot_1a\n", - "\n", + "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\tgnuplot_plot_2a\n", "\n", "\t \n", - "\t\n", + "\t\n", "\n", "\t\n", "\tgnuplot_plot_3a\n", "\n", - "\t\t \n", - "\t\n", - "\t\n", - "\t\n", + "\t\t \n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\tgnuplot_plot_4a\n", "\n", - "\t\t \n", - "\t\n", - "\t\n", - "\t\n", + "\t\t \n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\n", @@ -1386,7 +1618,9 @@ "x=linspace(1,6);\n", "plot(x,log(x),2,log(2),'*',...\n", "[1,2,6],[log(1),ln2_16,log(6)],'o-',...\n", - "[1,2,4],[log(1),ln2_14,log(4)],'s-')" + "[1,2,4],[log(1),ln2_14,log(4)],'s-')\n", + "ylabel('ln(x)')\n", + "xlabel('x')" ] }, { @@ -1417,7 +1651,41 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 154, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z =\n", + "\n", + " 1 1 1\n", + " 1 4 16\n", + " 1 600 360000\n", + "\n", + "ans = 5.1766e+05\n", + "ans =\n", + "\n", + " -4.6513e-01\n", + " 4.6589e-01\n", + " -7.5741e-04\n", + "\n" + ] + } + ], + "source": [ + "x=[1,4,600]';\n", + "Z=[x.^0,x.^1,x.^2]\n", + "cond(Z)\n", + "Z\\log(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 155, "metadata": { "collapsed": false }, @@ -1441,18 +1709,25 @@ "f3=log(x3);\n", "\n", "b1=f1\n", - "b2=(f2-f1)/(x2-x1)\n", + "b2=(f2-b1)/(x2-x1)\n", "b3=(f3-f2)/(x3-x2)-b2;\n", "b3=b3/(x3-x1)" ] }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 157, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 0.56584\r\n" + ] + }, { "data": { "image/svg+xml": [ @@ -1615,7 +1890,8 @@ "f=@(x) b1+b2*(x-x1)+b3*(x-x1).*(x-x2);\n", "plot(x,log(x),2,log(2),'*',...\n", "[1,4,6],[log(1),log(4),log(6)],'ro',...\n", - "x,f(x),'r-',2,f(2),'s')" + "x,f(x),'r-',2,f(2),'s')\n", + "f(2)" ] }, { @@ -1649,7 +1925,41 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 160, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b =\n", + "\n", + " 0.00000 0.54931 -0.08721 0.01178\n", + " 1.09861 0.28768 -0.02832 0.00000\n", + " 1.38629 0.20273 0.00000 0.00000\n", + " 1.79176 0.00000 0.00000 0.00000\n", + "\n", + "ans = 0.66007\n", + "ans =\n", + "\n", + " 0.00000\n", + " 1.09861\n", + " 1.38629\n", + " 1.79176\n", + "\n" + ] + } + ], + "source": [ + "Newtint([1,3,4,6],log([1,3,4,6]),2)\n", + "log([1,3,4,6]')" + ] + }, + { + "cell_type": "code", + "execution_count": 162, "metadata": { "collapsed": false }, @@ -1659,7 +1969,7 @@ "output_type": "stream", "text": [ "ln(2)=0.693147\n", - "ln(2)~0.722462\n" + "ln(2)~0.366349\n" ] }, { @@ -1704,113 +2014,113 @@ "\n", "\n", "\t\n", - "\t\t\n", + "\t\t\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\t\n", - "\t\t-1\n", + "\t\t\n", + "\t\t-2\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t-0.5\n", + "\t\t\n", + "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t0\n", + "\t\t\n", + "\t\t2\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t0.5\n", + "\t\t\n", + "\t\t4\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t1\n", + "\t\t\n", + "\t\t6\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t1.5\n", + "\t\t\n", + "\t\t8\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", + "\t\t\n", + "\t\t10\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t1\n", + "\t\t\n", + "\t\t10\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t2\n", + "\t\t\n", + "\t\t20\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t3\n", + "\t\t\n", + "\t\t30\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t4\n", + "\t\t\n", + "\t\t40\n", "\t\n", "\n", "\n", - "\t\t\n", - "\t\t5\n", + "\t\t\n", + "\t\t50\n", "\t\n", "\n", "\n", "\t\t\n", - "\t\t6\n", + "\t\t60\n", "\t\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\n", "\n", "\tgnuplot_plot_1a\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\tgnuplot_plot_2a\n", "\n", "\t \n", - "\t\n", + "\t\n", "\n", "\t\n", "\tgnuplot_plot_3a\n", "\n", "\t \n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\tgnuplot_plot_4a\n", "\n", - "\t\n", + "\t\n", "\t\n", "\n", "\n", @@ -1833,10 +2143,11 @@ ], "source": [ "\n", - "yy=zeros(size(xx));\n", - "x=[0.5,1,3,4,5,6]; % define independent var's\n", + "\n", + "x=[0.2,3,10,20,50,60]; % define independent var's\n", "y=log(x); % define dependent var's\n", "xx=linspace(min(x),max(x));\n", + "yy=zeros(size(xx));\n", "for i=1:length(xx)\n", " yy(i)=Newtint(x,y,xx(i));\n", "end\n", diff --git a/lecture_18/octave-workspace b/lecture_18/octave-workspace new file mode 100644 index 0000000000000000000000000000000000000000..c65169697346d5d351f3f9767bf0ba8da01d8669 GIT binary patch literal 7470 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' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help interp1" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'interp2' is a function from the file /usr/share/octave/4.0.0/m/general/interp2.m\n", + "\n", + " -- Function File: ZI = interp2 (X, Y, Z, XI, YI)\n", + " -- Function File: ZI = interp2 (Z, XI, YI)\n", + " -- Function File: ZI = interp2 (Z, N)\n", + " -- Function File: ZI = interp2 (Z)\n", + " -- Function File: ZI = interp2 (..., METHOD)\n", + " -- Function File: ZI = interp2 (..., METHOD, EXTRAP)\n", + "\n", + " Two-dimensional interpolation.\n", + "\n", + " Interpolate reference data X, Y, Z to determine ZI at the\n", + " coordinates XI, YI. The reference data X, Y can be matrices, as\n", + " returned by 'meshgrid', in which case the sizes of X, Y, and Z must\n", + " be equal. If X, Y are vectors describing a grid then 'length (X)\n", + " == columns (Z)' and 'length (Y) == rows (Z)'. In either case the\n", + " input data must be strictly monotonic.\n", + "\n", + " If called without X, Y, and just a single reference data matrix Z,\n", + " the 2-D region 'X = 1:columns (Z), Y = 1:rows (Z)' is assumed.\n", + " This saves memory if the grid is regular and the distance between\n", + " points is not important.\n", + "\n", + " If called with a single reference data matrix Z and a refinement\n", + " value N, then perform interpolation over a grid where each original\n", + " interval has been recursively subdivided N times. This results in\n", + " '2^N-1' additional points for every interval in the original grid.\n", + " If N is omitted a value of 1 is used. As an example, the interval\n", + " [0,1] with 'N==2' results in a refined interval with points at [0,\n", + " 1/4, 1/2, 3/4, 1].\n", + "\n", + " The interpolation METHOD is one of:\n", + "\n", + " \"nearest\"\n", + " Return the nearest neighbor.\n", + "\n", + " \"linear\" (default)\n", + " Linear interpolation from nearest neighbors.\n", + "\n", + " \"pchip\"\n", + " Piecewise cubic Hermite interpolating\n", + " polynomial--shape-preserving interpolation with smooth first\n", + " derivative.\n", + "\n", + " \"cubic\"\n", + " Cubic interpolation (same as \"pchip\").\n", + "\n", + " \"spline\"\n", + " Cubic spline interpolation--smooth first and second\n", + " derivatives throughout the curve.\n", + "\n", + " EXTRAP is a scalar number. It replaces values beyond the endpoints\n", + " with EXTRAP. Note that if EXTRAPVAL is used, METHOD must be\n", + " specified as well. If EXTRAP is omitted and the METHOD is\n", + " \"spline\", then the extrapolated values of the \"spline\" are used.\n", + " Otherwise the default EXTRAP value for any other METHOD is \"NA\".\n", + "\n", + " See also: interp1, interp3, interpn, meshgrid.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help interp2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tdata\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tdata\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tlinear\n", + "\n", + "\t\n", + "\t\tlinear\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tcubic spline\n", + "\n", + "\t\n", + "\t\tcubic spline\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tpiecewise cubic\n", + "\n", + "\t\n", + "\t\tpiecewise cubic\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x=linspace(-pi,pi,9);\n", + "xi=linspace(-pi,pi,100);\n", + "y=sin(x);\n", + "yi_lin=interp1(x,y,xi,'linear');\n", + "yi_spline=interp1(x,y,xi,'spline'); \n", + "yi_cubic=interp1(x,y,xi,'cubic');\n", + "plot(x,y,'o',xi,yi_lin,xi,yi_spline,xi,yi_cubic)\n", + "axis([-pi,pi,-1.5,1.5])\n", + "legend('data','linear','cubic spline','piecewise cubic','Location','NorthWest')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example: Accelerate then hold velocity\n", + "\n", + "Here the time is given as vector t in seconds and the " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "t=[0 2 40 56 68 80 84 96 104 110]';\n", + "v=[0 20 20 38 80 80 100 100 125 125]';\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_19/Newtint.m b/lecture_19/Newtint.m new file mode 100644 index 0000000..e4c6c83 --- /dev/null +++ b/lecture_19/Newtint.m @@ -0,0 +1,34 @@ +function yint = Newtint(x,y,xx) +% Newtint: Newton interpolating polynomial +% yint = Newtint(x,y,xx): Uses an (n - 1)-order Newton +% interpolating polynomial based on n data points (x, y) +% to determine a value of the dependent variable (yint) +% at a given value of the independent variable, xx. +% input: +% x = independent variable +% y = dependent variable +% xx = value of independent variable at which +% interpolation is calculated +% output: +% yint = interpolated value of dependent variable + +% compute the finite divided differences in the form of a +% difference table +n = length(x); +if length(y)~=n, error('x and y must be same length'); end +b = zeros(n,n); +% assign dependent variables to the first column of b. +b(:,1) = y(:); % the (:) ensures that y is a column vector. +for j = 2:n + for i = 1:n-j+1 + b(i,j) = (b(i+1,j-1)-b(i,j-1))/(x(i+j-1)-x(i)); + end +end +%b +% use the finite divided differences to interpolate +xt = 1; +yint = b(1,1); +for j = 1:n-1 + xt = xt*(xx-x(j)); + yint = yint+b(1,j+1)*xt; +end diff --git a/lecture_19/lecture 19.ipynb b/lecture_19/lecture 19.ipynb new file mode 100644 index 0000000..e6f9f76 --- /dev/null +++ b/lecture_19/lecture 19.ipynb @@ -0,0 +1,1488 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Questions from last class\n", + "\n", + "![q1](q1.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![q2](q2.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![q3](q3.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![q4](q4.png)\n", + "\n", + "#### Other:\n", + "\n", + "Twice the amount of points needed\n", + "\n", + "depends on what order polynomial it is and how far the data needs to be extrapolated \n", + "\n", + "As man you as possible \n", + "\n", + "Never extrapolate unless linear interpolation.\n", + "\n", + "You shouldn't. 2 if the linear is a good fit for the region, and you absolutely have to.\n", + "\n", + "Wait can you do that?\n", + "\n", + "Don't use extrapolation\n", + "\n", + "do not extrapolate\n", + "\n", + "As many data points as you have\n", + "\n", + "the more the better so that the best polynomial can be made through the data points\n", + "\n", + "Twice the amount of points needed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Questions from you\n", + "\n", + "- when will the project assignment be finalized? Also do you pronounce it \"jiff\" or \"gif\"?\n", + "\n", + "- If blue is red and red is blue, then what is purple? \n", + "\n", + "- How do we open the .ipynb lecture files? Or will the lectures continue to be also saved in pdf (last few have not).\n", + "\n", + "- When will we be put on teams for the final project?\n", + "\n", + "- What is the grading rubric for the project?\n", + "\n", + "- How to sync repository with files from laptop like hw without using Github desktop \n", + "\n", + "- Are there any upcoming deadlines for the project?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Splines (Brief introduction before next section)\n", + "\n", + "Following interpolation discussion, instead of estimating 9 data points with an eighth-order polynomial, it makes more sense to fit sections of the curve to lower-order polynomials:\n", + "\n", + "0. zeroth-order (nearest neighbor)\n", + "\n", + "1. first-order (linear interpolation)\n", + "\n", + "2. third-order (cubic interpolation)\n", + "\n", + "Matlab and Octave have built-in functions for 1D and 2D interpolation:\n", + "\n", + "`interp1`\n", + "\n", + "`interp2`" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'interp1' is a function from the file /usr/share/octave/4.0.0/m/general/interp1.m\n", + "\n", + " -- Function File: YI = interp1 (X, Y, XI)\n", + " -- Function File: YI = interp1 (Y, XI)\n", + " -- Function File: YI = interp1 (..., METHOD)\n", + " -- Function File: YI = interp1 (..., EXTRAP)\n", + " -- Function File: YI = interp1 (..., \"left\")\n", + " -- Function File: YI = interp1 (..., \"right\")\n", + " -- Function File: PP = interp1 (..., \"pp\")\n", + "\n", + " One-dimensional interpolation.\n", + "\n", + " Interpolate input data to determine the value of YI at the points\n", + " XI. If not specified, X is taken to be the indices of Y ('1:length\n", + " (Y)'). If Y is a matrix or an N-dimensional array, the\n", + " interpolation is performed on each column of Y.\n", + "\n", + " The interpolation METHOD is one of:\n", + "\n", + " \"nearest\"\n", + " Return the nearest neighbor.\n", + "\n", + " \"previous\"\n", + " Return the previous neighbor.\n", + "\n", + " \"next\"\n", + " Return the next neighbor.\n", + "\n", + " \"linear\" (default)\n", + " Linear interpolation from nearest neighbors.\n", + "\n", + " \"pchip\"\n", + " Piecewise cubic Hermite interpolating\n", + " polynomial--shape-preserving interpolation with smooth first\n", + " derivative.\n", + "\n", + " \"cubic\"\n", + " Cubic interpolation (same as \"pchip\").\n", + "\n", + " \"spline\"\n", + " Cubic spline interpolation--smooth first and second\n", + " derivatives throughout the curve.\n", + "\n", + " Adding '*' to the start of any method above forces 'interp1' to\n", + " assume that X is uniformly spaced, and only 'X(1)' and 'X(2)' are\n", + " referenced. This is usually faster, and is never slower. The\n", + " default method is \"linear\".\n", + "\n", + " If EXTRAP is the string \"extrap\", then extrapolate values beyond\n", + " the endpoints using the current METHOD. If EXTRAP is a number,\n", + " then replace values beyond the endpoints with that number. When\n", + " unspecified, EXTRAP defaults to 'NA'.\n", + "\n", + " If the string argument \"pp\" is specified, then XI should not be\n", + " supplied and 'interp1' returns a piecewise polynomial object. This\n", + " object can later be used with 'ppval' to evaluate the\n", + " interpolation. There is an equivalence, such that 'ppval (interp1\n", + " (X, Y, METHOD, \"pp\"), XI) == interp1 (X, Y, XI, METHOD, \"extrap\")'.\n", + "\n", + " Duplicate points in X specify a discontinuous interpolant. There\n", + " may be at most 2 consecutive points with the same value. If X is\n", + " increasing, the default discontinuous interpolant is\n", + " right-continuous. If X is decreasing, the default discontinuous\n", + " interpolant is left-continuous. The continuity condition of the\n", + " interpolant may be specified by using the options \"left\" or \"right\"\n", + " to select a left-continuous or right-continuous interpolant,\n", + " respectively. Discontinuous interpolation is only allowed for\n", + " \"nearest\" and \"linear\" methods; in all other cases, the X-values\n", + " must be unique.\n", + "\n", + " An example of the use of 'interp1' is\n", + "\n", + " xf = [0:0.05:10];\n", + " yf = sin (2*pi*xf/5);\n", + " xp = [0:10];\n", + " yp = sin (2*pi*xp/5);\n", + " lin = interp1 (xp, yp, xf);\n", + " near = interp1 (xp, yp, xf, \"nearest\");\n", + " pch = interp1 (xp, yp, xf, \"pchip\");\n", + " spl = interp1 (xp, yp, xf, \"spline\");\n", + " plot (xf,yf,\"r\", xf,near,\"g\", xf,lin,\"b\", xf,pch,\"c\", xf,spl,\"m\",\n", + " xp,yp,\"r*\");\n", + " legend (\"original\", \"nearest\", \"linear\", \"pchip\", \"spline\");\n", + "\n", + " See also: pchip, spline, interpft, interp2, interp3, interpn.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help interp1" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'interp2' is a function from the file /usr/share/octave/4.0.0/m/general/interp2.m\n", + "\n", + " -- Function File: ZI = interp2 (X, Y, Z, XI, YI)\n", + " -- Function File: ZI = interp2 (Z, XI, YI)\n", + " -- Function File: ZI = interp2 (Z, N)\n", + " -- Function File: ZI = interp2 (Z)\n", + " -- Function File: ZI = interp2 (..., METHOD)\n", + " -- Function File: ZI = interp2 (..., METHOD, EXTRAP)\n", + "\n", + " Two-dimensional interpolation.\n", + "\n", + " Interpolate reference data X, Y, Z to determine ZI at the\n", + " coordinates XI, YI. The reference data X, Y can be matrices, as\n", + " returned by 'meshgrid', in which case the sizes of X, Y, and Z must\n", + " be equal. If X, Y are vectors describing a grid then 'length (X)\n", + " == columns (Z)' and 'length (Y) == rows (Z)'. In either case the\n", + " input data must be strictly monotonic.\n", + "\n", + " If called without X, Y, and just a single reference data matrix Z,\n", + " the 2-D region 'X = 1:columns (Z), Y = 1:rows (Z)' is assumed.\n", + " This saves memory if the grid is regular and the distance between\n", + " points is not important.\n", + "\n", + " If called with a single reference data matrix Z and a refinement\n", + " value N, then perform interpolation over a grid where each original\n", + " interval has been recursively subdivided N times. This results in\n", + " '2^N-1' additional points for every interval in the original grid.\n", + " If N is omitted a value of 1 is used. As an example, the interval\n", + " [0,1] with 'N==2' results in a refined interval with points at [0,\n", + " 1/4, 1/2, 3/4, 1].\n", + "\n", + " The interpolation METHOD is one of:\n", + "\n", + " \"nearest\"\n", + " Return the nearest neighbor.\n", + "\n", + " \"linear\" (default)\n", + " Linear interpolation from nearest neighbors.\n", + "\n", + " \"pchip\"\n", + " Piecewise cubic Hermite interpolating\n", + " polynomial--shape-preserving interpolation with smooth first\n", + " derivative.\n", + "\n", + " \"cubic\"\n", + " Cubic interpolation (same as \"pchip\").\n", + "\n", + " \"spline\"\n", + " Cubic spline interpolation--smooth first and second\n", + " derivatives throughout the curve.\n", + "\n", + " EXTRAP is a scalar number. It replaces values beyond the endpoints\n", + " with EXTRAP. Note that if EXTRAPVAL is used, METHOD must be\n", + " specified as well. If EXTRAP is omitted and the METHOD is\n", + " \"spline\", then the extrapolated values of the \"spline\" are used.\n", + " Otherwise the default EXTRAP value for any other METHOD is \"NA\".\n", + "\n", + " See also: interp1, interp3, interpn, meshgrid.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help interp2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tdata\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tdata\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tlinear\n", + "\n", + "\t\n", + "\t\tlinear\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tcubic spline\n", + "\n", + "\t\n", + "\t\tcubic spline\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tpiecewise cubic\n", + "\n", + "\t\n", + "\t\tpiecewise cubic\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x=linspace(-pi,pi,9);\n", + "xi=linspace(-pi,pi,100);\n", + "y=sin(x);\n", + "yi_lin=interp1(x,y,xi,'linear');\n", + "yi_spline=interp1(x,y,xi,'spline'); \n", + "yi_cubic=interp1(x,y,xi,'cubic');\n", + "plot(x,y,'o',xi,yi_lin,xi,yi_spline,xi,yi_cubic)\n", + "axis([-pi,pi,-1.5,1.5])\n", + "legend('data','linear','cubic spline','piecewise cubic','Location','NorthWest')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example: Accelerate then hold velocity\n", + "\n", + "Here the time is given as vector t in seconds and the velocity is in mph. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t140\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tv (mph)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tt (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tdata\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tdata\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\tlinear\n", + "\n", + "\t\n", + "\t\tlinear\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tcubic spline\n", + "\n", + "\t\n", + "\t\tcubic spline\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tpiecewise cubic\n", + "\n", + "\t\n", + "\t\tpiecewise cubic\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "t=[0 20 40 56 68 80 84 96 104 110]';\n", + "v=[0 20 20 38 80 80 100 100 125 125]';\n", + "tt=linspace(0,110)';\n", + "v_lin=interp1(t,v,tt);\n", + "v_spl=interp1(t,v,tt,'spline');\n", + "v_cub=interp1(t,v,tt,'cubic');\n", + "\n", + "plot(t,v,'o',tt,v_lin,tt,v_spl,tt,v_cub)\n", + "xlabel('t (s)')\n", + "ylabel('v (mph)')\n", + "legend('data','linear','cubic spline','piecewise cubic','Location','NorthWest')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tdv/dt (mph/s)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tt (s)\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tlinear\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tlinear\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tcubic spline\n", + "\n", + "\t\n", + "\t\tcubic spline\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tpiecewise cubic\n", + "\n", + "\t\n", + "\t\tpiecewise cubic\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "t=[0 20 40 56 68 80 84 96 104 110]';\n", + "v=[0 20 20 38 80 80 100 100 125 125]';\n", + "tt=linspace(0,110)';\n", + "v_lin=interp1(t,v,tt);\n", + "v_spl=interp1(t,v,tt,'spline');\n", + "v_cub=interp1(t,v,tt,'cubic');\n", + "\n", + "\n", + "plot(tt(2:end),diff(v_lin)./diff(tt),tt(2:end),diff(v_spl)./diff(tt),tt(2:end),diff(v_cub)./diff(tt))\n", + "xlabel('t (s)')\n", + "ylabel('dv/dt (mph/s)')\n", + "legend('linear','cubic spline','piecewise cubic','Location','NorthWest')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Choose spline wisely\n", + "\n", + "For example of sin(x), not very important\n", + "\n", + "For stop-and-hold examples, the $C^{2}$-continuity should not be preserved. You don't need smooth curves.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numerical Integration\n", + "\n", + "A definite integral is defined by \n", + "\n", + "$I=\\int_{a}^{b}f(x)dx$\n", + "\n", + "To determine the mass of an object with varying density, you can perform a summation\n", + "\n", + "mass=$\\sum_{i=1}^{n}\\rho_{i}\\Delta V_{i}$\n", + "\n", + "or taking the limit as $\\Delta V \\rightarrow dV=dxdydz$\n", + "\n", + "mass=$\\int_{0}^{h}\\int_{0}^{w}\\int_{0}^{l}\\rho(x,y,z)dxdydz$\n", + "\n", + "## Newton-Cotes Formulas\n", + "\n", + "$I=\\int_{a}^{b}f(x)dx=\\int_{a}^{b}f_{n}(x)dx$\n", + "\n", + "where $f_{n}$ is an n$^{th}$-order polynomial approximation of f(x)\n", + "\n", + "## First-Order: Trapezoidal Rule\n", + "\n", + "$I=\\int_{a}^{b}f(x)dx\\approx \\int_{a}^{b}\\left(f(a)+\\frac{f(b)-f(a)}{b-a}(x-a)\\right)dx$\n", + "\n", + "$I\\approx(b-a)\\frac{f(a)+f(b)}{2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I_trap = 0.78540\n", + "I_act = 1.00000\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x=linspace(0,pi)';\n", + "plot(x,sin(x),[0,pi/2],sin([0,pi/2]))\n", + "I_trap=mean(sin(([0,pi/2]))*(diff([0,pi/2])))\n", + "I_act = -(cos(pi/2)-cos(0))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Improve estimate with more points\n", + "\n", + "$I=\\int_{a}^{b}f(x)dx=\\int_{a}^{a+\\Delta x}f(x)dx+\\int_{a+\\Delta x}^{a+2\\Delta x}f(x)dx+ \\cdots \\int_{b-\\Delta x}^{b}f(x)dx$\n", + "\n", + "$I\\approx\\Delta x\\frac{f(a)+f(a+\\Delta x)}{2}+\\Delta x\\frac{f(a+\\Delta x)+f(a+2\\Delta x)}{2}\n", + "+\\cdots \\Delta x\\frac{f(b-\\Delta x)+f(b)}{2}$\n", + "\n", + "$I\\approx \\frac{\\Delta x}{2}\\left(f(a)+2\\sum_{i=1}^{n-1}f(a+i\\Delta x) +f(b)\\right)$" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For 5 steps\n", + "trapezoid approximation of integral is 0.79 \n", + " actual integral is 1.00\n" + ] + } + ], + "source": [ + "N=5;\n", + "I_trap=trap(@(x) sin(x),0,pi/2,N);\n", + "fprintf('For %i steps\\ntrapezoid approximation of integral is %1.2f \\n actual integral is %1.2f',N,I_trap,I_act)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.8\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t \n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "plot(x,sin(x),linspace(0,pi/2,N),sin(linspace(0,pi/2,N)),'o')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Increase accuracy = Increase polynomial order\n", + "\n", + "### Simpson's Rules\n", + "\n", + "When integrating f(x) and using a second order polynomial, this is known as **Simpson's 1/3 Rule**\n", + "\n", + "$I=\\frac{h}{3}(f(x_{0})+4f(x_{1})+f(x_{2}))$\n", + "\n", + "where a=$x_{0}$, b=$x_{2}$, and $x_{1}=\\frac{a+b}{2}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This can be used with n=3 or multiples of 2 intervals\n", + "\n", + "$I=\\int_{x_{0}}^{x_{2}}f(x)dx+\\int_{x_{2}}^{x_{4}}f(x)dx+\\cdots +\\int_{x_{n-2}}^{x_{n}}f(x)dx$\n", + "\n", + "$I=(b-a)\\frac{f(x_{0})+4\\sum_{i=1,3,5}^{n-1}f(x_{i})+2\\sum_{i=2,4,6}^{n-2}f(x_{i})+f(x_{n})}{3n}$" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 1.6235\n", + "Is_1_3 = 1.0023\n" + ] + } + ], + "source": [ + "f=@(x) 0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;\n", + "simpson3(f,0,0.8,4)\n", + "Is_1_3=simpson3(@(x) sin(x),0,pi/2,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## General Newton-Cotes formulae\n", + "\n", + "![Newton-Cotes Table](newton_cotes.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_19/newton_cotes.png b/lecture_19/newton_cotes.png new file mode 100644 index 0000000000000000000000000000000000000000..b734d114512b221d5e1cc484da08e59afce27fb1 GIT binary patch literal 78112 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

N{}gBG1!5+;i&GsD+BWzdC_OiRFnG z&}(<7wgSlcrS`3NjH6r31~W@77N(L%o~?LU;BXh{at4NjevM=z>bpZkx8-Quz1egq8%|J$}5 zQPVnn1$^IXfmbV^|MG^evTW~v+r~|+-tA+)8>=Ef-E~?0a#xL!33z2HrEf1Yp58}; zr;99*k(c^GO$0@dXM?G#a@^bVeI$bTYtW!b$xH);+6jrZP{SxI;DI*~(auLRuT^fTYfNW;Piaxo<9$QoaY1f%(EV zLFFuw6WIP2eLqDOb>5k|sdy=84mGg~lZX1=RNDd<6oY{j|HJ1|fm!!OFiEQS)or2+ z&mjEvG^58W0P&eQ++7NS9BzF)6pAuX+=+X>HM>r@KCsUZZj&D<4!0LQhisSPAS*U* z>fLn?+@4OnVl3vRtE-!6<=%pz;F_S3_Vhv&yExoe)sL%QMRrUpHLrsoD|@b{i`0=V zzvGEx!wRpc89HjQH%s@+dm}Al{r3x8`f*BIq!xSYa!a#O+TFFD;IMQ590860&*av) z6@yqKCx4{S9^M?xuD@+~OBHlDDJgubTv}aph+rDsx23D8`b^a?;h|pwFi8ppob{vm zU-#c|F&mDK;we7b#4CXR0*v06{u!1C*A}R>eJ|cXySuuw>H%QIOsIv&uW(5N9o9l? zT!3Q~${g|W@hDel8KwWcDkqlBeQ%{MPgjD&um<&Rq{I!*#~@M=_IaT5*1uQEm{^+g zgEqln4M_?~IGjIv(dw@YDB~Qim$roGL88%LQ^fj0+f*;Wpfi?!*^aqt<&+xe>B&1M zR14S`Y)OS?b zCC*~97KAhsuG4NzNF*jm6D}66JT`j0pE-WV{lzp1p$*HeToHh^I&D1NCsf>;=7~;RT_WNHRLSyTdzb!*Vre^XKYF0pCs9GGuVC zK|2x&`Obv5H_g9S9L#rrOMP||PygYt0VQEjf^mj1B!_5_P=1BHxu}U95Ix9xiHPJV zp}sVDPQz|>#5W}5l454kEw1U9!?wsCq@x>DW%~B{MW5|`Ky`h!)O`hnD<~}*f*Pnz5EpY1jt6%n5+)#fV5%FkZaS>raAS?}XZbwWF zM#kD4F-vfwCIim55EuiepHmVAf=~U)kn=9Z>1Zhlgd2#y>_-3*fF)!P-tJzaZ9&{v zh)vjNslGv_ax54zw|^Q+Aas8E7a6^RKCl;0hY^)k!cHt6Attg#hyw zU^^dSpiq1x;^6Q8mkXeu00k=lLz;^yV2XW5 zDC|Jf1Jj-U2dUO&u~$#DCOkKPgGd-*+=Amo=2r0_mi!WrDTm=YA#kkrE2OX3tp2<_ z>agnyvqvPp#@vrgccb>gCgeJ)5jOFGP2}2VPy71QS zwIhN3*w3vBqg~BX&1qAhE;Bc_g&$+bb5+* z*Z#N9ewXdcrr!42FxeGe^Jh!k^uf*RPMtA)MWVxwWmQ3CKWCj-d>|=%2O5Y=TO0C& z&O6m$bNa*!yrB9|*Iba%PTCP06f$GJcH1AH%fjNv(aC!{oCpD1N^svIfY|v#uT*G?0p&f1KT>v} zkiY^|4{dyjiU><1Sitd2za7!(p9F*IX zLC@Qou$3~fw1JR0|0|6|waA!2S(%KZ(lVG4I&`ar<+x?8(WBAX@6muA^1b0Wyqcp@ zLeJo(r`ZpobLV=Ea0K`33m|GDFXyKf(|SI$S#Sgn*;%IA95`sqO->gm?~^0o+HlV6 z*fjvI9tY-vHhr4xO1{X=pjfXF&gL8)ep1g8dl`PgngxXfq z(5Iw#6xoxCLcyn)na4(`+fX9*$bHs`hD`N^yHTeAeJg+^K4pVL|vBO8DIya?;B{Xx+{E1+K} z)a$h|Q4etfM3@S-;W()jjWeh-HKth`Aha2&qn&|Q4$Kbr_Cj*Z|E9S!Anv`LVzBMl zyl5*vininM2sOXEQe5J=aPf3+juP-yvar)#Xcdyk-S4?)?bSrX7IL#QM&MzPd36JL z>2Swj3OwsKpOY_jS|T;>%}ncWZ34`6=4N{52#uopiCZCPxF9!zyg~s8gwzA4y9M1+iMEK7in{-1dmSxn!(Bj5jgq=Gx@GL*(lxtNFyKL?v&kv4qCz`^;w<~ zjA1DA@`joMZwzUR3&I};nJzn!X91+xXOiv`$og;2tSCT>y}Q=bGP4-V$9Wrc{(ug4 z{OY4)NI-uy;DAr2tPEKhy*guSk7Z9!4+q#yv_%Tau02@(=8!^+iN+a;57m+QWrI#; z47RbcF+@ZTO_#l)oC+iNg`S}LY;39JG(YP1Tbwt@rbPD<1qK~RFjgxf`tkE;ToMHk zCa?>!nm^mKP7(xtUB^WdlJ0K~uM3QODB(Hs*x3p&D=5rV`-8PQc-V5!K9+v0G^}ry zeV_@dCn0)fEq#5j&LOA3wWIC6h|W_}vUVRI9Q^rVLTl)pyJT!=Z0yzBdq=ullrg*x z+zm|2q1i`aC10~WEf>kUS@QLU;rX+p0;gD9N?F+%W3Bw{*Sw4nlj4+GV#F36QDws; zM=XdT@c_5s#9QSc@VLv-+WGzH%a`8rDzl+nV%T1(xw3wLgZu#{L_qKWNaDdjXv(tt zXx5#d+;|z|M~OW&Qx_{uUV4CpARZnVuz&-G^SeTUwEyIUwbmBA58ps_m#jjXPBtlYM7Y6uky=Zw^p(Wj;S5 zLpW-%B_hDRj=*O!lOKz)-Fu4$JYs^NeSYs`4`k&2clnl5zgmT|fVp>wsw*9!P0F`5 zpS8Lid^#+8!E0U%)Fz1b0r+KEeK!uKeOG|e+CU477*Yg=Mgg^ul6M1=?oYw{Z2F=d z!Z6%`c)Mpks}}lqa0}cqK^BONn^#Ost}$Kr%?bYWNlQluUGipMXl%ioSX>4`F-k_5 zWOW)$=Q?7LEH|oXEsWvxD5n~Um^Jew6+7BTsUdPuJu&=Tdit{g4;I^Z)zyM1I-oJW zD1PMzF)LtQeF7LTGd+X6EE`-m>0<>Cmb`s@n2W8fgS6KsP-%BKygz+o1elDrRaxtI zP~uJ>K5FPe&m)qHS_TH#Kw^XdQRMRnSD<^p*VNaz>p}xyvbK?4S`o7+4=h9NA3oe? zjfh*IxhU6xH3)Xo8-A+)peQfjuzeW)8{2Zj<`yq_i~?zY+m{FTTJ@X-v22(6Jb*z6 z>h%)h-AP5?K9w=L_TlPt{Y%x89GEpdmobbfbR*R6f86Az`TfF+JFcj5GchoRqk-sZb!&27R-NIg2baO_8wvR*$G)E*JyR+nr?M$ zE8E>(p8^IPbZ5$Yq>vYTrbXUh31dwSGiY9`PJH|=Mf~fiH`B*Qxvv_m5C+}OQmG>^gkYZe(Uv(>%~WjP#N zM3E^OcACv&5W@pLyB%v!tA#z(iY0m;TtgwQp$H%P=eRRQoSMJR`iJ;^?H^i&oC32) zrN?4GoBm+U!_e{`7{@&ZvXiT;*&I4!>2L6)q6Mh?+|%iS;K)Wo0`#pgy$=Y99Uj5t z)M9$RO%B8{LeO^>=6`{P6_q)hoOOLq4b6Mi}~*c9$+S*~U9VCHOOs znLo$}{dnI)xEI0heE$zwyfKpo;2*a<;~82clYf@2k+oIj1nP+3l=iNfjO=q?pLZ}G z-=XQ};UVWeWeQk;Edo+GcCJ=+O)uCV)&KV z81_`fbufn`hN$|H)4j8}B7k2w%qK+(*_;I~fw)ADSuRK8L1kFE;iQN^l>pUuhut`v z1x~}GK?A?&%#Qb0mEb@iGwPdDnOlpMQHQrA$#>er`)OPmLQO4 z(UV(4IP8>=Tkh{pZi9xeU=Ehcj^o8aW3BBU4rtl|zX7)A01F!hjRT?uoSA^(gOCd$ ziSu{;iPo5X0jXzQru#At!bavRAhjgFZ$YHr9$ojR(A#}BSibf(;brJa252OPT;KOk*f>z17_5J_zd-;M!Jb2?~D45{*QwmU#a+~P1m)XiGB(B}~ zbA(45T{VB+f%Q=iGiYNK+=S~^1$RXh6cqZDptUv}eVqNDlQ^v-uN!&(&2qE;{8y8& zqUzFbGa6Wji{eF716jUOBd3FNK-&H1XvjH1`|nR(qDy}c@#n86A{cD{Km6Y#3j57{ z4gsgbq(x)oa^8L56#sJ~KA(UHsSWnDpygArRr=?4P$asM!JG6}+ZK8vcwgVX5B^s| zbRQzUJLhzvkuJ2zzFyX^362=MSud{hOFU+8%(WPEgx#GqO-nijg8W!x3_{qD+I(6qC2 z1IyWF10JxJ$&L&nJ`SRtm7WTgx&W;30lik6>gX?<+vd2QB$Za#La-!@UeQL97n zj(%rt-SfJ`3(LT^_YAv{8Nl-N$Z?l-7w^wAeAw;(=XNxXkJCcaHp6Yvt0*C`txnp^ zJRQaM^767U>d)-W&dACNpf@v9x$A-^CL*5}T};OikJAIU?r47l@Pqi;8C;XZ_df+R z4`U9o{tR5fKLb~60r9Wm77$n;%_BJsWzp{OA}Dz~^IlN^+U5l}1tku2R$luFz1oqc z$q?)zrWacNZn2-xbNH++wZ@%27ZGusn9H%xH#D?lD_PIMGCi(>!a@%H5f#tPn?J=b zr#ZQtKhHg+qh*M)Lt35aWaBEo-Lg;iXjxr%w>-;u-%aHY(a{7qO-y`k z!0H>Mh>BUp?+_~{u)$~zyX6V1J{%hjbsTbuir)fNbj-u$8)|fkbgXcje7wy_tHanREh9Zok0U~@#>~izGljM`umqzu zlH1>psn3I63R=DE#LzPu@SE)X$2b3N2$L&W^}R{|C&2I%($W?<+d z7qD&;D*%Kb&tLo@qw5w_`yd zY^G6tn|u9JWaN4E2M;1?vrUGFYS-$|r)^hNI_L%tsNFH?S7WGrs<(ipC3|#qb)t>J zzT=A9TSPI00QqU!5<&wpK5|`q zQkuYLSue;UI)@lt2!i(a@2-w(9y-lD0qZqPaMlrl?p^6ok;0;)7yxnPX6d%haAiM3 znEX#?&ZHl?78Y*5aXY3qd#SD$3(N23<35h0`_K|-{hk%3 zKbpu#B8cb=dx}hbI}VNqxeN^rtuz@>HAr9yWrl43$<_# zFR)n|!NV1?vdT}-P@v~%M2rnFM=M`w58nl0%y&W>I(~lDJ|+1wz%YK#ww%(bki(Kf z_>p# zl$03w=}N9OR&iQxzO-+TW!jREl)SP^L-Jd|Iq}hz%f(KY@uDa`TP`v+kO*`;gN!aF%zrz9JMU}WzBMvIT3@VI%6 zT-WMJ>+4-9l;i8=`tK)4mN1V2iG3*06b{BX_|;b>5M1mw>%Dtdf*;(s*xRK>9hihl z??$L(+J6ZNz~x@wl&u%sPc~pH38L|MP;Qq9bPAQb<^r5pk?Gm0p5N!TI6wnn?{D1% z=4)MvlFF}CinCQ*LRxOZvAdH+C0>n}5r|?F3PZD_b$ECN zG-1AeZL{!;I9@iEwDfq;6-7=-nP3~mqc*hH)l?-BAAhi9e`z;B)|QJ4JVyw@adGbF zDZf2V_3j}BNc(ELChI2Vf4?iUvs0O>#8EG^6IDt~|EiE0DApD7sn#2skJXp{FWTNZ zs>-!%A6$in*0Y|t?>Vn|MV@XMn!LRHRdRuR;?3;co4pU4ENLavlicBEe0|~- zc}aIC-@fVP$Jp2htfaD^D=H6Qn>&m;{q*j&&(4DQ&G#NE#n)|9vdOn$dtd6#6&7l) zF#5j9zPmO-oh%g`aTlE*EYeOr)h zPcloc<}#v$Hs2VFXliWaY$hiPYFg_H_^|f%n`I2ALhC#>HjYuEg1D;cPbH!gx{rH@ zhtY%yUy-8VtjblA^SWnpH;d9(QPkub*HSbh<|DnuY zB%y1h^xHGc{q@BO@r&2c_$~Y?wF;jTL|cz7^;p2w-vBl`IcOmX`Nw{SxIF&ETx12| zrKaBo_&Wwhd`m3*V=sw1fBEemw|`)&YqyZUTqAD`7M@UzRW5WGn7gUT&LPJ~+WDyq zWMXy9^1r8gc`l(1*a1M z!O5;NCX9}JWPkPa)b-A{+b+*EZO()f7!zT^{QC^8S>as(>`&hW&5-q9Gm%*@iEh4nZ+o;7F{@5@kD@9&?zO2JG1_4E|hnY>!J zTR(0&AI@AtO~LInmQ3fvb>~h?Zk6j)l|DVhuJ-ly!8n(G>t|?gE<1~QZpZ0FU+S%g zp)@`}XlOoe&R+u6w*AV6Q*ofQuD!CFJzW#(Zhs99kl@O0VUhQAg(tHV$AA+rCuEzRoL+a*m2_@`STo#Qs z8^RI_dU%v@svuOURFggQaY*UGZ4@UDkNBj=DR@2W3=K(h^x>lTODyouwlD2d3!%`_ z(Vc@6UIzyUKiFJ`fr|hoKI&kL2%u+8A&=e5C>!vn8yY$D#1Zt6!GeYQ?cj-v(qec2 zuQy=df`*Q6tUJ3ZK!j?BA=#iBTMsxrXPg8!yGn><(j4Amb9G!dTtw?^6B+;*({X-# zo;z2uiIEsfQ`_QmnK2gs z>L4z85EVX8yt6t`#v@3HUkk0#ha*omIcE*>Pjl0CZyy*;$DDr%53hq~D4-bZJc<}S zsoA&p+8;a`Nf%gWl-2wm#&YDtI$s9mxU?jf;ZpYlQxa09&=_k3-+Cm6rwp4U3VT(e%Kph<85UA6za?E93 zau*equgdx^>5hjnaEP547xP;W!YzOpV=Fo^Nvzm?q7Cb zhDy(k%+8FplLMu6bf`@hObA~DbA8@A;MkHGpO*}aui^xg?9%dY634irKgO?I2h(CG z*HtrBE}*VAwlw6MsUoTNut)$i6Em#k&6ArFa2n<0njbj~Kz?2NaKhgHd0%L3`!XBuCx{aD9bxxpt)ap<(-g=>F!1 zo66lKGQXfT;Ck72Gb8S;%t(vKr1jjfw93=y8#e#u0%U4mfiHsCd1*TESTz$GT?O_R zq=x&BxynIV2hNCV0Ka>AiE(WfK36;6KnJlyDX%$mxCgi>YdqDg>ut-FTS>fWX=!=Y z7L08Vv2E6yaRROxB%JbFvOJDUzXJdACtF8(F6R~Hy?chgqSy$#c*!2>>FKdpwm$jJ z5SPpv39ZL3k-`Xv_oxbt=AfR6;q>R0=6O&dY=!KMmejQhMLGHFb>lBtwZw;4U9aajvgw zRy_-Dw|4y3>ep5pYKXQxag%LSCZy+dMFR#0&tFT3^B&-)iAIud%`fBJ;Z zY+^&nOa9$^1Fbb7r|Sd3WLpr===me4{w08 ziO<83l=J+Jp>Na_6f5BUiHibDUV`pl{XVhf_h8WshEX8YkbZZ8P189+1CAeJ2Q=ec z4oCLvoft3JowRzqR834AeKYrA)Buw^n_k?FHwoWs4HpZ8ERb1t^g@(5=*)o$Vi}h2hPlW&FpUdePTl!{CsUZ@mUgN-aX(WRuSG%Ga zX9;oT*2x;U?0QD^>gW~WJP{EQmtFY{C@b_WjY1Z?;uBR@`9Id!T!8*6(5V4yYUfbE z<)=f{?4GG+R>Jz)T;5JYtgiCHjg!5LHdl7!;iTd56F^el zZA!g*N^$jSW<*=rT+=%o3jViUnNWyHa${lu_2z;(r8$f~XT;}RLH2b!aQc0syidZ=jQx`B5yh&<7o1w0} z*2(nn`tednY6FABrJ;fk9WfM>nWVY7rEcpip@)YCfh`gOyw6`BVv`ZyoBfiO%EWIu zj)u}$tGW!MnTANpLB%XJwr8fM$z^uRPzt=)8g^^>X8EUm^X8rW251SacFC7kmyO`N z>IWN)$Ce1ZJRt`?m>&`}1=tZ5sofj#Lo)Z1 z^!55b1+$#?L!4IQl;Ka_0`Ow=b5rEwW>tRcqDtR?!EttPgeA}^zq?{dZ3)Ke;80!C z0Lk{y$y~lTQPuFXR0*ufPi^LY>kXASallh{^@bk?*!V{^o+Ddwa7YN$T9U6AnE@j3 zkAPV)IYpF^?yZ}?#oxb!b&0U!=62KD03xPPu#~aTuDJlNTCl(~G1YwuJQ?mdIy!=H zCk3Ika#`w9;Oz~4XJT^ln{+%y@O||;e!HbnW^p%IK685c!wqN`=P-1E9OWmDiJJr_ zO`M#ZwHsBgU$Va5*m(*jTQ*iJXmC|~AT!;5eSkVGjhWEJ_bPSZ?P&H}#WYWMTf$mf zTkn6j8o%B<-xLFdLXuCGxfcw#np{&;>sfP;OJM8!$ZbpLHjwKD4pge@UmuKYR1n<( zqCX%}V7Z^ZvJ%09gM))CP9-zKqZrN^q z6lqYNq10MTljrJm7aGWp(&n|Bni3mZszDI8;$lGNk|k(d23aiOCJ~1dSH8ED`vmR* zESHBbo(xDeoTFN3q-CCRVuA)YQ+-%^BBgG&#i1g*$hS_9%-jCvjnkegHY2E1p}= zn$WDR$EwNRl7InJzZvaDIJG9o&g&WtQTL&QsO$Mb(Es!L?B;~~(S5pBs1-_8T=EWg zuA5YVZ6uCtG)FYWQaG6@5CDDsfbxIPk^l}Myx*+H1EF<^aY%K}n`4;^j`k!Xm|ef2BV63p&d!J6DAUpLGvDrjJ^OGRGfvR{bqlyqlsH+x zy@-j(-na*Eyco`8ay&eeNpYV@T;^dkGD`8-%3d-p%vFt5-rCvTo+>hf9#>C2#Y3r2 zB<;qcmQOtp3TBpPZ!Go8AK?g#)76TeOH8%E7|UU!{`!qYOq3obGq_OrhKAx+Mzbz# z2!cLvWMt$eX2cC}o%5@s$I?0IC@WIxk^qgZ!C`MIIq-Tc%!W}Yh!YdPPMkO#*6XgO zC4~vYoiY7sQ-IhtX4Z3_2w%RXVA2_{v-I5)1}DNSX2FQD6g(DlSA3Yta~Zgvfq21Y z;pFbx{QceUOytq8LCX?I%m%mSpP?&;x21{5(Dc(I^=1j7wcp!KIZ{o27-F-s`@&~M3^3Do+j;3+ zkU8)sF_B*B&<*s!#JbYBl7`Z#?*9HJ>tAUz-(M()fBFhIlO z6Tu7+V+yk;>B$Yvgokne- zFk0;$*(O1gYPwVi_~w99xQ+q#^J=fgw!+D3Ln;TX1{$W8Ljj*fj3s6q_mHXZ!CCTTs z1%MCXsO~bFUnqY!h1uQH;|0S3)D%!f1#C|Q;1R7IDvj-{?XS6VCI4(C#sC?Ls0cL$ zaAlHHcy}qV&2?xJwHoCs??;d-`t;jQ9t031Q=@KX14QJ4wLawHjvY?o02e zP2)k>4ENe%^;+M+fNx1i$(R>O;DJnT{nbkUw+wP|Lf7uyEC1uZXO?Q^b6mADkco7|`A01@|NG!Qg6G*mcQPmg5ZWzEU1 zo!!beQa?LlyRDW}&psKqbfS#;@nb9`GhcC7U$go1QLiBFC8>SR`&ZCkv+Gp)%c|#* z#;RX)w>b0mK>~!(AjJhb!d-iZ0>@d53^#xk1l^nrU^e|60C*VY(2KC+##K1hQE_mj zKF-OuGVw(i)hA^;HkABVQB!MU#AIE1wUhAp)8QkUg0l;z5%-qR<_>%yNjs@OjBTp7 z@|v4ko>)at&eq(Pk;QOtlGYc&pfp!WIh z&tF8=x;4!J(_fhDN{`tdRgpWh3{-J}XB0Ec{p@MXI|igHgoHl;Rc_A}dB7$Mb1J`> zvb(&zGM;XQT8r!&-wZFsmh(yi6ws@rjNl6$-vDcu0vrsueJPSRT3&51KNE^EK6DcSwxP;e7Z!}K#eTohzxY{HJ$qY{{&wfZZPN`2cmH~5 zhqh)8?VufER1BS|>J{&reP@`VT~;{el7TV_HbK!Y zpIc@VABIq*eye^gHpmiM;k3bk%tkPFIn;Dyio&i@P_XdAZFPRG^;9!*_zU*Cn$)R( zW5VY-kCFj;jg5*jKARo^Wu&2uHEf8fj-?}D6ALr!FL$Q7NeQXEp%>CWZN}kUf;}K* z%+6{hIKP{d7${Tk8{Y-umZJ_UOrJj0{Nbhms)9Fm%75#FnsRuQX{dpi$7j}8TQ3=;q7%6(1Gk5X%PYg_8Od}jX4fNLWE2}Oz-RW>tUr_f zxW?fkN$LvudoBzp3kGtuqE}oHCfK!KUuVaLi=cZFd9}Zy>YS*w?eIA!Jlu;7q!b;k zib(yT&A}0HLcAHt{;JO(pXATBBIAQ8rZr=}GbdY5c@}oA_@t`4|^a=I#n> z+S0Iu`$c+ie?(|8Brbh&OHg`P1!80*(_pBtP^@Bqz5SWv>7Yo9E!<)p@uCpm%x1rr zVtPffQoa27ln*|M#_TL2x=40hAIZ$cqMxG#^{8aW=Zyep4U!aUs=I&v5{CxSO)cjE zcthb*-P@JND1mhyCjRLEFoW6(fDdkemVutu_1R0$<5YEq+~_L6@U>xV9*xi+tEz}2 zdpN!l{?l0>c;T%U8sE2c3O5_OYEBp&f+0hw>Q22QfJ=1Tr=vE z0z=of@#(B@IcyVE?%0V>G@AJk;>%_Fz%PHfIw@3HmRgh`=6V?>Nue@dTDqLbiFYSgFWTi~>g;rBBH8rXVBkL=7Wl6ZlLPI@D!)Z-C2&io$6WlI z3{kJ|)71jNv~{$1TP~Jcv#I3z-%sA|&V2}fXuU%R4ydw~Ra+|w>gi@GBqzioug*?* z7CPe4fexUmj<7g@oh9~{TF`pu`i&cyuyG)dPsJ2F(p+A?C5l{wzh?)2k$Chx1mWBK z{gAi#Oo@NL;Q#-BlXwJN0oZW7Hzp+i8L4kPIYy3Z&h<;;3KsGw5`u)T7O-f*C!_R( z=N8z@cQLL~_`iscpW1TH%#CkT{MQS_co5c8dLzhJxU4s{ogc?xc-^OS`21f8RGt4x zpt1#Lh^r-*mPjHU!e3$6sX*${nZ^PmtjMqXw=^_M@V=DuzfVmJ`0O=Q zTO?1S}G( zhi>;7&9XF#)v*6v}x z-k{Mlx};@J+uT--=f1ABMuuGGA5wqMUIZxBJ)apHC-&flpiq%4s_zA=kDO>>VqTxB zS)^2v_U#+LZ)usq^vNXvDpMVGUHba_0cc<@P`hGu)%4`FCk>pM+m((ZYW6R*RfkmX z3-A6teM$d1eKP<+!gG%ffKsAf1|gES2phcg-1I-_>#Nf-Sq2@*riI->quTx!j4tt- z$^U>^l7KnEi0g^jK}tHrEE=q(_xw#wmphd=p)pI?9v69SHX_}B zkkj^e15+XX%lS%?gD|LuvJC7bQ4fihQ0kr%Ehho!59i8W&0_&V27(W^@XpySM2?cF z8Uo;)!CN06gW>n7oLpR9@WoND6W${mL#-2h`ejXWtS`CiFpn zz`b*`$Q?CRnm~JWI#N*^gF9({>=qp8?RV^aLPX#-UR}Ke+Ds_KpA95uk4ncJ!~xen zCO#e?OA-X;R4_hdEW*uPL2f8%$;5x2-$M^LiD)Pg&@t>dzkEsf8e#Pm6cvfX&84sP z6&Lp0sa}QuCtB9W#v_LNXPrE-w!bSk0fU(|`9mBSRS_;%9q&WMndfb#?p<9iV$v1& zX4*=8`mUXC-`<7!5F-=!T$6E+xg|3Eei~cvvhdKFjI_G)#_?mvM4yI!00v#a{!B!iL zEVZ=$#0k(xPJDN=?%0YAGWi)Ro1&hn{fK4L6ox5JlxGvg8hiE<5XM4*<3hk! zg?Rnn@8}Uo4y3~jF^7N{F!PX^G=iIfPyrJl~P1)oK z`s)(;GYXQeEnDue^XivOaPhqx8zmYgq!>9k@PfG@;H$26$iLlGJBI>T{;6%}pWdNX z^9Jhv$Z0{SB>#YtD8M<>QBoO@JC@lpxi zlUJ516C;c5uV9D%H{B~{@n)8Y3h4pPoM>8Km8?3Iu-iqiJ689vzn`c|&qr2-%r7hC zO7TUeXj2tNH*hy55%R0e%a<%YhyN>ODeUdz{g3{j=pxh!x~bqp>1+@@Jzn8-x!jcu zTw^kGJDsL~%(ifo%^gPpxtIP=9XjM0WRl7GV2&u{` zyuG*3WY4V9Q_7qy!Y52o5#~_OXVzHngarj*^YZc{)Iau+uEkkRX8|Oe)b;okbg48b zoAWbwK>lf9=ilAi^WtbGYcwQ)aUxS^+=mZu;B4Ek^p@FM%lTRfznTI99YP;FxNrdP z62+ktsA;#*%9`A zuyq6-k_K%r5m3a|JeCyuWtsIUCJ_v4U^x?t-XE+J|5Gy9g;1Oz^bkYp#*My`q6WfE z$)(;BN@ScF2c%N(vAu%S0uwt!0Dw~6OnaeD&Oe{J05NS>**=~7JLWt! z>b;1^s$F~;!4fqe#;hm%Z&tZO#A$x5IZafq1}<>l{m-?!_hpTTA0|Xf)*wS17|rQh z>nW_9-X}SbyPP3#21>YkmmPZIM)x z-%Ty|J$bj9M4#VHWQ+;SgQcOf8-R_IWt#Q0}LaGiBz+z6FM0p_Z4I zBukO~mf=8=*1?0FrsigDgy{kP{MU>QPoay9T_pnUMoi3)-rnBQNpWv+jUwhw)*Cnc zxSEF`hhYeq;H9(3A*~ID9a7&qIu=8|C>RtlL>~jL9>UbvBHO1&YW(fL(8hG%?;B)4 zvs9rOxxv8^Ru)Fx?s&Xm2y9^B#nXM7zbigdnYkj~R%s1%Fvuo?5^sKCp^!h9Z5XDL zrL#=yu${gH%kG#>LFBQc5Z^v@8)zSqn_f9=)_wMT-T^QNcGZn$a>4b@E`%!f%kxtkpoHW` z!FTT*dBxqcec%4!{pXG`3>=dfvWEc@{V~I-cC99V`Z)@iL56}5^S#=4cEiM4>nos{ z+1l0KIU3)zS%jJHYR)(v6c`Pcav8N{K9!k;k&Ixer)PM3Wb>*exV0gKn1JH%){}(~ zaVWSUW;xvBZ0+tqjlv|upfbVyi>Z0g5M*!WRSh3IZI%@SoW!kVPU$$8*T9k$%~~%+ z|B1`}RpJFD=pqlq@?E3Z*Fa=}6?YCRcDCN8i1t*XKUfYG+9pdCx!5fh^3@zmQ)zuS z$&uhxC2l!6(Xh9-FK8o8V;yZd@0-jvs@U(S>#SB8_2Zf^QPeEya^v7IF}GygD%uPa zW!jD~re(=GJ~Qf~QLD+NhV%C3=O@8vVUJzu8Rtg`!-Q3<@GaZ#*c;($e;?mD*x80Y z#}uV>eu{`_d|JwD1Y4?MFxNK#l^5>roujkD4Tq2#ho6q-|D?P_^0W(3J`+>(cEJ19 zpHBeS$pkd01_(3Iu>|P??nm9i=Y$gwAQt|JhGq@MG(m2(KNdP;e?G*e?1Y_rD)eA= z+>cGKPz7+IrWjcKjezMKbvW;rRDckUt~nE6`2a2Oapo^=fcqWR`!pp>GE3o=|5dmF zgcIZbKoYEoXbAFFT3o0V>nX?Jv2`-va`%<>!aVfyK0(E`Lv3=Kf&V;XIdkSU56ZNg1+J7bL2s$2g#-Z)NOd`7=nF!khzk}Rp?CP}wjSjGm>H-SJ&v{FYNw4FA zq7q{V^L~>Yt_!~Tg4L;daQL(?^9h7&tvHs}h$w@6nBnp8fn zr}Y2RO@%j;H(c{PC$yfFydD6kf5JVSjoB7i%S%T&t35?z4@1Z=s1HUxpPar?re$jK z?AdF8#DGtPdj0l~Gr3w$Ah5IPVZgS(zYje!K9^IIH=NAo&xzwT1M`Hc#E%+Rvl!!GR_!Z>@fd`q?ct@C;T^-mtgO|SzgsDy@R9w zCVEi|Q}Elry-#-^>^&*?%o_)qyA-K8Z8S3InDdx$*xC z-BEH?jUZ)9#@>1%E@JR%~P zg7kewW90Qv))!Z=0Rm{o-2bG)(K2Rnv$y0nEUh6;veC6;mA-wQ(RBy3UzAd1Y+jmO zFFJvtes}MHcUjq8pwh!&4vf5J(Kdhlhi>WY?rqh~i;x=SoUZ&GmynRKv~rpw-tJtt z#E{7_DY?L*#gTn|^6f&P8UU&_L(BwQ;*_l~NE1*d%FdkLwIEeLg_dE-@R%H6< zWb4cVhQr<6PZk{~$?v*d1SCH(EjP3+@-`!I`gC^|5oZ@L0cwHpBX9+E0u66m`(%+i z2ha=s!V3tlW~zueYX~%lIJLAYCYRD3cYC1^mHZ-e+}{UMXRVjG-;@4y7NG6_)-1tt z+8FZ{e}e(@eDTMRan%k_LSbI6Ei8pg>&4tD|C@7;er2Rz()l@gv%+pI{+&Chcb6CD zbz})7U8?>I$txvvd3n{~7kIGn8ld^&Qu~Nf0~=N@{L2?Pd9%HNb-w}F zrkK+vuxoC^ynV`Z#TsI&ub^Y#%#r$v=6llOQVaNp#@(x{twlj#t5L?pwqt$m7qp1>11eejmC8 zQwn1oy*eW2d`?Ghr19N^EtE>s_toCYG}s*jXYj|Qi1mod(D3l=HeBlShGaiHuDWq* zsgslID@RBD=AUbv305dp{_HLj-77i2QgyuRwLzw}-c}KnMC@M0)tnE0s~w;Du;G#6 z-a*D{v9V8)E*HixTdYDEY+V^8bP%oy~0#J;UNo%t;ObGIAn3zC)!R!Vht1y=p6*O0TK6*{r40hEknj zSL|;{!t`N!t{Vj-&G$#1oZQ^r1qEC%ev`ItMqs&c;2mO!H+avINY1qO2GS!Y98VBPXdH@-YFVQ)$E33FB z8ql92DlbM$V@sUHG z^-XP$mc`j^4dUs#^jQ*HeGm;(2Nk#{BkM!$JPc$mn9tK}%oe<8c-Zlg4-~vd3;$i` zmzf)?^y2w*eg99CVB+TonJz}ZYrT}vDfG;TGf56MF>t65p*M03L2Q za(>Jx1dvw1FfTN48if|%8b%%fF+H&30RtH8z}p*KK>TvgLv$z0+$n+LH8j0?dn-NI z4r~z?MQF^`@|qWNw90k?53~J+CNC%V1sF3+VYG^aouTcFn@yTF`g(&R)<|geRSI*Cr1JGjPm~3zCR2U(ZgEAot?=Y*LRy>*RV00 zONlu8lW;`Y9?jMiQ?v;7D&8>R{N3mLe4w(dHpw=L0T8W|6=1K0Vellta5A= z_!i;ZbJ%#B#?C%e?12t{?D)(73ELxU1eGF3{QO|5yI(>IhT7|suIrUdHUyUPQ6}Rv$)=Pqqbx0s-V+mee9%rcbPaQFw5TR zfqjFt4JVj!-Li9k4|d^((Rq0iPeUl)clA?Tqh#dclh4e~HYahg4Dr^rhBgJ+sLTiQ zJ{&(4n)RfBF*ssT&n^%0i*^_~e^Sfgbln(xFj=`bC%4EdrvbL*A|Bql<0+HfJQvYU zb`&mpSo9=mEV9eJe0jFhpf@=RT?Ftf(Knfb%J_o80B5e)AifPB*B zfkEOSb|9lHk8if}S6oMnQFekNx8=RnJNd$^`pf z$nn7jJ%Dj++Sq!2PvZ0QpP+93CU^-Xdq_bgDRU`%xpS3D=yK$3^(dGBBjc;kP*{l< zS^*{@Rw^?yp^PTopB+CTp8`NH?Xq9J($g>p`9G*nv(kN2XLnTU^ZLK#gh++akZA1h z&>GWu7FXnp%EZPN>UjXqz>pc^o#^wz|JUp<;{~?P)%EVWH_xFAd?7jR# z-9suA4HerSv-K~DZa}rMg+;KA>;6p@JY>)o;VBuy_ zEwm(NM4As0e8KxEsaum9Ho)%w?nqbdi7(i6f}NFQ#BX0Hdo(0q?k5AR47;cpP*k(C zjk`9YNmj#?!fPyl++k+jy)}@l%NTjadHtfp`bzH?*(*&FQbv6rxj=Nw2-?;eKQDTE z5gI7nGjmM>{y(CB9W>aA&FRR-Csj|tuxF_17a2r=vgFh3@2zbC(~q^g9)VF*B5<@Mxk)3Bv*E^oXdjZJ@Dgr!>EGx}OG~vIHBvnY z3J#`v4Sb(?!`V6%6Uy`$wQ%VR#je@5& zolAS~$h{-^4zMHdYO?$IB?-VKT@gXI%*(*P<|Qegx&D&Iwlx)Jq>UTjH9QQitvP4bUtj45 zm}7SPF_q|r4Wec{K?CNmDYa8IAy>UOFfO3(*>_CZ-n@MqTOmP6vS{JwZ_)h?L6*SP zAoM@c%=%0>Wfbo#=2JEW22zl?<`KxQ>12!X25Ka0BrDc!7pe0)D)JJzKH^O>3?a^t z(Y$xL;@|+&prO!5N1v?m_^zMb803amS9Pv+R`BeYKuC}@{$-WWpMKp>E?-3BE&8tR zqNCb+ue0OibAY*r2UMHrh=-qoOX%jyS)-~XMKdctZt#gXdxM$(Y|GF>WARoshjl%%4X5yaS-ui*{(djZrwtK~ve!$y7Y|Y{-?CZQ3{g~p>RESAS%V(nDauxJZA7Nnl zhXpmPx!7^pbkm_~{lhzfh)*j}Y~e!@71a%Ig}b?SsHK*piEf=2XLFRxBbOOV$Inda zU}0%H*Jv9cdp9z5sp^@cv8O8#_;ddp%|NquxZjX(p}8jNjB1Z|`I1^C3<3yxX?*?d zhzxQ;kI!uh*eKHT;)@Wb+HhE83WfEXLZ}97Tt27>Lxr>Ud)wEqLhxRRlLVi#vV`Qr z`V7}QrR8NAd%bODX=&uV&p4r?zPPBEj6&`2|D1MR=JpVDzydEl|IpCpn4QJGSo;fw z-+gM%PKef@eisW;V=HisyK(R6TMG;Ykp?~Eu0ihMp%|pAyE*#13nwuobG9^HvMngc zPuHaeZcEE=f=Q$Ou`;(?+(yA%sMnHvE6zJdIG@WMh@x+~Qf1^CNec@LBRn*KWhFn6 zvKhc$05h5n`xqt>T=ds>z`<&J64M-!DMYEM%^YrmPZ%8oLGF=m-N1T{3^nbo+2vnr zhdNY(_D}w~)}Mu)*kR}uw0Sw6%7?V9yw9Wl zOt;@HSl4-YhTCDT#^E4A-_~z`smK zjHOuia^7v##KeSwg`1FBHOp+xb{F1eX)x=~KJ7jKS9?VX9oGp1@Cj&eA%-;O`=tz7 zLqi7m#*L=Y@avOr7MdA9q9hpz9$uyN^?HM0v}AL}br$O{!QdupPd*}0?A8AHF5GI~ zbRsm#4+V_omU>t=H$n9*^L2cp;`i@5cjwJvM!T}4S!sDH@wAi_I#}rz7D$y^p30K4 zJ%ntk6q?b`;&k|5+zz)d(cI1kkF5qwJX^3RM9ay;(rk&jzaJ@>NS`-4ek*)t=}gP-qXDYQyd`a~lK$iZd~xn*^A|5* zd#-F<;8fbx4IBvnUNa8XsRjlHMg`dRHy|iP!>BE|NzIu~fhDw$yJ5 z2#^D4TrWpPwpDGt`}596ej|*>hkuCeHUZL)B;NnIPVk%ezS%}3)pjT&pTkwnTZ{GJ> z`CvoopHmSTK-R4BLtp0?1tq_=+HygkUXk@DexHgK?oxIQx_HyHlzXM;C?vwLalERu zqCQZpeG;|J3!bl;@S)3YSwu43q*A)8A_Ly&pR2@vu8wnuQR~4E(WI} z>Cy2*7aoXdeFM6#FIMBPK&hp0cAF%;vLyyUfT8kvvfy(ARz&{8+2t1JmaSeaGoSM? zIMTk%n$M7x12|hVA5`@o(8e64q@~msSZb{e*Wk&=@)AT>aA*d0baZK)?sPQ`3Bq8B zDS%TpeJjf;$ot+Ak`?w#8!&(5q3XHQSYK}2o@z$hLJrmIC;F`d_ z+M^soe*FG7W9Ky^y>eJ|?kaRm(U_Y{4aVl7m1I9LFfSoG4#-<(O^Zj~AUIO!-=7OujSuhwPT=~z)qH@u zukws|p(`%v1sLhe#c(%`i6cK=@czx>KgZdYl$@0B7K4ds7{IRoGU3IKLdGo3p|qIP z)NwN#G=GmFpzfbzAkhE^Z6FR9n3!N#T2{Y{LOz?7<8dX}Iv_uY9OjjTSQw)G>+i}$ z|NY-?=>GfXxSIRk5^?;;4;q=(|ML<5yb?kru>bXja4utQW_*OD0d(kIHkC95$*bA zLKLcBE(@yp`&K%ksfLw0q%@wGaPiPlY)K~`xNv|4-q*UnbM*e=dB!da(Z8_UTTC2b zzdBe>o{o>C0>lN3{UyM*Idd@GtCoy|)BX=u%4c!?QtiK8e2x#Ez#cz z+h~E|D5}=3!PjjvtGI>x`{q6S#@G_kcDc&u3{jFKQm?*FTZzR|T1|~g99T^Ed^tnEx#a#N@i;OvMiSC> z6Ny?vNuHm=ncF^F7RQEDjPyUD_>lym~vIxoca1{A^<3vUmOQL;>d-7xuRZ@Iw_ z59{x7RR-BcO16V!|G%gfZ*8%fmq@xw?_ZB6{MiJ4zAGil(gn z1aLHV6|6V~5vja?ujPl31dt#Y$r*u#3u#B3AJ{EEpGYdJFE{P{EC!T{ShrD#YOi*4 z$+)-bp^FW7Yw`2p!q%g7(CNX?Y83vtak=QNqx1hG|yOE4Xqkf0(A_ZhGylN9uRJh}zN z!P%cvCzv5q!Iq9eAcjwicW2N?Am6%1>6A*q8NXh{4T%6#J$~(D4{eehxgahr{4cp^ zO_`jcbI)Ua%B$d}pkg*ssf7Hqtvsa#Z1#3=$%7N2VGz~2*=Q)2L z1UW`n^ln^M|?N|7F#9;o98kr*LP zAb#DMB%fUhXS{s*axGTaJVGa|uC7*c=i}#p2>7pU)1Z0@o~E>?_Br*13kr~^nf05i z^)7NAkk2z&zn5|2C(0+tSh11dX0=9U=1s$lPD{c+<=@(Sfso;b>G5OBAh@7c?(Dk= ztX66gz+T`qjl$L*AA=q2seuj{%3T!kyntHjI~3$KV-=o4y`K7_k9rM-;on0{SFaH% zE-nG|7DFzElfZTV6c3`=@COMRTV}zN5{MO&HD}-#X2R0%vA5DsKt+{u;>U_MTIGlg zQ>6y-Lg+)z-)*1*-B~y$Yn5`(aTdV3-k@ z6liSl?Z@xmHlO$JUV;)Q*v7H>PV;2zTFYRe4k>e#Vz{D!$J))}5(iGV#sfHG;lp_H z%}UCXUYTp(QNOq6Wlv7$u2j=Tj@2Wc2wKV zHVsnyPbc^kfnW<(2VM~%F0HrzsxW<$DvQX>%x2Ap*|90wm(p*7eKHwDLp1P->VbVY zj%jDYhhbl4qm1Rv+LL`Py5oXLp0vl3Rj>ApnRSVqfVJ|`?4O%AC-+zfUL~r%yQg|I zb-FyM0Hr8>yz%G=x+1KE^NbyDdLtg#^ywIB)Pz65qF9gFEWt%3+jt+Dif3u zbPlAV;4b+8rALd&a<(jF&GGH!>veg3wzLf{ot7h1fSmKHV`8bsWL zuyb+98xiq5V|8%754S;c=(RUs)or-;XN!CEXHI@W1X&B!DJHIjwDe7&s4#tZmv1bj z3%nO~X`K0BZ2~=SyaFNQ0;gm8I8hwY1ql>e-YyEsGpJyF&YB?P;>|YtEeW(C>3TIH zVBJjr9WQo-J!n>tv*wf(B{Z0;Iz%f8j|W#8#oro0`BNCJX#LNA5^&gwa$S|sm3WJI zLFgRsW36gxns%83PaCl zfN0pk@(bTvk+piP_+=mT_4gq1v}f!en5LE|OBbAQ&IRf2F3%@~(IkdiQfJgz!g9+D z#BWILG4RSVuU;pUWSwu~GUbG!JEo;&lXCM5hNw&>DOT)q`A+*79~jS~zy7mNwHnK3 zT>baq;Efu0-9^0<{;?J(_?^qL*}iNuF+hWK&`ICpcs=LSo$$lEM9{rUI%|AftG?}z zXO#ULY9-s{ddYyo*b+1Ns*XNp2TeQR|I<%&9*<9;TjLRuRb4$Z8D%wIk;S`7bXzE1 zJG#Jd|F~oodONlat5%iw$IUV#4Bo3JmzD-=Jgd?D$3))xf{^P=OjT9=E4HV_ufbvo z`qA6$M3*ljvsGw6YCCh;ndM`yqDno_MW9`|ELMqvK9Dolf>rk`IM;(U?z`uLP(T8f zxHR(f(Xt1bM3`4Cf$aiB zoWSZ>>9JS%#PUd|DiBC+iH>n2s6wJyQOGDEX&36waINgzngJSXRMcK1R-?%$0+%hLFhK7dEXtGK8x*S&VcXdmCtRiww znB!z+NS)u3o+NMInmTiLJ0TA_%oWWnp7`~3*p3o*-7opNa7$jL;3fxjm@t}J#QE~+ z@ov*>%~?H&O_AiFzJd~;79}V9)d}=Ta?dyLgk0Fw6J!X-$8cHbEnQf|1VjSnnR2Ps zS#7`^KE|VY-4#Ied^D5q-Z%5GW#u$OsOauFu3XQRlF%r&q4%gc6WkcD2x7*eNUF|> zYn*hbF;`kAJ_4nT<3pqY@{rG@y z@`zTMh``(18!^2H-hEadGl4;9yG6$7Cx3iGDy1*{Bq5X}A@2T{zbeEL-pGthO->FH z#M_wd8|D#kIU)uJRmtxg#RmV>-8s z6W?Hb5YHOu%aK)oY5!byf092H2Ao-Y!WB*qNw9L=(h<5Jj7y?R?6NjA~sws_j zFtyHf_pbc$u-)l-QeLA^`#WE$w2gstogRQukPlZWrJDmO6)V^CR$@ZV{K;+?h>3)P zR}|!g_^#}^Z@(!-asMj&Vk5A#JSLW1Q=ylI+xo5O)(9=0JY-ukaU4;w8tHY|%L}ZK zo!4f$r`b0YeT}C575crO6L=imYymHA^w7}kx|lk2vb2Xy$-~~9npgC%yM&iHWV6> zS3@+zwq~B$^z+fX#rDOC#)64DM`5%^Su$WBS*rrdGUog)zdvH`u4a^-&VKVI=|JXX zuPzC_emjmO5qh>WpYTH8KnA(#;chL#|H?FcetqT#ppL&{X(*2@j?Y5~LCRt>)E*Bt7%xWW`g#x|eszG^xidSpmhUoe!vn+V5K&v1~U zrj^g2{Z_=it4W;^b`>_H8-`O+3T%R?&&9Z&wT4* zW4G8?hVV{fYU)u+T%7UR%Fuxu@@SX1j+D79&v85dx>8wL)g7zOHtjl5*HUgfJRe%| zqccZUF$DAK;y|8ei)piLQE`?G3=LmrcYtN(iAxze94<-;??v$xgQ@6nP{e zsW8rOGYjj?7s9!e2oaltib}Y`4j>Yu1kL^_PjEP3GqC|6$!Iw^%=GY~u-UZMFvWPNjkXR+)r*VZ^Lj;(=#} zQhJUO{%PrZBjk<*>~x%hD{ZA;8{WBDYtqW^b_$)z!KF$o8-VP$`{SE;o9HdLY{rYz z35^9Xh}m*FlCE&%jC;+&!P>?yY(&RxM%3V&V7=M+V;k*LsZZd)itV!T79Rb@hz?D{ zd}c!I7FcU(&AIUKCV9^^EB-vXRg`BS%yn|Y#7XA?FQf~mhUJmo_2b9%fRG=lOoQhY zqIydHXSedU)!6##Y6#xcR_`T(wp8n}8{-mzb((yZbj|w@??0ZD%Pd0Sz88ciWorok zdh_t%&eGuRc2f727j!!2#~WBXEB!L)^(+(X8Bh6?rk7j2{sipN#ZUspFR!0{VEpyM z(%`s!gMh*hc&?T}9@W4g+x}C6DoB2=Zf?@o=cqE>zhC?ioyj{1YFFu@v!Rbm~=!*t~R-sp+69@}LC3_9F?JVKy zUF;FxfPnM|teW!D(tZ^y;0VxL+T&n7;CQ&FXfjac-)?Z=PZmaTG`c@?ZK*G>T4acc zimIrvC_LtR>&8HWyFxjeHc@{|P;~HP88Xgvc(U;EVfl{BoX zSpui{edNqNvJm>Gq98cwTg{gi06Y5k_I43x&oZPZ5kSHF+2F^@O3Q7jEZF;!pEro! zivZ+c3cynk&3Fgf$^Kpc?EV&J-rLw9K=Ua_lZ1#_B~-1<;Y`r`!PkZcJTd~r0^znx zvrGK} zWf=g;U*WLFcDS>Q81Frwh_3~)sm8{Zke?;$_e*z|A*q4}5H%CiWhgCwW<84;Tq`BO z#KfHD1)-9!uoocN=K@!v`=WmuHlZRmp)!*kbJl}8x8eQ3g$Oj0U{9zbCT zBOuM>?)Q_>%&#RW5;YS=-M1e+!2LxW{M6WV@Dm;qSAg#dhjF)vmfJzM0e6X=+~7Fu za~lnVh4@E~FJ4^8R>`4vh=ahM8Z0rQqF}_mhaiIazPXb9ioT&C+YaqdPvAbGWneT~ zahb5vWdpxzPtIIn?EcFiw?I=srmn-h82%N7f|gWoz9JdO&rVkXdG-a?67Z$(!3Fi! zqg$_qtIsHvPww)PLir)g$bGES^!bYy?}=G8C2Jir*6SKJQkri;8|C_?kI}(z!5KB# zK8_cK0^SQrk%OCrrVgpxy_!i_G_#~?%tj7zVEX5-+w}YCHOZ_OMn+z3ss*2`3}r50 zU3}gNvom8U46<d=FMWtQmZz+YCcit z0WF1F_o(rqlA~6<`;x<~SA3Dz5yX9wSP6_gJ;O?gkm|4fDn;R|mZyx0=~qzVwA#QP zqSoVdK9v>=L(3aRwQ2W^X@vYJG02#)i0!NZsdH3_HE!eG9@ zd9c17vNpi!6-uvy<|XJ8c&3Gg^%fxlYMgXLhnR;@)uH0GUGajRwcg6Y-QV>#WH3Ca zAeA6X&KHm(hT8zvT1ex?f0^qc%r?>mvpw8>mIMKB#q_df=HC@u$%NEK5v5#4$6SRn zEp@Y@va3BA(qDjMeP;gr4cKK(pH#bl+WYKQiLSkJr4d|q3(YD$MI2#uA*TftzwTij zfm1Wsg9nROp<4f}{u?)yA3uKlcApb(YAue>Xl4=xYHzVTCuE2U2q>#d@Kear;!i=X z0zk@wQ9;zuQ;F)u^+4!lAV!#jMaBft4@^HGlgG=Tafk1wn(swLcZTjskL0rubOQn0 zj+ND*;NUBP>dYwAb1K1G(3TT$+P+>;uplzoghTQ>WP}=8T~|HJ&~v-RnX=!*MAL3> zY{CXK4e$%M!v^)smA=%RkdXa}(&gSSP(^KM7^9$+8Ur@CUvEXdtJ1N73L5HeiY3FFDDBt-MA_v zq2A_u?;AWOgfNvIsU1#-#LklkTN*4nRU*lPc+cO>JCO@Gp0``>_gJ56gE>a%(}NO$ z|01AZjBMGvflTb&j4-&UP@3Ia#8+-{?z>y>0W>`y1Et;>fAO<(1_=!K{H&0epZyM|=QGFcFhwmbE&UPH?^)5TAQ2~NcmnEwG~AI?d_R!Vz66l7ckTrXN+_jC5-lu- zAZ;m@@OAe+5XuF~ZMA$P?5^vabh*GchxK;j+v(3?4`xgrK3xA%`)2w;#_oK{C% zWU$&oXlbxN2y6xr49j(k`1f!j0jTtWcBX)QX|}gW+&K&^Fg>35%`$nDl=FvR%TYr` z;SIrQXMi=6P4Z{jSL;uG=9pE#ep+#7&>)JtR0D#`!`$4A(p4yz$Fe~RA+IFBoIopL z=(k$kdFVMdjl~tTmfXDmv(6uB=B3tMsuzJBGk8DQ%h$KzeW5-gx^}bJa2k|TN8SpVqcd{gSJ6a7|S-?lmq<$kngx%v287;+DHVj<97 zC8Q+Ag)MBbuQViENPn2)_~3Vt!n*U?H1vLLphHqqz)2A8++FNJ?Ovp z#?+>!-h}0-N|o+FL1X{;;J(xL5>qKMY8p?*^~`Te9HhzgzkhlTbGjcQ*mV&nHbkut z^5~`=96s|<&RwKk3)98;;5ql~+3RYDbrfp6&ebztR=ca_369xNg#>jF#tSN`k>R0V zNAYkoF1ehZNBzv&a+q$EG_R_v+P9m>Wzkvq07g__((Tb!6V?nR_Ri~%XTHh&EOub` z-hmrzOUa3CW7zSvuJ-Jmm4W_y*ZtRS7?_`t2@JM`k0E)zv^wFe>OTGGVR7_B=@WSV zPdipVBnF^Qb;)%};UcnFIW&iQhum@fb%oz)|2pisVLVupBlhU2)j5x7PSanS39z9Dz>UWAKWlZFN}Ngw)msTA#DsuT3{1xM;Rse{*Q1X`*xf?u z%-(P?n{$YZfYtu_6I9M&0f63Uc^hy{e+q872i9c0!nNx(Zf*kQM zNF4~FPX#8nL=hB1PFGMrC4UgH159^^MN`G(6wYAED!@k=thue4tt)bB1x)m$vpfVkq^=U>_U7w2jF~C9F+eH?&_09}@8wy|$ zQDQnlxwk$h4BOx^H)DK*Xwd7|8K^|d03qmv92cR<1Yf#^YrY)ZYmkTDf0i}GXr(2u zTa~jB$EH_1n{<#SAW#aEVuoa2n8V{WQ`Ot}>|l}i<-lhC4wQqzV(p=x`mgy;?xT^L z;O#;kwD{r)0}TEfFB;!tmttm>?r292eL`%&N0}X-#n2Hx2G}Hv*Ku)a36VmHykiyI zzH_^!Lb?Z_zZkcnw@}K+)hIlVz$e`XZL@A5^|+`V|8UyfSA@E9nK;#5nn$I7=tx#c zDRqD1;cnv(>Yz)tPJ4I}6r=T2yj8rGoi^?^0no7YSZV`$9+8t9alb|jyxZl35QgW_ z`3_@NeIrgAEXnBR7w{p>??h;Qt`2FG9$9BOS%aYj4!F+%hxANua{_%AV#w*7yVf~| zCfLFl!Xly~l2=Zzffo&gkV!4&6SrNS0$SQ0z4}(YSo`8{fRdxhxEk{6mCqIw@O6h6U38oIshO2?`#nfOqP;_Y8i`yqC#VVqJjd5%wEM1UOX~YUZqmh@g-(W1UYC2iwViliMlX> zda2sOA*?HqfmuB}J9k{AFIFd1bulbx<0jlqm`U;S^J^R*tCojDj>FV2Fkv7Ufh-)C zUf!ao$JDOoX)y-E?S_8ZBd8UE_yyBW#QhdD9SzN;3zzX%VKZ)k(bq>J_;V22BLV{* z8k|iAZ}(rV3@>^(3bDy$6)X=peg%;W{pP?3MpgUK%%wpwkbLkVVtx$BQGrg~dnlj^ z`H?XT4jn?75=NM)Fh5`({Agjs!JC4F&%`y^V2$8SWt^ZLn9SMX3mr)4>Qbrnt5_2- zZ_0jmU6pJiV(&5hp1`sViB2Sk9k!X78OLBsHvg+bHSAL#@2j#=SkGM!~V|w5MVt9^hz0y@`7@~TBL*l8vIn0* zJF#B(jKbdDE^Syj^+`@R7!2PtY>&Q-0<$RW=yIdKwuqUOkD5bOJ9-Jv&w)wZB3Zv!U+jrQSb1+-Ht_FX0zI=%_mZRJR&# z#v)Ob6`p#Y$PgFv2!giI_31)9$-a9y^zMr_Z@%+VgIKk{X z=q~wW+9OMsLQ@kqW8${4i03`u{6X#=6ST{^#=G#KmBp-#6(PhHd5ud|^*SCj>bxKo zc{cF|17FuRr$6^i`G739>%dKVWtr=cn!=I5Z9QGVP2Aes0t(zXd^I&wQ)>aTs}%BZ zE98TMESJWw=9`-c#E>5971@iI6j88Q?TIYVvpe;NsT1XrMevo;x-22VQ85r`Cr2w(wb!}0&abuyOxAzJhw;w=r zQYBygDx6kUwP00WA)WB1WSb*0M)TJ1CYcakPPXj!Ht>5o$-42K<2u-3hUMA?)8Y1-cCEULK7nC z4s5rh(ro>NzX?Nz@bP~ThMt5FG(8fb*4n9kn>XUF%(Hm@h0rI|cR{>twoTa!KY$~F zMqtyfJJprsl$>`_#afLF<~B0~)|w(ZN1NbJ(X3y=y{m99lb7K{T%lejPPEC94Apys8w_09hhC_h0fQHq7cTja)Fvm2PW zq<%>aJR8BPS&=gy#wx(YKqS4H^Rx;zr1}Q5Xqcrl85J1-0}%i^Pw93R5^g|=muSg{ z03wmJkU!}Xh;ztHtrcF$$02^mNJ#A9K=_}aU8F{8YU;DD$6RKI2EL8&1BQ{Y&|NIs z^)8C#{``v{1wKKl`dVIJ)VJQZEu7i6L(~1udRm*p78i^?4}7hw6gVG`Dc&(3+yIjX z;L)HU5dlEkEwG}4I8OdR!1vzbc}A|?%a<;_cC|SuKL@3PtXNy`K;P!J&ks>UAzQLA zGncl5^R>PG%DA(={^C=qkHMyt;A%l9I%_^*D3Vl`MiP#H~pJJ;+Yn+&*}!cKp| zmI$<$!&@BjK{z4I5aNdur=4#tJsHo`R1V&Yzk0=ujGxDgD=FaN9YWSgAjqJ6=y#xA z)=P1XYP5Mf>iz~K1#0!iDc{Uj-Jx%3zc%=WRkQpth>QbaxDPceB(LKz8obU{{8DOE z)YWV1ST|oYzU@*Cs?1C8jedz&H`AnoYZsx_G?! z^~*?ZbMm#b1M#>q1HVFisYp7O9UJYenfu>BwXvj=No}A+6y!dzU1Ag-%?Y-^%;EL@ z>5Fh8zMzlTf3J1AuR??HY=!)!9A;hv1-g$S>5j_k0U(2;{V!^M@=}u)cWXU3#PJ9S zXzW@Z03XFF>D+x$uJa`a(BDY?CCyaTpFtZcHVQCQ0B-0sm8#p8-E{7MQ+qes8vc<6 z)6E!LLG=y*SOQ=y&I9z2sg{*IY7gCLEJz3&zcpqSS0lk7^Ot{J0T_1T=Q97C6(Xos zWONsvp-FvPj$@0_&y(jcpzZqx)@4KcC^`Hs>k$bEcJY0{Cp`Vj_D8^sJ;DDcMR)+CK@Vh)_JLr-G%}T< z6!a&(k4YsYs((^t2L;*-DB#nd56?11av0o`?vVCPY5Q{-|0?nF@~H;(5#$39;XMcC zl1L6mY$Q`HmIY`I$^2qYPeJk%LFf#t+TU(v%9F0KB6OnU-(&*_htNR540f!Jave!Y zY|#1z?d5ZDyRL5k{dXz;lY9Idy+q0--){W>N=OPpQTW26^QgpVW6m2lZhX&^61j90 zC`l3SrT#om3%~jPNd0ZH5)uJVVIz9b8M8P|xb zDj$idiuH`K1#yRaWGo5(IC3}*Jy@NZp!gOkdL6EI`d@M6d_PZ|_g=77PcKVR440+U zC-CD%fS1E?`JQ`kx&gCKpl@6G2}HmjV{(`~qUIjMUUYA{vAMaYC{0QNcKsFM<7KGv z+4fA-%b^LwsOCE|pu{B=wmw$unJycxmH1!_c(JCS%zeEqX&3Oq;^8exgK6XtaawBX zkf_N<3u$*ntH5GlbqE$E()cJW5v(V-PWSo4z#Z&p?wd=0xg)jVwsQ$1%JvSV^ zBSy;26$fM|TC~@JdddP}A?t_?Xax6&`Y%qs^Ar&Y4GpDL{x3a1!o>L^m|a$6XvV$B zi!sz%$8#`IA)mPy=;f98OD3ipntG|>K=5X(HmfY&FXP$tP2-&wPd!k(O^^UBZj-K( zo4}L{-HUL}*A`oo3UAd;&}SOTU}p{Y@TLiJ+S_=$HX)*`!{SRFP~_%}eN-*HJ=YX` zSH)#NOB7b3kM=)X5ssxM%6LRX9+3D%wROhwyo11k(5JLuT)Kz5A zWlM^br(lQDZ<$WG)s9cBUfl`;!D@FLDB*`Gj=sMX+Dh7XUg&@4Rk-Tyo6vWAIJUU97tXQ>ak-Mk+0m1&V}7 z(agjI+pwzQyO#Oi?T*QoVwBm)DKm_Y`~(wl;QU&03#3^Ln(+4TA)o5;+jnv~;r^o! zO!~9E!IdKG9D8%oc4JY+uEoO*!ThDut1e?e$|lzHp_+s5rt|)JbeKWK(f(6uX#<-D z`=3VEKaRr3CQ)Fkuo6@LaM1JGLU$TY)!u?Ps1Zx_RsWjzg!>QHBi?OLB7J6J;$u;F z_gfc@*!AnzUlUQbJ=fDa4>i!VBXb!3frE6$r=XyFnXn&na9~}r9+;1x2dU#IyDDBD zK#O>R&U&)SYX|rzv`MmP_`|E({^Mf-(FRqhzN7A$j23+uR_VNqns?skzP+s`A22!D@OoYRjLqlT$n;SX2eWf^nUxE$bv z4y6dF41+@+YiWE`)Xnn=^(YiL%E0kE>dE}^hUv@y0_x4C?DU<&%%_<==p~l6Q5C#$e+hUEQj@mAfoo85D;B*g)Q)| z^Dh>Nazv9|!1c(|&L-qYy+2p$B2cV=(#uua%>qUTEvj=su*o&|tC%>t6)F*mJ+xwh z+5#>#=NMJ%YQ8r5{(Uif^R>zN+{W07*-^iDSNR~_2zAnZ=vw%{V5sl(qhxegQc{wU zngR#9|H{Cz3nVIF|#ycDwjk!Z?k(?tJq1*BesQo)< z%@;wxI)2nH{`7?pM4@P0NtbK8&ZSSG(;)lgJ(ZZ%j4qQy?I3ERHihvm+Ksd3hdCD!7Lg zrRu_-a`yV%y%7afmj4A_y&8~qtS0EVc>!`+L;ys--pw^vtMKvK;pX(E&{$Xg`V%s_ zbwONIyy?L06$dNxkWIo_2P`>V7U14@SB5>n!vJxxwYFgBu&93F7sm1@epjK+)1AKz ziJ~8ckd8S8_1CSJoj<|L(E|-&>ot+&Wa_4~9~)aseei7FM0%9JKiyHf&xw@UVZ*W< zTPMv{Ia$vlQO;3m@}F>zkgNfQ`9oOjmjIyEd!5g}&JV!NR?eZfiDCg-?>$5&56p*H z_WJQrmvC?zgx1HCpdg~qhD*i!9+!gmJHKy^Gz(D^o*cOpB(z4R^FpPuRr*vvI53{*M@&i)7OW48xY=6Z`sfzbBXY&h7#m4Cc-?D+ShRt$JIW3 zcs~tP=Kk|uBj{XW#FO>6x!hK88=+&4gqRa)>%ln+a34M^%)LgiX@xT8sOKQ#{i+LP zx&ZxaYYQOn25)L-d7xrx83$0@u5w+WSUzXsu_^~u4a!2SdI!}J=aelB6vzmo!wcRT+so_(q%X4QBI^50Nwx%ly<#2XrvQ=x&^R#uh} z%Q4jJqrG)~s3cr(#6kU&oi+czu(MeY6O?a?T!3ilXMy{fONca3?FgoBZ$1$KQ&^~> zt&1yTwPZ-~w6!nCAU{KzW$PQBoM3qCPZ1Vn|IW<2`oA~yIrfiMrVD08*u4pfs#A75XBa^dWxwx@`bUn>|Nm|gFiiIqU z2JQ~1op0S$>74PkR~qZyVaXNhJpoITixA!7qa(J}e$Cl{R&s_I9v(F{HG+FaJ)I5a zOm90Pp&&}@b!zpy=zYmX%Wy{h;cJn~hqvUa;*JGF?zz4K0T%>ofFxl~lMD2Gp*Q)& zMa!iQ-9}c8hbNoBdy!h9Dgp4vrd{-i<*#ky*n?FrTE(>+1ZcJXVI%LpGZjzend09GZsEVF4;e1rj4 zSrL&Dw;{;~D*Yu!Q;+ezMMA^Ep1@z12U3yNjU97`>LHK{MD;qrXYiDmuy(BhftFR5 zM*-@UzeYSqHHNqt&d9hzvz_5`A#fqYuFT43ATPV!klFRZR9`rb&py@AKjtIMF>PylEH zLAhaHMc83_1 z-_id9>{&OwSUjw{vPuEM+!rquHK*)T+g~co!sHeQNMco~7Klc@g%LP&%Me7^Ze{(Qlw1c_VMKf?4MFARUZIs#?& zBzc0C=mW^apk3Tl070ZN6m|XW?Za=* zkDj`0i!YsV3qc3>FX%?Vig0UH_demds56)bHwYe@M(qiz`bU4GioN zv+W1D)w^kD*Hs0YdP_c^Zu&dP&8VoB&lUiNxDGw&1-XfDHM3tB@A`Oc%A*r3@z^Iv z%bh|kfG&fuhJx8iD>IPeFaRyg5MT_Z?|=}yTpuacii(87~I@5CF#tcMFDv5T!l8^MWOvr6=b?2G(CjIoYv{+y? z%((mg<&w6x7|8xapwkF*>yG$#+~KWFU|KDwWwwi&`!D>kj!q;uzN>a&J9?*88DA9} z-}PXGHt3h$O>#nM@Us&Mbv4k0MHw2ssjHCrX(TN@@AvP-gi&INQ1noVx0YdhXm(6= zw50#iK*lvHK}NH!ZVz7sy)^uq4L4S|+&nGK*IhwPOny4;Q-bjc?^Elz`iI&44<3XM zml#P{Ow|09ymBEA;Yl}i-CN9>;WjTxUN`t={y%Z8yRL9w(Gz7d&*Mhnl0F78myE={ zM=vznL}Pz{ve;ye18!JE1jc=2WJozu;T_Py&|S-q^atAf?vIiw#5~Jv7bYKN?HW)> z5#a5tjlY8-ZRVi;c0go@6~bPD7!W|adF?Dz%%m{U*_(vs$1OX07H~1)hw$t(JxCKAVMystXDbM;g8U|r=VPz z@QSBd;XrL|tTtw;uP_b9I=YiRaOg1arTrBk5YL$)fB#2b;?Gvhb_O#syEV zJpUy9;XQpG!&&jH92vAu@S?jzfYaTZWz4A<`&%;#|wmP$JMd#)=sisK7Kmz1Vz5_=P*1N#ZFH@(aH|Z~HUAHW7XK&$R-%;h^xR6+eWj5qdd^(Uz$&{%N#MX((FEq){Sa-YKJ}e-Xj{;($RO`@Rm8Se4w1Oh=|~_GaArInK%dK zY-I631d#^ff#*w;mL5{Wz{b)&TLe(WCTmOfIoBMl9~DEdfAb&sG3od458U`+eyi|f znIUe_I`9by2#@05$JZZ%0!EeHR=R>+50K~3N}Xo*-NeWCnB_lq28W{B_PL7`IBdsV zVKw$E?d9?JwtDBnCSFpv*5##phJ=jHoqLLr8RlvOKd?h;YSzo5Pec{a%hB6_Tu>{x zt$?k#smWN4he#Ama`mP@6830*h3kCzwY z(e3EbEt*Pp_1j@LNdJi{OOF?FAe$jq)*Ef@rGe^ea7E%ZIMAX4C;1Y+^7B^cET`-s zD8aMo*1l!vJpT!OQ~>SL$Lo{=I2Wxg8Q+7XPD zrdQ6_Qa>fau2VQRtcft5?`-QVa0wb_JJ=`i=)bBAXe!0p*|Uu!$){YV;;$+iPMU7w zP{Ml*SRLuh(4C;(=~DL44xyzGvRATOde1wi3(;+yfU}BWu{wA@cNNrATJx@fx4S%a zjOO4_?;h-!sIP%3BD8y%MxIZAkAiPF>)fxk^a9oV?!zgvs%8P0P{AY3ZcNSF$SRvyAChx=d?(yOMu2=W5ydP_5YFFIz`PXX8bNgiOe$ z4^O`1?Ksy3j31r#UdzPx*L&e#;^>x6ru3L_V#l+;Ox^d$96N4}P_?%&TWu>HoGApi*U&ZhNjDic=j3UE>7A{30f?32S8w<>C0o=DC3^DN zvux}1W~wW8tXFBmGs?)qA{}VElA109HKWC$oCvq!QpI4~BMJwjLDPa9i-PfJjwy6h z2MNckh3lFl6$A{nQ(rII)vOf9^>qiAxUKS*8VxD1uGgRWoNyH7vnqe_rFn;Wt^eD1 zanE%Yv96O6(+F#8o1MX#K$5|i_o6r~e@bbTS}R}PzQPC-2?F#I*-Di~W4oDD<&weE zPn%7-e;H$a>j70mLU< zfO~boOFl&@$DTFf&@!!XvOMN22ZSW;Rz_RWY>1ycAF!=VoO}kif@cguIcll+C(7^M zf+%SEBHsOy>6|$jLG#-^EmHNqeED$dXuWT>B?A(*G@VYN_07SKkr7R}p}c4F5l&rQ z^1-PMo`IQmBM+8F3KD>O==)t1#i!z{Oyyc60uqjL&taDFMX4IC1bU=gv1cSYTe2_P z9v$zp#1z%BI9%?KK%2ELbhxOi>z3q>OP&ZT!)R~M=(NT$`i@nyORG+_|4MFncT(oBDEz9nmXfDbP7OJ2UU@Ta9TH=twxsr`u8Q zz6aIFxb#xH$HF_!>-EfBT;+p`XK(6@ZRR)Kr%p?`hpG&6;5p|sKh`XBcW0Q9ZEb67 zTV&t-@(yz`Bd*$KyAmWb73Xd%uav>%GM;{ad1*YwGw<_Iy+s1JNZ59|UVKNwZec;e zYb&mj)3^2#=0`&H0-K4ms8FcHSJ52kWP0}~foB&~mwhF}nA;i}gn23}Wk=}fX)`U> z$DJ1E9$`ak>v;^UIi?bGZGo|r>NZ#V2gL0yEnU4#iW~xZ--uqO5Q@p?FIodt-Uk#9 zPOm%(g`kTFjFHGi-7}z-`10k8M)C97aorL%MS7X;sQccx71R9!POX%f2XezBA|l%K zxpMllL8H>q>6g2xt&-bsg<2;&fuGr7Wfmjpv9aXvsCV1rI$U$;%hBE5*cq>_7Y|;m z*pl@;65!|Ou$VgUf0IYDLC0Mt$!@uIWMsrVy)^Xf`w+UEQ!#@rZncarCylP+xOX)BCktF&)EI2EM~3=w(}tl|ieS&?xm1 zbvGhrOya@ark4rKbaYR~s&sE#)*T$T0z>EWc52Q3Ahm5Cb%{_(FiC92Vaf`X)n zk`*87@bi&n=Q=G>d-~0C#E($5*_?z;OHM~8{`mO#MWI>=t5XcD4>QvVFc_B!wq1AK zBU+3mKbV`>CB(OWFBlYIiek;xSi{{`L!BpdZFYbBpDNdXk?ASFu-g%U*bcKCZ%f0Srmc=+aG`xBL4&WoP5W6s)kt{?KM)#V<2!!LM|# zSnjwy6BoZ+pva|NYC4Y#i!Nt8Vd4q}|0}t+`a?-Xv$DzOO_3Ul{ToTW$8Sw|FO_SS zm}L>O;+SEgP+UpVy(GXwg#{~E%2fIJUAg*d>LQ$wat&gBmaok8^pZjFKgnyTSn03C zNxcS=N?u}V3EBQ59FoNxWoGTVcxI+nPM&Gltl~QbGI)v&O;3|O>^W7mv|>TZGo^32 zpGV+y%(!Q6ecgg&yMotVNH1ouFmA; z=CVXU7a>RaXm7O#BTs{9xPPocTaZ#vc8?ERo3;Ww$rxfNT*U9AAb$vNAnAWV=c>=k8oM z=Sfv!+oI5+`DxN;f>;aQubDavvB8TM3)_o5hYRnn5#G3w$+vEn?~pFtHFW9Y(FH1G-mU@}cz5#X9F#@?NIRTUc+32n=Nx=xM1s>mF;?EN?_3n-% zG`C3R=6*4`{C?)>e6$c}+(Z5&pj0D|bmP!c;Ixsz1GitB0;i7aWk8kSNePSt%& zRj0SDjur|RHnZpT4OBm+f@;hHT>sFJ5E>?T*ZM~om`hD>FqAmITP^I&^i!3>@Pkak z-G;UM+7#7sQnKN?2ggr7LZgLFVzptDDx~%M_n)24Zv6s#<0)PaFBv)Mn)*gk2nq`& zB_z7yI%29_%;b5p)99EO_{1OpQ)sNdUjkHoTxD*+2{X;|u)^J$xqhde66+2VnO9q^ z9e!SN(3c5wVN=hebdl37(4Mh0A=7ezm9{uzAjRo6%6&4i(3O2%?h#W9)6(XkzDA*m z@|*c}6rpxlwsPOjqWSPAw|DW&W17LeH3!;0qrd$D;`^(3C>P3yuC@05NlCu6J1aY} zr+Yn5ohIvutB%H=woj9Kon`R zDyfOO1V61mIgFun+J7!_@TL{ic6L_X>%*!&t6}b5VKQ>>S4YS?YaK{L{rtK|LUMRB z-|ylXjBi312WqG>1w)*~JJAq{6rVUQ%`!PTe!o6KBL^0_hcAZi)pFX$YK*!DLgZ%) zvEJ3oR3#FZmL27f`T`dlyj4+)*B*c2r<#i$KV9kqF1^g6hyW& ze(ZR$ACtvL*R4f&V(v?Sp0;3FCOL#v+pV9T^IGqJ0&z5ECU?<}k4aPZ77|t8zgP9Y zfah%BIG2u*l~snRr3D-JawXG*oqO^3)>dfU2g5GOSn}F*7M^#f8XFSU1KTLl2PU*k zXUeV_vhhlCa-T*8@+Ue=pnAj1%G$AumebIPZVhKO-LvV_E6jWuNa>Vq%4O&NVe(={ z5G_3|W3Dz|Eg9Z(vfnQZ4NX=e?*^wX-ZvC)J##oV+oLq;D)RWM>#9s2A_4DZX>5yU z$LZ8@=hg1b5gu)09F)T8<4isWvw`VrLbeBL#X~HR@Ic^(TqA>p;Aa z)gye3*`(Rtb6G#S!!S-tQo+(vJgHQ-if4>X+#&r_;Rww9EA(3*6MI+xd)rV>GER+>DWyFpdcS#Ur4O@?4|1|c~k$I znkt)EJSDnq^mFoyMxjgP*q;j$+%%^(Vc#vG+f7dM;S@(AmUYu5Tjx}PBi@tHw`k1S}x~+!@X4oc>Dh3oULn- z%kl%^Rbu|AL=KSHW#0HYDQUiadd`xCnOSOYbVy6rWygXO8ASbMEAZ;<m|4zq>b5}LLYu} znWT!@7C%>`O`cNp@rXQkNlF0DAYmZ#(5MzHc^boiSG!Yh)KB zm;^=zr3-5BYK_IaX~0^8&+KvSX7X+29HZ&kmL?Nu1G4?~>KqEi*aXvPy|t!XJBtIV zVBt_cQf}6waPo3Sl=Wyu*M5XxdS+)5buGNSJa9bffsDC%fK=U& zI6l~iWMITi0sfVi>D0DHhw6beWRNNlv-|WBqflC3N&o!1SD#7W_bCgbrp-CXh$E_F zoZmcH?}*9RrT9uaSI~8DDsN-B4jlvgacFRK@;MA$h5FO8kJZ&Dg@0e)OUNBf1d;=G z941D_?~7NWrs2X*t_L8W2);hwa(M!m0=}MIe@pV`8`Qh&HGh9|o zbNJ@Yr7v&`;Oq6HKmQZ>?#koea5v%W|A{}vuVs9^HpSxVKtGUK_vdY)Mz4$ZZgszV z!`4KPTWR}2fXQ+AdV)$J z_Y1kwc(ZV GxBnlhr8_YI literal 0 HcmV?d00001 diff --git a/lecture_19/q1.png b/lecture_19/q1.png new file mode 100644 index 0000000000000000000000000000000000000000..44ec9dacdf5dab447682d8dd707ff4f981363329 GIT binary patch literal 30855 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ℑaTYld8fc|zK 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 TKnN5X2t-Cg@lBDK@rVBdU@1Hg literal 0 HcmV?d00001 diff --git a/lecture_19/q2.png b/lecture_19/q2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb27a54691b3646bdf6692394b197030b400b4fb GIT binary patch literal 22150 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 a1<|FzbL$P>pOZKn$Ve!>DiVL=_rCx)e~=ge literal 0 HcmV?d00001 diff --git a/lecture_19/q4.png b/lecture_19/q4.png new file mode 100644 index 0000000000000000000000000000000000000000..5457483da7b9b02b9f90752230423eaf8009d272 GIT binary patch literal 34995 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 z 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,error('upper bound must be greater than lower'),end +if nargin<4|isempty(n),n=100;end +x = a; h = (b - a)/n; + +xvals=linspace(a,b,n+1); +fvals=func(xvals,varargin{:}); +s=fvals(1); +s = s + 4*sum(fvals(2:2:end-1)); +s = s + 2*sum(fvals(3:2:end-2)); +s = s + fvals(end); +I = (b - a) * s/(3*n); diff --git a/lecture_19/trap.m b/lecture_19/trap.m new file mode 100644 index 0000000..85b8685 --- /dev/null +++ b/lecture_19/trap.m @@ -0,0 +1,22 @@ +function I = trap(func,a,b,n,varargin) +% trap: composite trapezoidal rule quadrature +% I = trap(func,a,b,n,pl,p2,...): +% composite trapezoidal rule +% input: +% func = name of function to be integrated +% a, b = integration limits +% n = number of segments (default = 100) +% pl,p2,... = additional parameters used by func +% output: +% I = integral estimate +if nargin<3,error('at least 3 input arguments required'),end +if ~(b>a),error('upper bound must be greater than lower'),end +if nargin<4|isempty(n),n=100;end + +x = a; h = (b - a)/n; +xvals=linspace(a,b,n); +fvals=func(xvals,varargin{:}); +s=func(a,varargin{:}); +s = s + 2*sum(fvals(2:n-1)); +s = s + func(b,varargin{:}); +I = (b - a) * s/(2*n);