Dibujar Funciones A Trozos Discontinuas Con Sagemath

por | 18 marzo, 2012

Hola, hace tiempo que quería saber dibujar funciones a trozos discontinuas con algún software matemático, pero la falta de tiempo libre y las ganas siempre ganaban. Hoy he tenido tiempo para investigar un poco.

Primero lo he intentado con WxMaxima, pero me unía las discontinuidades con el comando wxplot2d, lo he solucionado cargando el paquete draw, pero el código es demasiado largo. Me  he ido a Sagemath mediante la ejecución de Cantor, y he obtenido resultados óptimos y con muy poco código. Definitivamente Sagemath es de lejos el mejor software matemático actualmente, junto con Geogebra. Los dos son libres y muy bien presentados.

Veamos un  par de ejemplos,

f(x)=    \begin{cases}    4 & \mbox{si}\quad x<-2 \\    -2x & \mbox{si}\quad -2\le x\le 0 \\    x^2+1 & \mbox{si}\quad x>0    \end{cases}

Esta función presenta una discontinuidad de salto finito. La definiremos en Sagemath con el comando Piecewise, y la dibujaremos con el comando plot. Aquí el código:

x=var(‘x’);

f=Piecewise([[(-5,-2),4],[(-2,0),-2*x],[(0,5),x^2+1]])

f.plot( ).show(xmin=-4, xmax=4, ymin = 0, ymax = 5, aspect_ratio=1)

Veamos un último ejemplo con una función a trozos que presenta una discontinuidad de salto infinito, la función es la siguiente:

f(x)=    \begin{cases}    \frac{1}{x} & \mbox{si}\quad x<0 \\    \sqrt{x} & \mbox{si}\quad x\ge 0 \\    \end{cases}

Para dibujarla utilizaremos los dos comandos anteriores junto con la suma del comando line para dibujar las semi-asíntotas verticales y horizontales, coincidente con los ejes. El código es:

g=Piecewise([[(-5,0),1/x],[(0,5),sqrt(x)]])

g.plot( xmin=-4, xmax=4, ymin = -5, ymax = 5, aspect_ratio=1,detect_poles=’show’)+ line([(0,-5), (0,0)],color=’red’,linestyle=’–‘,thickness=’2′)+ line([(-5,0), (0,0)],color=’red’,linestyle=’–‘,thickness=’2’)

Y los resultados son los siguientes:

Saludos

