{"id":5341,"date":"2016-03-02T15:37:04","date_gmt":"2016-03-02T14:37:04","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=5341"},"modified":"2016-03-03T15:37:52","modified_gmt":"2016-03-03T14:37:52","slug":"i1m2015-calculo-numerico-en-maxima","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2015-calculo-numerico-en-maxima\/","title":{"rendered":"I1M2015: C\u00e1lculo num\u00e9rico en Maxima"},"content":{"rendered":"<p>En la tercera parte de la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-15\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado las soluciones a los ejercicios de la relaci\u00f3n 25 en la que se propone definir en Maxima los procedimientos de c\u00e1lculo num\u00e9rico definidos en Haskell en la <a href=\"http:\/\/bit.ly\/1RKhn24\">relaci\u00f3n 21<\/a>.<\/p>\n<p>Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"text\">\n\/* ---------------------------------------------------------------------\n   Introducci\u00f3n                                                       \n   ---------------------------------------------------------------------\n   \n   En esta relaci\u00f3n se programan en Maxima funciones para resolver los\n   siguientes problemas de c\u00e1lculo num\u00e9rico:\n   + diferenciaci\u00f3n num\u00e9rica,\n   + c\u00e1lculo de la ra\u00edz cuadrada mediante el m\u00e9todo de Her\u00f3n,\n   + c\u00e1lculo de los ceros de una funci\u00f3n por el m\u00e9todo de Newton y\n   + c\u00e1lculo de funciones inversas.                                    *\/\n\n\/* ---------------------------------------------------------------------\n   Diferenciaci\u00f3n num\u00e9rica                                            \n   ------------------------------------------------------------------- *\/\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 1.1. Definir la funci\u00f3n derivada tal que derivada(a,f,x) es\n   el valor de la derivada de la funci\u00f3n f en el punto x con\n   aproximaci\u00f3n a. Por ejemplo,  \n      (%i2) derivada (0.001,sin,%pi);\n      (%o2) - 0.99999983333334\n      (%i3) derivada (0.001,cos,%pi);\n      (%o3) 4.999999583255033E-4\n   ------------------------------------------------------------------- *\/\n\nderivada (a,f,x) := (f(x+a)-f(x))\/a$  \n\n\/* ---------------------------------------------------------------------\n   Ejercicio 1.2. Definir las funciones derivadaBurda, derivadaFina y\n   derivadaSuper tales que \n      + derivadaBurda (f,x) es el valor de la derivada de la funci\u00f3n f \n        en el punto x con aproximaci\u00f3n 0.01,\n      + derivadaFina (f,x) es el valor de la derivada de la funci\u00f3n f \n        en el punto x con aproximaci\u00f3n 0.0001.\n      + derivadaSuper (f,x) es el valor de la derivada de la funci\u00f3n f \n        en el punto x con aproximaci\u00f3n 0.000001.\n   Por ejemplo,\n      (%i4) derivadaBurda (cos,%pi);\n      (%o4) 0.0049999583334736\n      (%i5) derivadaFina (cos,%pi);\n      (%o5) 4.999999969612645E-5\n      (%i6) derivadaSuper (cos,%pi);\n      (%o6) 5.000444502911705E-7\n   ------------------------------------------------------------------- *\/\n\nderivadaBurda (f,x) := derivada (0.01,    f,x)$  \nderivadaFina  (f,x) := derivada (0.0001,  f,x)$  \nderivadaSuper (f,x) := derivada (0.000001,f,x)$  \n\n\/* ---------------------------------------------------------------------\n   Ejercicio 1.3. Definir la funci\u00f3n derivadaFinaDelSeno tal que\n   (derivadaFinaDelSeno x) es el valor de la derivada fina del seno en\n   x. Por ejemplo,\n      (%i7) derivadaFinaDelSeno (%pi);\n      (%o7) - 0.99999999833333\n   ------------------------------------------------------------------- *\/\n\nderivadaFinaDelSeno (x) := derivadaFina (sin,x)$\n\n\/* ---------------------------------------------------------------------\n   C\u00e1lculo de la ra\u00edz cuadrada                                        \n   ------------------------------------------------------------------- *\/\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 2. El m\u00e9todo de Her\u00f3n para calcular la ra\u00edz cuadrada de\n   un n\u00famero se basa en las siguientes propiedades:\n   + Si y es una aproximaci\u00f3n de la ra\u00edz cuadrada de x, entonces \n     (y+x\/y)\/2 es una aproximaci\u00f3n mejor. \n   + El l\u00edmite de la sucesi\u00f3n definida por \n         x(0)   = 1 \n         x(n+1) = (x(n)+x\/x(n))\/2\n     es la ra\u00edz cuadrada de x.\n   \n   Definir, por iteraci\u00f3n con unless, la funci\u00f3n raiz tal que raiz(x) es\n   la ra\u00edz cuadrada de x calculada usando la  propiedad anterior. Por\n   ejemplo,  \n      (%i8) raiz (9);\n      (%o8) 3.000000001396984\n   ------------------------------------------------------------------- *\/\n\nraiz (x) := block ([y:1],\n  unless abs (y*y-x) < 0.00001 do\n    y : 0.5*(y+x\/y),\n  y)$  \n\n\/* ---------------------------------------------------------------------\n   Ceros de una funci\u00f3n                                               \n   ------------------------------------------------------------------- *\/\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 3. Los ceros de una funci\u00f3n pueden calcularse mediante el\n   m\u00e9todo de Newton bas\u00e1ndose en las siguientes propiedades:\n   + Si b es una aproximaci\u00f3n para el punto cero de f, entonces \n     b-f(b)\/f'(b) es una mejor aproximaci\u00f3n.\n   + el l\u00edmite de la sucesi\u00f3n x(n) definida por\n        x(0)   = 1 \n        x(n+1) = x(n)-f(x(n))\/f'(x(n))\n     es un cero de f.\n\n   Definir, por iteraci\u00f3n con unless, la funci\u00f3n puntoCero tal que\n   puntoCero(f) es un cero de la funci\u00f3n f calculado usando el \n   m\u00e9todo anterior. Por ejemplo, \n      (%i9) puntoCero (cos);\n      (%o9) 1.570796326794957\n   ------------------------------------------------------------------- *\/\n\npuntoCero (f) := block ([b:1],\n  unless abs (f(b)) < 0.00001 do\n     b : b - f(b) \/ derivadaFina (f,b),\n  float (b))$\n\n\/* ---------------------------------------------------------------------\n   Funciones inversas                                                 \n   ------------------------------------------------------------------- *\/\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.1. En este ejercicio se usar\u00e1 la funci\u00f3n puntoCero para\n   definir la inversa de distintas funciones.\n\n   Definir, usando puntoCero, la funci\u00f3n raizCuadrada tal que\n   raizCuadrada x es la ra\u00edz cuadrada de x. Por ejemplo,\n      (%i10) raizCuadrada (9);\n      (%o10) 3.000000002941184\n   ------------------------------------------------------------------ *\/\n\nraizCuadrada (a) := block (\n    local (f),\n    f (x) := x^2-a,  \n    puntoCero (f))$\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.2. Definir, usando puntoCero, la funci\u00f3n raizCubica tal\n   que raizCubica (x) es la ra\u00edz c\u00fabica de x. Por ejemplo, \n      (%i11) raizCubica (27);\n      (%o11) 3.000000000019604\n   ------------------------------------------------------------------- *\/\n\nraizCubica (a) := block (\n  local (f),\n  f (x) := x^3-a,  \n  puntoCero (f))$\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.3. Definir, usando puntoCero, la funci\u00f3n arcoseno tal que\n   arcoseno(x) es el arcoseno de x. Por ejemplo, \n      (%i12) arcoseno (1);\n      (%o12) 1.566548942830657\n   ------------------------------------------------------------------ *\/\n\narcoseno (a) := block (\n  local (f),\n  f (x) := sin (x) - a,  \n  puntoCero (f))$\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.4. Definir, usando puntoCero, la funci\u00f3n arcocoseno tal\n   que arcocoseno(x) es el arcoseno de x. Por ejemplo, \n      (%i13) arcocoseno (0);\n      (%o13) 1.570796326794957\n   ------------------------------------------------------------------ *\/\n\narcocoseno (a) := block (\n  local (f),\n  f (x) := cos (x) - a,  \n  puntoCero (f))$\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.5. Definir, usando puntoCero, la funci\u00f3n inversa tal que\n   inversa(g,a) es el valor de la inversa de g en a Por ejemplo, \n      (%i14) cuadrado (x) := x^2$\n      (%i15) inversa (cuadrado,9);\n      (%o15) 3.000000002941184\n      (%i16) inversa (lambda ([x], x^2), 9);\n      (%o16) 3.000000002941184\n   ------------------------------------------------------------------ *\/\n\ninversa (g,a) := block (\n  local (f),\n  f (x) := g (x) - a,  \n  puntoCero (f))$\n\n\/* ---------------------------------------------------------------------\n   Ejercicio 4.6. Redefinir, usando inversa, las funciones raizCuadrada,\n   raizCubica, arcoseno y arcocoseno. Por ejemplo,\n      (%i17) raizCuadradaI (9);\n      (%o17) 3.000000002941184\n      (%i18) raizCubicaI (9);\n      (%o18) 2.080083824207376\n      (%i19) arcosenoI (1);\n      (%o19) 1.566548942830657\n      (%i20) arcocosenoI (0);\n      (%o20) 1.570796326794957\n   ------------------------------------------------------------------ *\/\n\nraizCuadradaI (a) := inversa (lambda ([x], x^2), a)$\nraizCubicaI   (a) := inversa (lambda ([x], x^3), a)$\narcosenoI     (a) := inversa (sin, a)$  \narcocosenoI   (a) := inversa (cos, a)$\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la tercera parte de la clase de hoy de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos comentado las soluciones a los ejercicios de la relaci\u00f3n 25 en la que se propone definir en Maxima los procedimientos de c\u00e1lculo num\u00e9rico definidos en Haskell en la relaci\u00f3n 21. Los ejercicios y su soluci\u00f3n se muestran&#8230;<\/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":[250],"tags":[310,281],"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\/5341"}],"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=5341"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5341\/revisions"}],"predecessor-version":[{"id":5342,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5341\/revisions\/5342"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=5341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=5341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=5341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}