{"id":1017,"date":"2021-03-13T15:25:28","date_gmt":"2021-03-13T13:25:28","guid":{"rendered":"http:\/\/www.joanillo.org\/?p=1017"},"modified":"2021-03-13T15:25:28","modified_gmt":"2021-03-13T13:25:28","slug":"grafics-interactius-amb-jupyter-notebooks-tir-parabolic","status":"publish","type":"post","link":"https:\/\/www.joanillo.org\/?p=1017","title":{"rendered":"Gr\u00e0fics interactius amb Jupyter Notebooks: tir parab\u00f2lic"},"content":{"rendered":"<p><iframe width=\"400\" height=\"300\" src=\"\/\/www.youtube.com\/embed\/NvJZQE6ZeKE?feature=player_detailpage\" frameborder=\"0\" allowfullscreen=\"\" class=\"aligncenter size-medium wp-image-1665\"><\/iframe>Ara que ja he comen\u00e7at a fer proves amb Jupyter Notebook, el seg\u00fcent pas que vull provar \u00e9s fer gr\u00e0fics interactius. Doncs ha resultat ser m\u00e9s f\u00e0cil i r\u00e0pid del que pensava.<\/p>\n<p>Parteixo d&#8217;un script python que simula les dades experimentals d&#8217;una traject\u00f2ria parab\u00f2lica, i calcula la par\u00e0bola que millor s&#8217;hi ajusta (regressi\u00f3 quadr\u00e0tica). A partir de l&#8217;equaci\u00f3 de la par\u00e0bola es pot deduir la constant <em>g (=9,81 m\/s2)<\/em>. Simulo les dades experimentals introdu\u00efnt un error de soroll en les dades te\u00f2riques. Doncs b\u00e9, amb el meu gr\u00e0fic interactiu puc jugar amb el nivell de soroll, i amb el n\u00famero de punts de mostreig, tal com es veu en el video. El codi queda de la seg\u00fcent manera:<\/p>\n<pre>%matplotlib inline\nfrom ipywidgets import interactive\nimport numpy as np\nimport pylab as plt\nfrom IPython.display import display, Math, Latex\n\n# tir parab\u00f2lic: y = vy*t - .5gt^2\nvy = 10 # 10m\/s\ng = 9.81 # m\/s^2\nt_max = 2*vy\/g\n\ndef f(nivell_soroll, num_punts):\n    t = np.linspace(0, t_max, num_punts)\n    y_or = vy*t - .5*g*t**2\n    noise = np.random.normal(0, nivell_soroll, num_punts) # simulem dades experimentals\n    y = y_or + noise\n\n    # ajustament a una par\u00e0bola\n    z = np.polyfit(t, y, 2)\n    g_exp = 2.0*z[0]\n\n    t_ = np.linspace(0, t_max, 100)\n    y_ = z[0]*t_**2 + z[1]*t_ + z[2]\n\n    fig, ax = plt.subplots()\n    plt.plot(t_, y_, t, y, 'bo')\n    plt.suptitle(\"Tir parab\u00f2lic. Regressi\u00f3 quadr\u00e0tica\")\n    plt.title(\"y = \" + str(round(z[0],3)) + \"t^2 + \" + str(round(z[1],3)) + \"t + \" + str(round(z[2],3)) + \" -&gt; g exp = \" + str(round(g_exp,3)) + \" m\/s^2\")\n    ax.set(xlabel='temps (s)', ylabel='y (m)')\n    ax.grid()\n    plt.show()\n    \ninteractive_plot = interactive(f, nivell_soroll=(0.0, 2.0),  num_punts=(10, 50))\ninteractive_plot\n<\/pre>\n<p>Una altra cosa que m&#8217;interessa \u00e9s la manera d&#8217;exportar aquests Jupyter Notebooks a una web, conservant les gr\u00e0fiques i les f\u00f3rmules en format Latex (encara que es perdi la interacci\u00f3 amb les gr\u00e0fiques). Aix\u00f2 s&#8217;aconsegueix directament exportant el Notebook a html:<\/p>\n<pre>$ jupyter nbconvert --execute tir_parabolic.ipynb --to html\n<\/pre>\n<p>i integrant aquest codi en una web on hi hagi m\u00e9s text i explicacions, i amb la llibreria Bootstrap.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ara que ja he comen\u00e7at a fer proves amb Jupyter Notebook, el seg\u00fcent pas que vull provar \u00e9s fer gr\u00e0fics interactius. Doncs ha resultat ser m\u00e9s f\u00e0cil i r\u00e0pid del que pensava. Parteixo d&#8217;un script python que simula les dades experimentals d&#8217;una traject\u00f2ria parab\u00f2lica, i calcula la par\u00e0bola que millor s&#8217;hi ajusta (regressi\u00f3 quadr\u00e0tica). A [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[30,19,16,12,48,36],"tags":[],"_links":{"self":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1017"}],"collection":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1017"}],"version-history":[{"count":1,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":1018,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions\/1018"}],"wp:attachment":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}