{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%matplotlib inline\n", "import ipywidgets as widgets\n", "from ipywidgets import interact,interactive,fixed\n", "from IPython.display import display,Math,clear_output\n", "#import test \n", "#import sympy\n", "import src.lagrange as lg\n", "import src.leastSquares as ls\n", "import src.splines as sp\n", "import matplotlib.pyplot as plt\n", "from numpy import linspace,sin,shape\n", "from pandas import DataFrame\n", "from IPython.display import HTML\n", "#l=lg.Lagrange()\n", "#l1=ls.LeastSquares()\n", "#l2=sp.SplineParab()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
" ] }, "execution_count": 2, "metadata": { }, "output_type": "execute_result" } ], "source": [ "HTML('''\n", "
''') " ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Newton's divided differences interpolation polynomial and socket multiplication algorithms" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
$f(x_{i})$$f(x_{i};x_{j})$......$f(x_{i};...;x_{j})$
-1-0.841471 0.540302 0.150584-0.150584 0.248014
-1-0.841471 0.841471-0.150584 0.345443 NaN
1 0.841471 0.540302 0.540302 NaN NaN
1 0.841471 0.540302 NaN NaN NaN
1 0.841471 NaN NaN NaN NaN
\n", "
" ] }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" }, { "data": { "image/png": "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" }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" }, { "data": { "text/latex": [ "$$interp\\ f(x)=0.248013831069444 x^{4} - 0.150584339469878 x^{3} - 0.496027662138887 x^{2} + 0.992055324277775 x + 0.248013831069444$$" ] }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" } ], "source": [ "button=widgets.Button(description=\"click me\")\n", "buttonDiffSock=widgets.Button(description=\"click me\")\n", "\n", "strPoints = widgets.Text(description='points',value='-1,-1,1,1')\n", "strFunct=widgets.Text(description=r'f(x)=',value='sin(pi*x)')\n", "\n", "strPointsDiffSock = widgets.Text(description='points',value='')\n", "strFunctDiffSock=widgets.Text(description=r'f(x)=',value='sin(x)')\n", "strPointDiffSock=widgets.Text(description='x0=',value='0')\n", "\n", "def on_button_cliked(event):\n", " l=lg.Lagrange()\n", " clear_output()\n", " #display(Math(r'$\\begin{pmatrix}1 & 2 \\\\ 3 & 4\\end{pmatrix}$'))\n", " \n", " plt.cla()\n", " points=[float(s) for s in list(strPoints.value.split(','))]\n", " f=strFunct.value\n", " l.lagrangeInterp(points=points,func=f)\n", " \n", " l.showInNotebook()\n", " display(l.dataFrameD)\n", " l.plot()\n", " display(Math(\"interp\\ f(x)=\"+lg.latex(l.iF)))\n", " \n", "def on_button_clikedDiffSock(event):\n", " l=lg.Lagrange()\n", " clear_output()\n", " \n", " if len(strPointsDiffSock.value)==0:\n", " points=[]\n", " else:\n", " points=[float(s) for s in list(strPointsDiffSock.value.split(','))]\n", " f=strFunctDiffSock.value\n", " \n", " if len(strPointDiffSock.value)==0:\n", " x0=0\n", " else:\n", " x0=float(strPointDiffSock.value)\n", " \n", " l.diffSocket()\n", " l.showInNotebook()\n", " display(l.dataFrameDD)\n", "\n", " #display(Math(\"interp\\ f(x)=\"+lg.latex(l.iF)))\n", " \n", "button.on_click(on_button_cliked)\n", "buttonDiffSock.on_click(on_button_clikedDiffSock)\n", "\n", "page1 = widgets.Box(children=[button, strPoints,strFunct])\n", "page2 = widgets.Box(children=[buttonDiffSock,strPointsDiffSock,\n", " strFunctDiffSock,strPointDiffSock])\n", "#display(container)\n", "tabs = widgets.Tab(children=[page1, page2])\n", "display(tabs)\n", "\n", "tabs.set_title(0, 'Lagrange interpolation')\n", "tabs.set_title(1, 'Socket multiplication algoriphm')" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": true }, "outputs": [ ], "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "\n", "\n", "\n", "\n", "## Least Squares algorithm with Head function or Jacobi for basis" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "buttonH=widgets.Button(description=\"click me\")\n", "buttonJ=widgets.Button(description=\"click me\")\n", "buttonEps=widgets.Button(description=\"click me\")\n", "\n", "strPointsH = widgets.Text(description='points',value='')\n", "strPointsJ = widgets.Text(description='points',value='-1,1')\n", "strFunctH=widgets.Text(description=r'f(x)=',value='sin(x)')\n", "strFunctJ=widgets.Text(description=r'f(x)=',value='Piecewise((x+1,x>0),(-x+1,x<0),(1,True))')\n", "strEps= widgets.Text(description='Eps',value='1')\n", "strFunctEps=widgets.Text(description=r'f(x)=',value='Piecewise((x+1,x>0),(-x+1,x<0),(1,True))')\n", "\n", "def on_button_clikedH(event,x):\n", " l1=ls.LeastSquares()\n", " clear_output()\n", " #display(Math(r'$\\begin{pmatrix}1 & 2 \\\\ 3 & 4\\end{pmatrix}$'))\n", " \n", " plt.cla()\n", " if x==0:\n", " if len(strPointsH.value)!=0:\n", " l1.points=[float(s) for s in list(strPointsH.value.split(','))]\n", " l1.f=strFunctH.value\n", " l1.createBasisH()\n", " elif x==1:\n", " #if len(strPointsJ.value)!=0:\n", " l1.points=[-1,1]\n", " l1.f=strFunctJ.value\n", " l1.createBasisJ()\n", " else:\n", " pass\n", " \n", " l1.leastSquares()\n", " #print(l1.points)\n", " #print(l1.f)\n", " #print(l1.iF)\n", " l1.showInNotebook()\n", " \n", " if x!=0:\n", " display(Math(\"interp\\ f(x)=\"+l1.texF))\n", " #display(l.dataFrameD)\n", " #l.plot() \n", " #display(Math(\"interp\\ f(x)=\"+l1.texF))\n", " display(\"Basis:\")\n", " for b in l1.texBasis:\n", " display(Math(b))\n", "\n", "def on_button_clikedEps(event):\n", " l1=ls.LeastSquares()\n", " clear_output()\n", " plt.cla()\n", " eps=float(strEps.value)\n", " for n in range(12):\n", " l1=ls.LeastSquares()\n", " l1.f=strFunctJ.value\n", " l1.forEps(n=n)\n", " if l1.eps()<=eps:\n", " break\n", " if(n>10):\n", " print(\"fail\")\n", " break\n", " \n", " l1.showInNotebook()\n", " \n", " display(Math(\"interp\\ f(x)=\"+l1.texF))\n", " display(\"Basis:\")\n", " for b in l1.texBasis:\n", " display(Math(b))\n", "\n", "p=lambda event,x:on_button_clikedH(event,x)\n", "pH=lambda event:p(event,0)\n", "pJ=lambda event:p(event,1)\n", "\n", "buttonH.on_click(pH)#on_button_clikedH\n", "buttonJ.on_click(pJ)#on_button_clikedJ\n", "buttonEps.on_click(on_button_clikedEps)\n", "\n", "page1 = widgets.Box(children=[buttonH, strPointsH,strFunctH])\n", "page2 = widgets.Box(children=[buttonJ,strPointsJ,strFunctJ])\n", "page3 = widgets.Box(children=[buttonEps,strEps,strFunctEps])\n", "#display(container)\n", "tabs = widgets.Tab(children=[page3, page1,page2])\n", "display(tabs)\n", "\n", "tabs.set_title(0, 'Jacoby basis eps')\n", "\n", "tabs.set_title(1, 'Head function basis')\n", "tabs.set_title(2, 'Jacoby basis')\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## spline algorithm with use parabolas polinom (i.e. polinom degree of 2)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "button=widgets.Button(description=\"click me\")\n", "buttonJ=widgets.Button(description=\"click me\")\n", "\n", "strPointsX = widgets.Text(description='points X',value='0,1,2,3,4')\n", "strPointsY = widgets.Text(description='points Y',value='0,0,1,0,0')\n", "strFunct=widgets.Text(description=r'f(x)=',value='sin(x)')\n", "\n", "\n", "def on_button_cliked(event):\n", " l2=sp.SplineParab()\n", " clear_output()\n", " #display(Math(r'$\\begin{pmatrix}1 & 2 \\\\ 3 & 4\\end{pmatrix}$'))\n", " \n", " plt.cla()\n", " \n", " if len(strPointsX.value)!=0:\n", " pointsX=[float(s) for s in list(strPointsX.value.split(','))]\n", " if len(strPointsY.value)!=0:\n", " pointsY=[float(s) for s in list(strPointsY.value.split(','))]\n", " f=strFunct.value\n", " \n", " l2.splineParab(points=pointsX,y=pointsY,f=f)\n", " l2.showInNotebook()\n", " \n", " for i in range(l2.n):\n", " display(Math(r'$ p_{%s}(x),g(x),h(x), p_{%s}(x):$'%(i,i+1)))\n", " display(l2.dataFrames[i])\n", " l2.plot(i)\n", " \n", " #display(Math(\"interp\\ f(x)=\"+l1.texF))\n", " #display(l.dataFrameD)\n", " #l.plot() \n", " #display(Math(\"interp\\ f(x)=\"+l1.texF))\n", " \n", "button.on_click(on_button_cliked)\n", "\n", "\n", "page1 = widgets.Box(children=[button, strPointsX,strPointsY,strFunct])\n", "display(page1)\n" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": true }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (Ubuntu Linux)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }