{"id":31182,"date":"2025-08-07T17:45:46","date_gmt":"2025-08-07T15:45:46","guid":{"rendered":"https:\/\/www.valcon.it\/vpython\/?p=31182"},"modified":"2026-09-13T12:13:26","modified_gmt":"2026-09-13T10:13:26","slug":"int-num-rett","status":"publish","type":"post","link":"https:\/\/www.valcon.it\/vpython\/int-num-rett\/","title":{"rendered":"Integrazione numerica: metodo dei rettangoli"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">L&#8217;applicazione presenta 3 quesiti di integrazione numerica dell&#8217;Esame di Stato (Liceo Scientifico)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puoi scegliere se le altezze dei rettangoli sono di sinistra \/ al centro \/ di destra e il numero di rettangoli<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Web VPython<\/h2>\n\n\n\n<iframe loading=\"lazy\" src=\"https:\/\/www.glowscript.org\/#\/user\/ValCon\/folder\/Algoritmi\/program\/int-num\" width=\"100%\" height=\"700\"><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\">Bisogna tradurre <code>linspace()<\/code> e fare a meno di <code>zip()<\/code><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nWeb VPython 3.2\n#from vpython import *\n#-------------------------------------------------------- Problema\nANNO = {\n    &quot;2001&quot;: &#x5B;&quot;sin(x)&quot;        , 0, pi , 2.0 ],\n    &quot;2003&quot;: &#x5B;&quot;1\/(1+x**2)&quot;    , 0, 1  , pi\/4],\n    &quot;2008&quot;: &#x5B;&quot;1\/sqrt(1-x**2)&quot;, 0, 1\/2, pi\/6]\n}\n#-------------------------------------------------------- Default\nfun  = &quot;sin(x)&quot;\na    = 0\nb    = pi\ne    = 2.0\nn    = 5\ncaso = &quot;Sinistra&quot;\n#-------------------------------------------------------- Calcoli\ndef linspace(start, stop, num):\n    step = (stop-start)\/(num-1)\n    return &#x5B;start + i*step for i in range(num)]\n\ndef approssima():\n    fx = &#x5B;]\n    Sy = 0\n    x  = a+delta\n    for i in range(n):\n        y   = eval(fun); fx.append(y)\n        Sy += y\n        x  += h\n    appr = h*Sy\n    return appr, fx\n#-------------------------------------------------------- Binding\ndef bind_funzioni(evt):\n    global fun, a, b, e\n    x = evt.text\n    fun_info = ANNO&#x5B;x]\n    fun = fun_info&#x5B;0]\n    a   = fun_info&#x5B;1]\n    b   = fun_info&#x5B;2]\n    e   = fun_info&#x5B;3]\n    wtext_esatto.text = &quot; ({:.6f})&quot;.format(e)\n    elabora()\n \ndef bind_n(evt):\n    global n\n    n = evt.value\n    wtext_n.text = n\n    elabora()\n \ndef bind_altezze(evt):\n    global caso\n    caso = evt.text\n    elabora()\n \ndef elabora():\n    global g, h, h2, delta\n    g.delete()\n     \n    h  = (b-a)\/n\n    h2 = h\/2\n      \n    if  (caso == &quot;Sinistra&quot;): delta = 0\n    elif(caso == &quot;Centro&quot;  ): delta = h2\n    elif(caso == &quot;Destra&quot;  ): delta = h\n    else                    : print(&quot;ERRORE: caso&quot;)\n \n    g = graph(fast = False, xtitle = &quot;x&quot;, ytitle = &quot;f(x)&quot;, xmin = a-0.1, xmax = b+0.1)\n \n    APPR, Y_APPR    = approssima()\n    wtext_appr.text = &quot;{:.6f}&quot;.format(APPR)\n \n    X            = arange(a, b, h)\n    DATA_APPR = &#x5B;]\n    for i in range(n):\n        DATA_APPR.append((X&#x5B;i]+h2, Y_APPR&#x5B;i]))\n    g_rettangoli = gvbars(color = color.magenta, delta = h, data=DATA_APPR)\n     \n    X = linspace(a, b, num=100)\n    DATA_FUN = &#x5B;]\n    for x in X:\n        DATA_FUN.append((x, eval(fun)))\n    g_funzione   = gcurve(color = color.blue, data = DATA_FUN)\n#-------------------------------------------------------------------------- INTERFACCIA\nN_MIN = 1\nN_MAX = 10\n\nc=canvas()\nc.append_to_caption(&quot;INTEGRAZIONE NUMERICA: metodo dei rettangoli&quot;)\nc.append_to_caption(&quot;\\n\\nAnno\\n\\t&quot;)\nradio(bind = bind_funzioni, name = &quot;funzioni&quot;, text = &quot;2001&quot;, checked = True)\nc.append_to_caption(&quot;  &quot;)\nradio(bind = bind_funzioni, name = &quot;funzioni&quot;, text = &quot;2003&quot;)\nc.append_to_caption(&quot;  &quot;)\nradio(bind = bind_funzioni, name = &quot;funzioni&quot;, text = &quot;2008&quot;)\nc.append_to_caption(&quot;\\nAltezze\\n\\t&quot;)\nradio(bind = bind_altezze, name = &quot;altezze&quot;, text = &quot;Sinistra&quot;, checked = True)\nc.append_to_caption(&quot;  &quot;)\nradio(bind = bind_altezze, name = &quot;altezze&quot;, text = &quot;Centro&quot;)\nc.append_to_caption(&quot;  &quot;)\nradio(bind = bind_altezze, name = &quot;altezze&quot;, text = &quot;Destra&quot;)\nc.append_to_caption(&quot;\\nNumero rettangoli\\n\\t&quot;)\nslider_n   = slider(bind = bind_n, left = 0, step = 1, min = N_MIN, max = N_MAX, value = n)\nc.append_to_caption(&quot;  &quot;)\nwtext_n    = wtext(text = n)\nc.append_to_caption(&quot;\\nApprossimazione\\n\\t&quot;)\nwtext_appr = wtext(text = 0)\nwtext_esatto = wtext(text = &quot; ({:.6f})&quot;.format(e))\nc.append_to_caption(&quot;\\n\\n&quot;)\nc.delete()\ng = graph()\nelabora()\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>L&#8217;applicazione presenta 3 quesiti di integrazione numerica dell&#8217;Esame di Stato (Liceo Scientifico) Puoi scegliere se le altezze dei rettangoli sono di sinistra \/ al centro \/ di destra e il numero di rettangoli Web VPython Bisogna tradurre linspace() e fare a meno di zip()<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[17,18],"class_list":["post-31182","post","type-post","status-publish","format-standard","hentry","category-appl-2d","tag-interazione","tag-web"],"_links":{"self":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/31182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/comments?post=31182"}],"version-history":[{"count":17,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/31182\/revisions"}],"predecessor-version":[{"id":33339,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/31182\/revisions\/33339"}],"wp:attachment":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/media?parent=31182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/categories?post=31182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/tags?post=31182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}