summaryrefslogtreecommitdiff
path: root/Numerical_Methods_Principles_by_Analysis/12-Interpolation_and_Extrapolation.ipynb
diff options
context:
space:
mode:
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.ipynb501
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
+}