9 | Manipulación interactiva |
Hasta ahora hemos usado Wolfram Language en forma de pregunta-respuesta: se escribe la entrada y el lenguaje contesta con la salida. Pero el lenguaje permite, además, construir interfaces para que el usuario pueda manipular variables de manera continua. La función Manipulate trabaja de modo parecido aTable, salvo que, en lugar de producirse una lista de resultados, aparece un control deslizante con el que se puede elegir interactivamente el valor deseado.
Con el control deslizante se pueden escoger valores de n entre 1 y 5 (en incrementos de 1):
In[1]:= |
Out[1]= |
Aquí aparece la secuencia completa de los resultados posibles:
In[2]:= |
Out[2]= |
Abajo se muestra una interfaz semejante a la anterior para presentar una columna con las potencias de un número:
In[3]:= |
Out[3]= |
Pero aquí se muestra la lista de todos los resultados posibles para este caso:
In[4]:= |
Out[4]= |
A diferencia de Table, Manipulate no se limita a un conjunto fijo de valores posibles. Simplemente con omitir la especificación del incremento en Manipulate, se dará por sentado que se usarán todos los valores posibles de la gama, sin limitarse a números enteros.
Si no se especifica el incremento, Manipulate adopta cualquier valor:
In[5]:= |
Out[5]= |
Un diagrama de barras que cambie al moverse el deslizador:
In[6]:= |
Out[6]= |
Un diagrama circular de la misma lista anterior:
In[7]:= |
Out[7]= |
Manipulate permite usar varios controles a la vez. Basta con dar la información para cada uno, de manera consecutiva.
Para construir una interfaz que permita variar el número de lados y la tonalidad de un polígono:
In[8]:= |
Out[8]= |
Hay muchas formas de especificar los controles para Manipulate. Si se le da una lista de valores posibles, se obtiene un selector o menú.
Construya una interfaz que permita elegir entre tres colores:
In[9]:= |
Out[9]= |
Si hay más posibilidades de elección, como por ejemplo el tamaño, Manipulate propone un menú desplegable:
In[10]:= |
Out[10]= |
Manipulate[algo,{n,0,10,1}] | manipula algo donde n varía de 1 en 1 | |
Manipulate[algo,{x,0,10}] | manipula algo donde x varía de manera continua |
1.1Cree un Manipulate para graficar números del 1 al 100, cada uno elevado a alguna potencia entre −1 y +1. »
1.1Escriba un Manipulate que muestre un disco de color especificado por sus componentes rojo, verde y azul, donde cada uno de estos varíe entre 0 y 1. »
1.1Formule un Manipulate que muestre secuencias de los dígitos de enteros de 4 dígitos (entre 1000 y 9999). »
1.1Cree un Manipulate para mostrar una lista de un número variable de hexágonos (entre 1 y 10), con tonalidades variables. »
1.1Escriba un Manipulate que muestre un polígono regular con entre 5 y 20 lados, de colores rojo, amarillo o azul. »
1.1Cree un Manipulate que muestre un diagrama circular con un número (entre 1 y 10) de segmentos iguales. »
1.1Escriba un Manipulate que produzca un diagrama de barras de los tres dígitos que tiene cada entero entre 100 y 999. »
1.1Proponga un Manipulate que muestre una gráfica de barras con cuatro barras, cada una de una altura entre 0 y 10. »
1.1Escriba un Manipulate para mostrar una columna de potencias enteras, con bases del 1 al 25 y exponentes del 1 al 10. »
1.1Cree un Manipulate para mostrar los valores de x^n en una recta numérica , donde x sea un entero entre 1 y 10, y donde n varíe entre 0 y 5. »
Pues sí, aunque tal vez sea significativamente más lento en la web y en algunos dispositivos móviles, ya que, cada vez que se mueve un deslizador, el sistema debe comunicarse con un servidor a través de internet para determinar lo que haya que hacerse. En computadoras y algunos dispositivos móviles todo sucede ahí mismo, dentro del mismo equipo o dispositivo, así que es muy rápido.
Sí. Para hacer una aplicación web, por ejemplo, simplemente hay que utilizar CloudDeploy. Este tema se tocará en la Sección 36.
Sí, pero, a menos que se utilice una “semilla” usando SeedRandom, los números aleatorios serán diferentes cada vez que se mueva algún deslizador.
El Proyecto de demostraciones Wolfram contiene más de 11 000 demostraciones interactivas creadas con Manipulate