12 pensamientos en “Dibujar Funciones A Trozos Discontinuas Con Sagemath

  1. Halmazan

    Y pregunto:¿por qué no con Geogebra?
    Si[x < -2, 4, Si[-2 ≤ x ≤ 0, -2x, x²]]

  2. MCO_heterocedástico

    Sería interesante que explicaras como instalarlo, ya sea con un comando o lo que sea. Cantor es fácil instalar pero pide unos paquetes adicionales en la web oficial de sagemath.
    Lo otro que considero muy importante en la presentación de un programa, más que un ejemplo, es una demostración de uso básica. Me has demostrado que te manejas bien con el programa pero eso no nos sirve. “gracias”
    Siento ser un poco brusco, pero me dejas un poco en ascuas. Aún así gracias por la información, vaga pero suficiente para que me busque la vida.

  3. Tobal Autor

    @Halmazan-> Pues supongo que me desesperé con el wxMaxima que no me salía (me unía las discontinuidades) y me tiré a Sagemath que me ha resuelto más de una cosa, como dibujar campos vectoriales. No pensé en Geogebra, me va a venir de cine porque así conecto con LyX.
    @alotro-> Sinceramente, busca en mi blog y sabrás sobre Sagemath y Cantor. En cuanto a la utilidad, lo hago porque quiero, y además soy profe de mates y quería poder dibujarlas para ponerlas en una pizarra digital a los alumnos, debido a mis problemas motrices. Pero eso a ti no te incumbe.

    No se porqué tengo que justificar en mi blog personal todo aquello que escribo, esto es demencial. Se ve que hay gente que se aburre y por eso escribe lo que le viene en gana.

  4. Halmazan

    Desde luego aparenta más potente que Geogebra, aunque por lo poco visto, su manejo no parece tan sencillo. Me interesa que mis alumnos (también soy profe de mates) puedan hacer lo que yo hago (o puedan intentarlo :mrgreen: )
    Lo que no me gusta demasiado de Geogebra es su desempeño gráfico cuando los objetos se hacen un poco pesados (el otro día escribí una hiperbola dependiente de parámetros, calculé sus asíntotas y cuando pretendí animar el resultado, el parámetro iba a saltos )
    Respecto a conectar con Lyx, ¿te refieres a Sage o a Geogebra? En su momento lo instalé, pero me dió vagancia.

  5. MCO_heterocedástico

    Tobal:
    Estuve mirando en el índice y es cierto que tienes otro artículo sobre Sage, un poco más amplio. (pudiste poner el enlace). Ahora vamos con la cera:

    Aún así como no todos usamos KDE, hay que instalar Cantor y seguro no sabías que cantor viene incompleto (sin los paquetes de sage). En la página de Sage se pueden descargar pero para su instalación no dan precisamente un .rpm o .deb. Como no quieres compartir eso, lo comparto yo mismo:
    Se puede descargar desde:

    http://sunsite.rediris.es/mirror/sagemath/linux/index.html

    Si viene en .tar.lzma hay que descomprimirlo. Ejemplo:

    tar –lzma -xvf sage-4.8-linux-32bit-ubuntu_10.04_lts-i686-Linux.tar.lzma

    Aunque dice Ubuntu 10.04 y no lo he probado en debian, es posible que funcione bien. Yo estoy usando Linux Mint 12 (oneric) y funciona bien. Supongo que todo queda en familia.

    Luego abrimos Cantor y en preferencias seleccionamos “configurar Cantor” y en la ventana emergente veremos a la izquierda un icono de SAGE, le damos click y pide que pongamos una dirección. Buscamos dándole click al icono de carpetita y en la carpeta de Sage que hemos descomprimido seleccionamos el script SAGE. Finalmente aplicamos y aceptamos todo, y damos en “nuevo” (en la barra de herramientas de cantor) y nos preguntará si quiere que Sage sea el motor, decimos que si y listo.
    No te culpo, si usas KDE no tenías que saber eso.
    Pero si lo sabías y lo omitiste porque crees que es para tontos, pues tontos o listos, todos preferimos el detalle.

    Es cierto que es tu blog pero lo que te dije no fue por hacerte la puñeta sino de forma constructiva. Se pueden hacer artículos muy buenos sobre todos estos programas, R, gretl, etc pero si no se explica lo elemental tenemos un problema. Aunque no estudié precisamente matemáticas mi carrera se desbordaba en ella y utilizo herramientas matemáticas continuamente. Por suerte todos los profesores de matemática que tuve han sido grandísimos pedagogos. Existen dos tipos de profesores, los que enseñan y los que quieren demostrar que saben. Yo creo que los alumnos prefieren los que enseñan. Igualmente existen blogs que enseñan y otros que quieren demostrar algo.
    Y por favor, si puedes incluir el detalle de la instalación en un artículo le haces un favor a las matemáticas no a mí. Compartir es GNU/Linux.

  6. Tobal Autor

    Yo no he omitido nada, ni queriendo ni sin querer. Escribí sobre funciones discontinuas a trozos y cómo dibujarlas. Hace tiempo que no uso Ubuntu. Uso Mandriva 2011.0, para instalarlo es muy fácil, ambos programas están en los repositorios de Mandriva, se instalan y punto. No hay que hacer nada más.
    De hecho, me he preocupado de que los usuarios de Mandriva 2011.0 con 32 bits tengan una versión más actualizada, lo empaqueté yo mismo portándolo desde Cooker, en su versión 4.7.2.
    Como también empaqueto Maxima, wxMaxima, Geogebra, Sofastatistics, Carmetal, LyX, TeXMaker, etc. etc.
    He empaquetado durante tiempo con Launchpad para Ubuntu, hasta que me cansé.
    Antes de escribir te informas.

  7. MCO_heterocedástico

    Reconozco que no hemos empezado con buen pie. Siento ser brusco e incluso descortés en algunos casos, pero este artículo en sí mismo no hace ninguna referencia a Mandriva y puede generar confusión para los que no usan esa excelente distribución.
    Mandriva tiene muy buenos repositorios y seguro que incluye Cantor con Sage. Sin embargo, los repos de Ubuntu solo incluyen Cantor y supongo que Fedora lo mismo.
    Por esa razón me disgustó que no mencionases esa situación, algo que se puede entender, si usas Mandriva no tienes porqué saber los trapos sucios de otras distros. En su defecto expliqué anteriormente la forma de instalarlo.
    Me parece genial que realices el trabajo de empaquetar todos eso programas, el open source te lo tiene que agradecer. Pero al igual que no conocías los trapos sucios de Ubuntu sobre Cantor-Sage no me puedes exigir que me informe sobre todas aquellas personas que se dedican al empaquetamiento. En tu caso ya lo se, y te lo agradezco aunque como no uso Mandriva no me beneficio directamente.
    Prefiero cerrar esto y aunque no te pido que expliques como instalar sage en las más de 600 distros de linux, solo pido que se especifique cual usas para no generar confusión. Entiendo que es tu blog y puedes escribir lo que quieras y como quieras pero entenderás que lo que pido es coherente e intrínseco para un divulgación correcta.
    Más allá del mal entendido lo mejor es terminar expresando mis respetos.

  8. Pingback: Dibujar Funciones A Trozos Discontinuas Con Sagemath | Linux Music 3.0 | EDUDIARI 2.0 DE jluisbloc | Scoop.it

  9. Piensa-Ubuntu

    En algun tiempo igual necesite graficar y y utilice Lybniz, puedes chekrlo en mi blog, igual y te funciona.

  10. José Luis Tábara

    Discusiones sobre Sage. Quien iba a pensarlo. Yo intentaré también ser constructivo.

    1.- Si alguien quiere manejar SAGE, puede probarlo primero en su versión online. Cuando descubra su potencia seguro que es probable que lo instale.

    2.- Con respecto a las funciones a trozos, lo mejor es por supuesto definirla como función. Sin embargo si solamente te interesa la gráfica se puede hacer “sumando” gráficos. Por ejemplo

    plot(x+4, xmin=-4, xmax=-2) + plot(x^2, xmin=-2, xmax=2) + plot(-x+5, xmin=2, xmax=6)

    produce una función a trozos. Si estais interesados, sobre todo a nivel de secundaria (yo también soy profesor), se puede consultar esta manual que escribí hace algún tiempo y que ya está un poco desfasado.

    http://www.sagemath.org/es/Introduccion_a_SAGE.pdf

  11. José Luis Tábara

    Otra aportación. Por supuesto en Geogebra también se puede hacer con funciones condicionales. Si de nuevo solamente nos interesa la gráfica podemos escribir en la línea de comandos

    Funcion[x^2-3, -4,0]

    Esto nos dibuja un trozo de una parabola en el intervalo (-4,0). Si queremos más trozos, los escribimos poco a poco y vamos dibujando “a trozos” la función. Este método tiene la ventaja de que cada parte se puede modificar por separado y cambiarle colores, etc. También se puede escribir por ejemplo una función de la forma x^2+a, poner un deslizador para “a” y decirle a los alumnos que busquen el valor de “a” para que la función sea continua. Esos típicos problemas de primero de bachillerato de encontrar el valor del parámetro para que cierta función sea continua, pueden resolverse, de un modo manipulativo, de esta forma.

Los comentarios están cerrados.