diff options
Diffstat (limited to 'Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb')
-rw-r--r-- | Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb | 501 |
1 files changed, 501 insertions, 0 deletions
diff --git a/Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb b/Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb new file mode 100644 index 0000000..04b0fab --- /dev/null +++ b/Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb @@ -0,0 +1,501 @@ +{ +"cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 12: Interpolation and Extrapolation" + ] + }, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.1: Linear_Interpolation_Technique.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.1\n", +"//Linear Interpolation Technique\n", +"//Page no. 372\n", +"clc;close;clear;\n", +"\n", +"printf('x: ')\n", +"f=[1,4,9,16,25];\n", +"for i=1:5\n", +" printf('%i\t',i)\n", +"end\n", +"printf('\nf(x): ')\n", +"for i=1:5\n", +" printf('%i\t',f(i))\n", +"end\n", +"x=2.5;\n", +"x1=2;x2=3;printf('\n\nfor (2,4) and (3,9)')\n", +"f(2.5)=f(x1)+(f(x2)-f(x1))*(x-x1)/(x2-x1)\n", +"printf('\nf(2.5) = %.1f',f(2.5))\n", +"\n", +"x=2.5;\n", +"x1=2;x2=4;printf('\n\nfor (2,4) and (4,16)')\n", +"f(2.5)=f(x1)+(f(x2)-f(x1))*(x-x1)/(x2-x1)\n", +"printf('\nf(2.5) = %.1f',f(2.5))\n", +"\n", +"x=2.5;\n", +"x1=1;x2=3;printf('\n\nfor (1,1) and (3,9)')\n", +"f(2.5)=f(x1)+(f(x2)-f(x1))*(x-x1)/(x2-x1)\n", +"printf('\nf(2.5) = %.1f',f(2.5))\n", +"\n", +"printf('\n\nExact value = %.2f',2.5^2)" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.2: Lagarangian_Method.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.2\n", +"//Lagarangian Method\n", +"//Page no. 373\n", +"clc;close;clear;\n", +"\n", +"xk=[-1,0,2,5];\n", +"yk=[10,7,7,22];\n", +"\n", +"P=0;\n", +"x=poly(0,'x');\n", +"for k=0:3\n", +" p=yk(k+1)\n", +" for j=0:3\n", +" if(j~=k)\n", +" p=p*((x-xk(j+1))/(xk(k+1)-xk(j+1)))\n", +" end\n", +" end\n", +" P=P+p;\n", +"end\n", +"disp(P,'P=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3: Aitken_Nevilles_Method.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.3\n", +"//Aitken-Neville's Method\n", +"//Page no. 378\n", +"clc;close;clear;\n", +"\n", +"function [x,y,z]=tran(a,b) // function for exchanging values\n", +" z=a;y=b;x=z;\n", +"endfunction\n", +"deff('y=P(a,b,c,d,e)','y=(c(d)*b(d+1)-c(d+e)*b(d))/(a(d+e)-a(d))') //function for finding polynomials\n", +"xi=[0.8,1,1.2,1.4,1.6];\n", +"yi=[2.2255,2.7183,3.3201,4.0552,4.9530];\n", +"x=1.23\n", +"[xi(5),xi(1),a]=tran(xi(1),xi(5))\n", +"[xi(4),xi(1),a]=tran(xi(1),xi(4))\n", +"[xi(3),xi(2),a]=tran(xi(2),xi(3))\n", +"[xi(2),xi(1),a]=tran(xi(1),xi(2))\n", +"[yi(5),yi(1),a]=tran(yi(1),yi(5))\n", +"[yi(4),yi(1),a]=tran(yi(1),yi(4))\n", +"[yi(3),yi(2),a]=tran(yi(2),yi(3))\n", +"[yi(2),yi(1),a]=tran(yi(1),yi(2))\n", +"for i=1:5\n", +" x_xi(i)=x-xi(i);\n", +"end\n", +"printf('xi x-xi yi\n')\n", +"printf('------------------------\n')\n", +"for i=1:5\n", +" printf('%.1f %.2f\t%f\n',xi(i),x_xi(i),yi(i))\n", +"end\n", +"printf('\n\nPolynomials\n')\n", +"printf('-----------\n')\n", +"for i=1:4\n", +" for j=1:5-i\n", +" printf('%f\n',P(xi,yi,x_xi,j,i))\n", +" yi(j)=P(xi,yi,x_xi,j,i)\n", +" end\n", +" printf('\n\n\n')\n", +"end" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.4: Newtons_Divided_Difference_Interpolation.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.4\n", +"//Newton's Divided Difference Interpolation\n", +"//Page no. 381\n", +"clc;close;clear;\n", +"\n", +"x=[0,1,2,3,4,5]\n", +"y=[1,2,5,10,17,26];\n", +"y1=y;\n", +"deff('yi=P(a,b,d,e)','yi=(b(d+1)-b(d))/(a(d+e)-a(d))') //function for finding polynomials\n", +"for i=1:3\n", +" for j=1:6-i\n", +" z(j,i)=P(x,y,j,i)\n", +" y(j)=z(j,i)\n", +" end\n", +"end\n", +"z(6,1)=0;\n", +"printf('x y f(x0,x1) f(x0,x1,x3) f(x0,x1,x2,x3)\n')\n", +"printf('---------------------------------------------------------\n')\n", +" for j=1:6\n", +" printf(' %i %i \t%i\t\t%i\t\t%i\n',x(1,j),y1(1,j),z(j,1),z(j,2),z(j,3))\n", +" end\n", +"x1=2.6;\n", +"f=y1(4)+(x1-x(4))*(z(4,1))+(x1-x(4))*(x1-x(5))*z(4,2)\n", +"printf('\n\nf(2.6)=%.2f',f)" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5: Interpolation_Methods.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.5\n", +"//Interpolation Methods\n", +"//Page no. 403\n", +"clc;close;clear;\n", +"\n", +"x=[0,1,2,3,4];\n", +"y=[0,1,8,27,64];\n", +"\n", +"//Inverse lagrange Method\n", +"P=0;\n", +"y1=20;\n", +"for k=0:4\n", +" p=x(k+1)\n", +" for j=0:4\n", +" if(j~=k)\n", +" p=p*((y1-y(j+1))/(y(k+1)-y(j+1)))\n", +" end\n", +" end\n", +" P=P+p;\n", +"end\n", +"disp(P,'Inverse Lagrange interpolation x=')\n", +"\n", +"\n", +"//Newton's divide difference interpolation\n", +"x1=x;\n", +"deff('xi=P(a,b,d,y)','xi=(b(d+1)-b(d))/(a(d+y)-a(d))') //function for finding polynomials\n", +"for i=1:2\n", +" for j=1:5-i\n", +" z(j,i)=P(y,x,j,i)\n", +" x(j)=z(j,i)\n", +" end\n", +"end\n", +"z(5,1)=0;\n", +"printf('\n\n y\tx f(y0,y1) f(y0,y1,y3)\n')\n", +"printf('------------------------------------------\n')\n", +" for j=1:5\n", +" printf(' %i\t%i \t%i\t\t%i\t\n',y(1,j),x1(1,j),z(j,1),z(j,2))\n", +" end\n", +"y1=20;\n", +"f=x1(4)+(y1-y(4))*(z(4,1))+(y1-y(4))*(y1-y(5))*z(4,2)\n", +"printf('\n\nNewton Divide Difference x(20)=%.2f',f)\n", +"\n", +"x=x1;\n", +"//Iterated Linear Interpolation\n", +"function [x,y,z]=tran(a,b) // function for exchanging values\n", +" z=a;y=b;x=z;\n", +"endfunction\n", +"deff('y=P(a,b,c,d,e)','y=(c(d)*b(d+1)-c(d+e)*b(d))/(a(d+e)-a(d))') //function for finding polynomials\n", +"y1=20\n", +"\n", +"[y(4),y(1),a]=tran(y(1),y(4))\n", +"[y(3),y(2),a]=tran(y(2),y(3))\n", +"[x(4),x(1),a]=tran(x(1),x(4))\n", +"[x(3),x(2),a]=tran(x(2),x(3))\n", +"for i=1:5\n", +" y1_y(i)=y1-y(i);\n", +"end\n", +"printf('y\ty1-y\tx\n')\n", +"printf('------------------\n')\n", +"for i=1:5\n", +" printf('%.1f\t%i\t%i\n',y(i),y1_y(i),x(i))\n", +"end\n", +"printf('\n\nPolynomials\n')\n", +"printf('-----------\n')\n", +"for i=1:4\n", +" for j=1:5-i\n", +" printf('%f\n',P(y,x,y1_y,j,i))\n", +" x(j)=P(y,x,y1_y,j,i)\n", +" end\n", +" printf('\n\n')\n", +"end\n", +"printf('Iterated Linear Interpolation x(20) = %f',x(j))\n", +"\n", +"x=[0,1,2,3,4];\n", +"y=[0,1,8,27,64];\n", +"y1=y;\n", +"//Suggested Interpolation\n", +"\n", +"for i=1:4\n", +" for j=1:5-i\n", +" z(j,i)=y(j+1)-y(j);\n", +" y(j)=z(j,i)\n", +" end\n", +"end\n", +"printf('\n\n\n x\ty\tdy\td2y\td3y\td4y\n')\n", +"printf('--------------------------------------------\n')\n", +"for i=1:5\n", +" printf(' %i\t%i\t%i\t%i\t%i\t%i\n',x(i),y1(i),z(i,1),z(i,2),z(i,3),z(i,4))\n", +"end\n", +"s=poly(0,'s')\n", +"p=y1(4);k=3;\n", +"for i=1:3\n", +" r=1;\n", +" for j=1:i\n", +" r=r*(s+(j-1))\n", +" end\n", +" r=r*z(k,i)/factorial(j);\n", +" k=k-1;\n", +" p=p+r;\n", +" printf('\n\nStage %i :',i)\n", +" disp(p)\n", +"end\n", +"s0=-7/19;\n", +"disp(s0,'s0=');\n", +"s1=(-7-s0*(s0+1)*6)/19\n", +"disp(s1,'s1=')\n", +"disp(3+s1,'x1=')\n", +"s2=(-7-s1*(s1+1)*6-s1*(s1+1)*(s1+2))/19\n", +"disp(s2,'s2=')\n", +"x2=3+s2;\n", +"disp(x2,'Suggested Interpolation x(20)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.6: Chebyshev_Interpolating_Polynomial.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.6\n", +"//Chebyshev Interpolating Polynomial\n", +"//Page no. 407\n", +"clc;close;clear;\n", +"\n", +"deff('y=f(x)','y=1/(1+exp(-x))');\n", +"a=-2;b=2;n=3;\n", +"D=%pi/(2*n+2)\n", +"for k=0:n\n", +" t(k+1)=-cos(D*(2*k+1))\n", +" x(k+1)=((a+b)/2)+(b-a)*t(k+1)/2\n", +" y(k+1)=f(x(k+1))\n", +" C(k+1)=0\n", +"end\n", +"for j=0:n\n", +" for k=0:n\n", +" L=(2*k+1)*D\n", +" C(j+1)=C(j+1)+y(k+1)*cos(j*L)\n", +" end\n", +"end\n", +"C(1)=C(1)/(n+1);\n", +"for j=1:n\n", +" C(j+1)=2*C(j+1)/(n+1)\n", +"end\n", +"\n", +"x=poly(0,'x')\n", +"T(1)=1;T(2)=x;\n", +"for j=1:n-1\n", +" T(j+2)=2*x*T(j+1)-T(j)\n", +"end\n", +"P=C(1)*T(1)\n", +"for j=1:n\n", +" P=P+C(j+1)*T(j+1)\n", +"end\n", +"disp(P,'P3(x)=')\n", +"printf('\n\n\nNote : Book has Calculation errors in calculation of coefficients')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.7: Double_Interpolation.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.7\n", +"//Double Interpolation\n", +"//Page no. 409\n", +"clc;close;clear;\n", +"\n", +"x=[0,1,2,3,4];\n", +"y=[0,1,2,3,4];\n", +"z=[0,1,8,27,64;1,3,11,31,69;4,7,16,37,76;9,13,23,45,85;16,21,32,55,96];\n", +"printf('y / x')\n", +"for i=1:5\n", +" printf('\t%i',x(i))\n", +"end\n", +"for i=1:5\n", +" printf('\n %i',y(i))\n", +" for j=1:5\n", +" printf('\t%i',z(j,i))\n", +" end\n", +"end\n", +"printf('\n\n\n')\n", +"for i=1:5\n", +" x=2.5;\n", +" x1=2;x2=3;\n", +" z1(1,i)=z(i,x1+1)+(z(i,x2+1)-z(i,x1+1))*(x-x1)/(x2-x1)\n", +"end\n", +"printf('Values of z at x=2.5:\n\n y')\n", +"for i=1:5\n", +" printf('\t%i',y(i))\n", +"end\n", +"printf('\n z')\n", +"for i=1:5\n", +" printf('\t%g',z1(i))\n", +"end\n", +"y=1.5;\n", +"y1=1;y2=2;\n", +"z2=z1(y1+1)+(z1(y2+1)-z1(y1+1))*(y-y1)/(y2-y1)\n", +"printf('\n\nValue of z at x=2.5 and y=1.5 : %g',z2)" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.8: Spline_Interpolation.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Example 12.8\n", +"//Spline Interpolation\n", +"//Page no. 414\n", +"clc;close;clear;\n", +"\n", +"xi=[0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17];\n", +"yi=[0.1110,0.1234,0.1361,0.1491,0.1623,0.1759,0.1897,0.2038];\n", +"h=0.01;\n", +"\n", +"pi(1)=0;qi(1)=0;pi(8)=0;qi(8)=0;\n", +"for i=2:7\n", +" pi(i)=-1/(4+pi(i-1))\n", +" qi(i)=((6/h^2)*(yi(i+1)-2*yi(i)+yi(i-1))-qi(i-1))/(4+pi(i-1))\n", +"end\n", +"si2(8)=0;\n", +"si2(1)=0;si1(8)=0;\n", +"si1(1)=0;\n", +"for i=7:-1:2\n", +" si2(i)=pi(i)*si2(i+1)+qi(i)\n", +"end\n", +"for i=2:8\n", +" si1(i)=si1(i-1)+h*(si2(i)+si2(i-1))/2\n", +"end\n", +"printf('\n i\t xi\t fi\t pi\t\t qi\t\t si2\t\t si1')\n", +"printf('\n---------------------------------------------------------------------------------')\n", +"for i=1:8\n", +" printf('\n %i\t%g\t%g\t%f\t%f\t%f\t%f',i,xi(i),yi(i),pi(i),qi(i),si2(i),si1(i))\n", +"end\n", +"x=0.1325;\n", +"i=4;\n", +"s=yi(i)+(x-xi(i))*si1(i)+(si2(i)*(x-xi(i))^2)/2+((si2(i+1)-si2(i))/(xi(i+1)-xi(i)))*((x-xi(i))^3)/6\n", +"printf('\n\nSpline Interpolated Value of s(0.1325) is : %f',s)" + ] + } +], +"metadata": { + "kernelspec": { + "display_name": "Scilab", + "language": "scilab", + "name": "scilab" + }, + "language_info": { + "file_extension": ".sce", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "scilab", + "version": "0.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |