{"id":2250,"date":"2012-10-25T15:58:58","date_gmt":"2012-10-25T15:58:58","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2012-ejercicios-de-definiciones-por-comprension-3\/"},"modified":"2013-03-08T05:44:26","modified_gmt":"2013-03-08T05:44:26","slug":"i1m2012-ejercicios-de-definiciones-por-comprension-3","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2012-ejercicios-de-definiciones-por-comprension-3\/","title":{"rendered":"I1M2012: Ejercicios de definiciones por comprensi\u00f3n (3)"},"content":{"rendered":"<p>En la clase de hoy del curso <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-12\">Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas)<\/a> se han comentado las soluciones de los ejercicios 7 a 10 de la <a href=\"https:\/\/www.glc.us.es\/~jalonso\/ejerciciosI1M2012G2\/images\/a\/a9\/Rel_4.hs\">4\u00aa relaci\u00f3n<\/a> sobre definiciones por comprensi\u00f3n.<\/p>\n<p>Los ejercicios y sus soluciones se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 7. Definir la funci\u00f3n \r\n--    circulo :: Int -> Int\r\n-- tal que (circulo n) es el la cantidad de pares de n\u00fameros naturales\r\n-- (x,y) que se encuentran dentro del c\u00edrculo de radio n. Por ejemplo,\r\n--    circulo 3  ==  9\r\n--    circulo 4  ==  15\r\n--    circulo 5  ==  22\r\n-- ---------------------------------------------------------------------\r\n\r\ncirculo :: Int -> Int\r\ncirculo n = length [(x,y) | x <- [0..n], y <- [0..n], x^2+y^2 < n^2]\r\n\r\n-- La eficiencia puede mejorarse con\r\ncirculo' :: Int -> Int\r\ncirculo' n = length [(x,y) | x <- [0..m], y <- [0..m], x^2+y^2 < n^2]\r\n    where m = raizCuadradaEntera n\r\n\r\n-- (raizCuadradaEntera n) es la parte entera de la ra\u00edz cuadrada de\r\n-- n. Por ejemplo,\r\n--    raizCuadradaEntera 17  ==  4 \r\nraizCuadradaEntera :: Int -> Int\r\nraizCuadradaEntera n = truncate (sqrt (fromIntegral n))\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 8.1. Definir la funci\u00f3n aproxE tal que (aproXE n) es la\r\n-- lista cuyos elementos son los t\u00e9rminos de la sucesi\u00f3n (1+1\/m)**m\r\n-- desde 1 hasta n. Por ejemplo, \r\n--    aproxE 1 == [2.0]\r\n--    aproxE 4 == [2.0,2.25,2.37037037037037,2.44140625]\r\n-- ---------------------------------------------------------------------\r\n\r\naproxE n = [(1+1\/m)**m | m <- [1..n]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 8.2. \u00bfCu\u00e1l es el l\u00edmite de la sucesi\u00f3n (1+1\/m)**m ?\r\n-- ---------------------------------------------------------------------\r\n\r\n-- El l\u00edmite de la sucesi\u00f3n es el n\u00famero e. \r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 8.3. Definir la funci\u00f3n errorE tal que (errorE x) es el\r\n-- menor n\u00famero de t\u00e9rminos de la sucesi\u00f3n (1+1\/m)**m necesarios para\r\n-- obtener su l\u00edmite con un error menor que x. Por ejemplo,\r\n--    errorAproxE 0.1    ==  13.0\r\n--    errorAproxE 0.01   ==  135.0\r\n--    errorAproxE 0.001  ==  1359.0\r\n-- Indicaci\u00f3n: En Haskell, e se calcula como (exp 1).\r\n-- ---------------------------------------------------------------------\r\n\r\nerrorAproxE x = head [m | m <- [1..], abs((exp 1) - (1+1\/m)**m) < x]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 9.1. Definir la funci\u00f3n aproxLimSeno tal que \r\n-- (aproxLimSeno n) es la lista cuyos elementos son los t\u00e9rminos de la\r\n-- sucesi\u00f3n  \r\n--    sen(1\/m) \r\n--    --------\r\n--      1\/m \r\n-- desde 1 hasta n. Por ejemplo,\r\n--    aproxLimSeno 1 == [0.8414709848078965]\r\n--    aproxLimSeno 2 == [0.8414709848078965,0.958851077208406]\r\n-- ---------------------------------------------------------------------\r\n\r\naproxLimSeno n = [sin(1\/m)\/(1\/m) | m <- [1..n]] \r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 9.2. \u00bfCu\u00e1l es el l\u00edmite de la sucesi\u00f3n sen(1\/m)\/(1\/m) ?\r\n-- ---------------------------------------------------------------------\r\n\r\n-- El l\u00edmite es 1.\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 9.3. Definir la funci\u00f3n errorLimSeno tal que \r\n-- (errorLimSeno x) es el menor n\u00famero de t\u00e9rminos de la sucesi\u00f3n \r\n-- sen(1\/m)\/(1\/m) necesarios para obtener su l\u00edmite con un error menor\r\n-- que x. Por ejemplo, \r\n--    errorLimSeno 0.1     ==   2.0\r\n--    errorLimSeno 0.01    ==   5.0\r\n--    errorLimSeno 0.001   ==  13.0\r\n--    errorLimSeno 0.0001  ==  41.0\r\n-- ---------------------------------------------------------------------\r\n\r\nerrorLimSeno x = head [m | m <- [1..], abs(1 - sin(1\/m)\/(1\/m)) < x]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 10.1. Definir la funci\u00f3n calculaPi tal que (calculaPi n) es\r\n-- la aproximaci\u00f3n del n\u00famero pi calculada mediante la expresi\u00f3n\r\n--    4*(1 - 1\/3 + 1\/5 - 1\/7 + ...+ (-1)**n\/(2*n+1))\r\n-- Por ejemplo,\r\n--    calculaPi 3    ==  2.8952380952380956\r\n--    calculaPi 300  ==  3.1449149035588526\r\n-- ---------------------------------------------------------------------\r\n\r\ncalculaPi n = 4 * sum [(-1)**x\/(2*x+1) | x <- [0..n]]\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 10.2. Definir la funci\u00f3n errorPi tal que \r\n-- (errorPi x) es el menor n\u00famero de t\u00e9rminos de la serie\r\n--    4*(1 - 1\/3 + 1\/5 - 1\/7 + ...+ (-1)**n\/(2*n+1))\r\n-- necesarios para obtener pi con un error menor que x. Por ejemplo,\r\n--    errorPi 0.1    ==    9.0\r\n--    errorPi 0.01   ==   99.0\r\n--    errorPi 0.001  ==  999.0\r\n-- ---------------------------------------------------------------------\r\n\r\nerrorPi x = head [n | n <- [1..], abs (pi - (calculaPi n)) < x]\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy del curso Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas) se han comentado las soluciones de los ejercicios 7 a 10 de la 4\u00aa relaci\u00f3n sobre definiciones por comprensi\u00f3n. Los ejercicios y sus soluciones se muestran a continuaci\u00f3n<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","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":[1],"tags":[298],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2250"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=2250"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2250\/revisions"}],"predecessor-version":[{"id":2646,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2250\/revisions\/2646"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=2250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=2250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=2250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}