sábado, 6 de julio de 2013

Representación gráfica de vectores con wxMaxima

En esta entrada voy a explicar una forma de representar gráficamente vectores con wxMaxima. Después de probar varias formas y diferentes funciones, la que más se adapta a lo que necesito es utilizar lo siguiente:

draw2d(vector([0,0],[x,y]))

Sin embargo, he tenido que retocar algunas opciones para que el dibujo quede decente. Veamos el siguiente ejemplo: la representación del vector con coordenadas (2,-3).

draw2d(vector([0,0],[2,-3]))

Como podéis observar, el resultado muestra un vector "cabezón" y, además, estaría bien que la zona del plano representada fuera mayor que la estrictamente ocupada por el vector.

Para solucionar lo primero (el cabezón del vector) podemos utilizar la opción head_length. Es importante poner las opciones antes del vector. En nuestro ejemplo:
 
draw2d(head_length=0.2, vector([0,0],[2,-3]))

Y para cambiar la zona del plano representada utilizamos los parámetros xrange (para el eje X) e yrange (para el eje Y). En nuestro ejemplo:

draw2d(head_length=0.2, xrange=[-5,5], yrange=[-5,5], vector([0,0],[2,-3]))
 
Si además queremos que aparezcan los ejes en el dibujo activamos los parámetros xaxis e yaxis. En nuestro ejemplo:

draw2d(head_length=0.2, xrange=[-5,5], yrange=[-5,5],
xaxis=true, yaxis=true, vector([0,0],[2,-3]))

En caso de que queramos representar más de un vector en la gráfica, no tenemos más que añadir a la función los vectores correspondientes. Ejemplo: añadimos al vector del ejemplo anterior los vectores con coordenadas (-1, -1) y (-2,4):

draw2d(head_length=0.2, xrange=[-5,5], yrange=[-5,5],
xaxis=true, yaxis=true, vector([0,0],[2,-3]),
vector([0,0],[-1,-1]), vector([0,0],[-2,4]))

También podemos configurar los colores de los vectores, simplemente añadiendo el parámetro color delante de cada vector. En nuestro ejemplo queremos poner el primer vector de color rojo, el segundo de color azul y el tercero de color verde:

draw2d(head_length=0.2, xrange=[-5,5], yrange=[-5,5],
xaxis=true, yaxis=true, color=red, vector([0,0],[2,-3],
color=blue, vector([0,0],[-1,-1]), color=green, vector([0,0],[-2,4])))



Si os fijáis, desde el principio hemos estado utilizando vector([0,0],[x,y]) y es por eso que todos los vectores representados anteriormente empiezan en el origen de coordenadas. Si estamos interesados en representar gráficamente un vector que tiene su inicio en otro punto debemos cambiar [0,0] por las coordenadas del punto de inicio. En ese caso, debemos tener en cuenta que el segundo par de coordenadas NO se corresponde con las del punto final, sino que son las dimensiones orientadas del vector. Es decir, vector([1.5,-1.75],[2,-3]) representa un vector cuyo punto de origen es (1.5,-1.75) y que avanza 2 unidades en el eje X y baja 3 unidades en el eje de las Y. Lo representamos:

draw2d(head_length=0.2, xrange=[-5,5], yrange=[-5,5],
xaxis=true, yaxis=true, vector([1.5,-1.75],[2,-3]))

Hay muchas otras opciones en la función draw2d (como por ejemplo añadir grid=true si queremos visualizar la cuadrícula cartesiana) pero lo anterior cubre las necesidades básicas para representar gráficamente vectores de una manera satisfactoria.

Lo que sí puede resultar interesante es conocer que todo lo anterior funciona prácticamente igual con la función draw3d para representar gráficamente vectores en el espacio (añadiendo la tercera coordenada). Un ejemplo:

draw3d(head_length=0.2, xrange=[-4,4], yrange=[-4,4], zrange=[-4,4],
xaxis=true, yaxis=true, zaxis=true,
vector([0,0,0],[2,3,1]), color=red, vector([0,0,0],[-1,-1,-3]))
 

Entradas relacionadas:










No hay comentarios: