{"id":2998,"date":"2017-02-23T06:00:03","date_gmt":"2017-02-23T04:00:03","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2998"},"modified":"2022-03-26T11:31:51","modified_gmt":"2022-03-26T09:31:51","slug":"calculo-de-pi-mediante-los-metodos-de-gregory-leibniz-y-de-beeler-2017","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/calculo-de-pi-mediante-los-metodos-de-gregory-leibniz-y-de-beeler-2017\/","title":{"rendered":"C\u00e1lculo de pi mediante los m\u00e9todos de Gregory-Leibniz y de Beeler"},"content":{"rendered":"<p>La f\u00f3rmula de Gregory-Leibniz para calcular pi es<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png?resize=393%2C90\" alt=\"Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_1\" width=\"393\" height=\"90\" class=\"aligncenter size-full wp-image-3003\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png?w=393&amp;ssl=1 393w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png?resize=300%2C68&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png?resize=100%2C22&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_11.png?resize=150%2C34&amp;ssl=1 150w\" sizes=\"(max-width: 393px) 100vw, 393px\" data-recalc-dims=\"1\" \/><\/a><br \/>\ny la de Beeler es<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png?resize=579%2C81\" alt=\"Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2\" width=\"579\" height=\"81\" class=\"aligncenter size-full wp-image-3000\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png?w=579&amp;ssl=1 579w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png?resize=300%2C41&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png?resize=100%2C13&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_2.png?resize=150%2C20&amp;ssl=1 150w\" sizes=\"(max-width: 579px) 100vw, 579px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   aproximaPiGL     :: Int -> Double\n   aproximaPiBeeler :: Int -> Double\n   graficas         :: [Int] -> IO ()\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(aproximaPiGL n) es la aproximaci\u00f3n de pi con los primeros n t\u00e9rminos de la f\u00f3rmula de Gregory-Leibniz. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     aproximaPiGL 1       ==  4.0\n     aproximaPiGL 2       ==  2.666666666666667\n     aproximaPiGL 3       ==  3.466666666666667\n     aproximaPiGL 10      ==  3.0418396189294032\n     aproximaPiGL 100     ==  3.1315929035585537\n     aproximaPiGL 1000    ==  3.140592653839794\n     aproximaPiGL 10000   ==  3.1414926535900345\n     aproximaPiGL 100000  ==  3.1415826535897198\n<\/pre>\n<ul>\n<li>(aproximaPiBeeler n) es la aproximaci\u00f3n de pi con los primeros n t\u00e9rminos de la f\u00f3rmula de Beeler. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     aproximaPiBeeler 1   ==  2.0\n     aproximaPiBeeler 2   ==  2.6666666666666665\n     aproximaPiBeeler 3   ==  2.933333333333333\n     aproximaPiBeeler 10  ==  3.140578169680337\n     aproximaPiBeeler 60  ==  3.141592653589793\n     pi                   ==  3.141592653589793\n<\/pre>\n<ul>\n<li>(graficas xs) dibuja la gr\u00e1fica de las k-\u00e9simas aproximaciones de pi, donde k toma los valores de la lista xs, con las f\u00f3rmulas de Gregory-Leibniz y de Beeler. Por ejemplo, (graficas [1..25]) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png?resize=626%2C469\" alt=\"Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3\" width=\"626\" height=\"469\" class=\"aligncenter size-full wp-image-3001\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png?w=626&amp;ssl=1 626w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png?resize=300%2C224&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png?resize=100%2C74&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/02\/Calculo_de_pi_mediante_los_metodos_de_Gregory-Leibniz_y_de_Beeler_3.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 626px) 100vw, 626px\" data-recalc-dims=\"1\" \/><\/a><br \/>\ndonde la l\u00ednea morada corresponde a la aproximaci\u00f3n de Gregory-Leibniz y la verde a la de Beeler.<\/li>\n<\/ul>\n<p><strong>Nota<\/strong>: Este ejercicio ha sido propuesto por Enrique Naranjo.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Graphics.Gnuplot.Simple\n\n-- Definiciones de aproximaPiGL\n-- ============================\n\n-- 1\u00aa definici\u00f3n de aproximaPiGL\naproximaPiGL :: Int -> Double\naproximaPiGL n = 4 * (sum . take n . sumaA . zipWith (\/) [1,1..]) [1,3..]\n  where sumaA (x:y:xs) = x:(-y):sumaA xs\n\n-- 2\u00aa definici\u00f3n de aproximaPiGL\naproximaPiGL2 :: Int -> Double\naproximaPiGL2 n =\n  4 * (sum (take n (zipWith (\/) (cycle [1,-1]) [1,3..])))\n\n-- 3\u00aa definici\u00f3n de aproximaPiGL\naproximaPiGL3 :: Int -> Double\naproximaPiGL3 n =\n  4 * (sum . take n . zipWith (\/) (cycle [1,-1])) [1,3..]\n\n-- 4\u00aa definici\u00f3n de aproximaPiGL\naproximaPiGL4 :: Int -> Double\naproximaPiGL4 n = serieGL !! (n-1)\n\nserieGL :: [Double]\nserieGL = scanl1 (+) (zipWith (\/) numeradores denominadores)\n  where numeradores   = cycle [4,-4]\n        denominadores = [1,3..]\n\n-- Definici\u00f3n de aproximaPiBeeler\naproximaPiBeeler :: Int -> Double\naproximaPiBeeler n = 2 * aux (fromIntegral n) 1\n  where\n    aux :: Double -> Double -> Double \n    aux n k | n == k    = 1\n            | otherwise = 1 + (k\/(2*k+1)) * aux n (1+k)\n\n-- Definici\u00f3n de graficas\ngraficas :: [Int] -> IO ()\ngraficas xs = \n    plotLists [Key Nothing]\n             [[(k,aproximaPiGL k)     | k <- xs],\n              [(k,aproximaPiBeeler k) | k <- xs]]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>La f\u00f3rmula de Gregory-Leibniz para calcular pi es y la de Beeler es Definir las funciones aproximaPiGL :: Int -> Double aproximaPiBeeler :: Int -> Double graficas :: [Int] -> IO () tales que (aproximaPiGL n) es la aproximaci\u00f3n de pi con los primeros n t\u00e9rminos de la f\u00f3rmula de Gregory-Leibniz. Por ejemplo, aproximaPiGL 1&#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":[166,183,376,11,375,6,252,40,47,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2998"}],"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=2998"}],"version-history":[{"count":6,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2998\/revisions"}],"predecessor-version":[{"id":3044,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2998\/revisions\/3044"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}