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,
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:
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