{"id":6151,"date":"2021-03-11T06:00:40","date_gmt":"2021-03-11T04:00:40","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6151"},"modified":"2021-03-18T09:19:59","modified_gmt":"2021-03-18T07:19:59","slug":"calculo-de-pi-mediante-la-formula-de-brouncker","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/calculo-de-pi-mediante-la-formula-de-brouncker\/","title":{"rendered":"C\u00e1lculo de pi mediante la f\u00f3rmula de Brouncker"},"content":{"rendered":"<p>El mes de marzo es el mes de pi, ya que el 14 de marzo (3\/14) es el <a href=\"https:\/\/bit.ly\/3bYAMwW\">d\u00eda de pi<\/a>. Con ese motivo, el pasado 3 de marzo se public\u00f3 en Twitter un <a href=\"https:\/\/bit.ly\/3kIOHLD\">mensaje<\/a> con la <a href=\"https:\/\/bit.ly\/3kH63Zo\">f\u00f3rmula de Brouncker para el c\u00e1lculo de pi<\/a><br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker.png?resize=300%2C267\" alt=\"\" width=\"300\" height=\"267\" class=\"aligncenter size-medium wp-image-6154\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker.png?resize=300%2C267&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker.png?w=633&amp;ssl=1 633w\" sizes=\"(max-width: 300px) 100vw, 300px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>La primeras aproximaciones son<\/p>\n<pre lang=\"text\">\n     a(1) = 4                                  =  4\n     a(2) = 4\/(1+1^2)                          =  2.0\n     a(3) = 4\/(1+1^2\/(2+3^2))                  =  3.666666666666667\n     a(4) = 4\/(1+1^2\/(2+3^2\/(2+5^2)))          =  2.8\n     a(5) = 4\/(1+1^2\/(2+3^2\/(2+5^2\/(2+7^2))))  =  3.395238095238095\n<\/pre>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   aproximacionPi :: Int -> Double\n   grafica        :: [Int] -> IO ()\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(aproximacionPi n) es la n-\u00e9sima aproximaci\u00f3n de pi con la f\u00f3rmula de Brouncker. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     aproximacionPi 1      ==  4.0\n     aproximacionPi 2      ==  2.0\n     aproximacionPi 3      ==  3.666666666666667\n     aproximacionPi 4      ==  2.8\n     aproximacionPi 5      ==  3.395238095238095\n     aproximacionPi 10     ==  3.0301437124966535\n     aproximacionPi 1000   ==  3.1405916523380406\n     aproximacionPi 1001   ==  3.142592653839793\n     aproximacionPi 10000  ==  3.141492643588543\n     aproximacionPi 10001  ==  3.1416926535900433\n     pi                    ==  3.141592653589793\n<\/pre>\n<ul>\n<li>(grafica xs) dibuja la gr\u00e1fica de las k-\u00e9simas aproximaciones de pi para k en xs. Por ejemplo, (grafica [10..100]) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker_1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker_1.png?resize=640%2C480\" alt=\"\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-6155\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker_1.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2021\/03\/Calculo_de_pi_mediante_la_formula_de_Brouncker_1.png?resize=300%2C225&amp;ssl=1 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/li>\n<\/ul>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Graphics.Gnuplot.Simple (Attribute (Key, PNG), plotList)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\naproximacionPi :: Int -> Double\naproximacionPi 1 = 4\naproximacionPi n = 4\/(1 + 1\/(aux 1 3))\n  where aux a b | a == n-1  = 1\n                | otherwise = 2 + (b^2)\/(aux (a+1) (b+2))\n\n-- El c\u00e1lculo es\n--    aproximacionPi 2\n--      = 4\/(1 + 1\/(aux 1 3))\n--      = 4\/(1 + 1\/1)\n--      = 2.0\n--\n--    aproximacionPi 3\n--      = 4\/(1 + 1\/(aux 1 3))\n--      = 4\/(1 + 1\/(2 + 3^2\/(aux 2 5))\n--      = 4\/(1 + 1\/(2 + 3^2\/1))\n--      = 3.666666666666667\n--\n--    aproximacionPi 4\n--      = 4\/(1 + 1\/(aux 1 3))\n--      = 4\/(1 + 1\/(2 + 3^2\/(aux 2 5))\n--      = 4\/(1 + 1\/(2 + 3^2\/(2 + 5^2\/(aux 3 7))))\n--      = 4\/(1 + 1\/(2 + 3^2\/(2 + 5^2\/1)))\n--      = 2.8\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\naproximacionPi2 :: Int -> Double\naproximacionPi2 n =\n  aproximacionFC n fraccionPi\n\n-- fraccionPi es la representaci\u00f3n de la fracci\u00f3n continua de pi como un\n-- par de listas infinitas.\nfraccionPi :: [(Integer, Integer)]\nfraccionPi = zip (0 : 1 : [2,2..]) (4 : map (^2) [1,3..])\n\n-- (aproximacionFC n fc) es la n-\u00e9sima aproximaci\u00f3n de la fracci\u00f3n\n-- continua fc (como un par de listas).\naproximacionFC :: Int -> [(Integer, Integer)] -> Double\naproximacionFC n =\n  foldr (\\(a,b) z -> fromIntegral a + fromIntegral b \/ z) 1 . take n\n\n-- Gr\u00e1fica\n-- =======\n\ngrafica :: [Int] -> IO ()\ngrafica xs =\n  plotList [ Key Nothing\n           -- , PNG \"Calculo_de_pi_mediante_la_formula_de_Brouncker_1.png\"\n           ]\n           [(k,aproximacionPi k) | k <- xs]\n<\/pre>\n<h4>Nuevas soluciones<\/h4>\n<ul>\n<li>En los comentarios se pueden escribir nuevas soluciones.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=&quot;haskell&quot;&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>El mes de marzo es el mes de pi, ya que el 14 de marzo (3\/14) es el d\u00eda de pi. Con ese motivo, el pasado 3 de marzo se public\u00f3 en Twitter un mensaje con la f\u00f3rmula de Brouncker para el c\u00e1lculo de pi La primeras aproximaciones son a(1) = 4 = 4 a(2)&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[4],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6151"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=6151"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6151\/revisions"}],"predecessor-version":[{"id":6195,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6151\/revisions\/6195"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}