Fractales en Matlab



En esta ocasión hablaremos un poco acerca de fractales sencillos y de cómo podemos usar Matlab para crearlos. Primero sería bueno definir lo que es un Fractal, un Fractal es un objeto semi-geométrico cuya estructura básica, fragmentada o irregular, se repite a diferentes escalas. Es decir, si se aumenta cualquier zona de la misma un número cualquiera de veces seguirá pareciendo la misma figura.

Para comenzar, un ejemplo simple de un fractal creado mediante números reales es el triángulo de Sierpinski. Sólo se necesitan 3 pasos para crear éste fractal: Dibújese un triángulo equilátero ABC. Hállense los puntos medios de cada lado y conéctense para formar tres nuevas líneas dentro del triángulo original. Repetir para cada uno de los triángulos resultantes que estén “cabeza arriba”.

Para generar el triángulo de Sierpinski mediante Matlab se requiere el siguiente código:

function sierpinski (a,b,c,nivel)
hold on;
plot(a(1),a(2),'.');
plot(b(1),b(2),'.');
plot(c(1),c(2),'.');
if nivel>0
p1=[(a(1)+c(1))/2 (a(2)+c(2))/2];
p2=[(a(1)+b(1))/2 (a(2)+b(2))/2];
p3=[(c(1)+b(1))/2 (c(2)+b(2))/2];
sierpinski(a,p2,p1,nivel-1);
sierpinski(p1,p3,c,nivel-1);
sierpinski(p2,b,p3,nivel-1);
end

Ahora veamos un fractal un poco más complicado. Representaremos el conjunto de Julia, el cuál se encarga de analizar la función fc(z)=z2+c para distintos números complejos c y, para un número c fijo, con distintos valores de z. Para poder visualizar este conjunto en Matlab, con un valor de c = 0,27334 - 0.00742i, solamente se requiere el siguiente script:

puntos=200;
puntosx=linspace(-2.1,0.9,puntos);
puntosy=linspace(-1.5,1.5,puntos);
[X,Y]=meshgrid(puntosx,puntosy);
c=0.27334-0.00742*i;
Z=X+Y*i;
iteraciones=20;
for k=1:iteraciones
Z=Z.^2+c;
W=exp(-abs(Z));
end
pcolor(W);
shading flat;

Para obtener información más detallada de este tema y una gran cantidad de ejemplos, sólo visita las pags:

Puertos en Matlab

Anteriormente te hemos presentado algunos ejemplos de lo que Matlab es capaz de hacer. Se han mostrado algunas aplicaciones de Matlab en aparatos o robots programados.

Puede parecerte interesante, pero tal vez no tengas idea de cómo comenzar a trabajar con este tipo de programación. Es por ello que esta vez te presentamos algunas ligas de Documentos y Blogs que de manera muy sencilla y detallada muestran pasos simples para comenzar a manejar el envío y recepción de datos a través de puertos en tu computadora mediante Matlab.
www.compelect.com.co/otros/diamatlab/2005/PAPPERok.pdf
http://www.forosdeelectronica.com/about29748.html
http://www.planetcursos.com/curso/Njg1Mg

Laboratorio de Electricidad 2

Complementando el post anterior, aquí presento otra simulación de un mecanismo que muchos habrán visto en el laboratorio de Física, la máquina de Wimshurst, que crea un voltaje entre dos esferas haciendo girar un disco para cargarlas. Es genial la manera en que podemos recrear ciertos mecanismos con la ayuda de este software y un poco de creatividad.

El código lo encuentras en:

http://demonstrations.wolfram.com/WimshurstMachine/WimshurstMachine-source.nb

Cabe aclarar que este notebook está diseñado para Mathematica 7. Disfrútenlo!!

Diego V.

Laboratorio de Electricidad 1

Dentro de la infinidad de posibilidades que nos brinda Wolfram Mathematica, tenemos la simulación de diferentes mecanismos, incluidos aquellos que utilizamos a diario en la escuela.

Es así como podemos crear nuestro propio osciloscopio virtual, de aperiencia similar y mismas funciones que las de nuestro laboratorio. Fácil de manejar y con características sumamente útiles, solo debes cambiar las características de la onda y Mathematica hará el resto.

El código lu puedes encontrar en:

http://demonstrations.wolfram.com/VirtualOscilloscope/VirtualOscilloscope-source.nb

Diego V.

No sabes como leer una resistencia???

Muchos de los que estudiamos carreras de ingeniería eventualmente tendremos materias relacionadas con circuitos eléctricos. A su vez, esto implica que para nuestras prácticas debamos aprendernos el típico código de colores de las resistencias para así poder conocer su valor nominal.

Pues si eres nuevo en este campo, o en algún momento necesitas saber el valor de una resistencia y no sabes que significan las banditas de color en ella, aquí te presento un notebook de Mathematica que te ayudará de forma interactiva. Simplemente ingresa el siguiente código en tu software.

CÓDIGO:

Manipulate[
 With[{c1 = 
  Switch[color1, 0, Black, 1, Brown, 2, Red, 3, Orange, 4, Yellow, 
  5, Green, 6, Blue, 7, ColorData["HTML", "Violet"], 8, Gray, 9, 
  White], c2 = 
  Switch[color2, 0, Black, 1, Brown, 2, Red, 3, Orange, 4, Yellow, 
  5, Green, 6, Blue, 7, ColorData["HTML", "Violet"], 8, Gray, 9, 
  White], c3 = 
  Switch[color3, 0, Black, 1, Brown, 2, Red, 3, Orange, 4, Yellow, 
  5, Green, 6, Blue, 7, ColorData["HTML", "Violet"], 8, Gray, 9, 
  White],
  c4 = Switch[color4, 1, Brown, 2, Red, 3, ColorData["HTML", "Gold"],
  4, ColorData["HTML", "Silver"], 5, None]}, 
  Column[{Graphics3D[{Cylinder[{{0, 0, 0}, {4, 0, 0}}], 
  Cylinder[{{-3, 0, 0}, {7, 0, 0}}, .1], c1, 
  Cylinder[{{.3, 0, 0}, {.7, 0, 0}}, 1.05], c2, 
  Cylinder[{{1.3, 0, 0}, {1.7, 0, 0}}, 1.05], c3, 
  Cylinder[{{2.3, 0, 0}, {2.7, 0, 0}}, 1.05], 
  If[c4 === None, {}, {c4, 
  Cylinder[{{3.3, 0, 0}, {3.7, 0, 0}}, 1.05]}]}, Boxed -> False,
  ImageSize -> 400], 
  Text@Row[{"resistance", " = ", 
  Row[{FromDigits[{color1, color2}, 10], "\[Times]", 
  HoldForm[10]^color3, " ohms, ", 
  color4 /. {Brown -> 1, Red -> 2, 
  ColorData["HTML", "Gold"] -> 5, 
  ColorData["HTML", "Silver"] -> 10, None -> 20}, 
  "% tolerance"}]}]}, Alignment -> Center]], {{color1, 5, 
  "band 1"}, {0 -> "Black", 1 -> "Brown", 2 -> "Red", 3 -> "Orange", 
  4 -> "Yellow", 5 -> "Green", 6 -> "Blue", 7 -> "Violet", 
  8 -> "Gray", 9 -> "White"}}, {{color2, 8, "band 2"}, {0 -> "Black",
  1 -> "Brown", 2 -> "Red", 3 -> "Orange", 4 -> "Yellow", 
  5 -> "Green", 6 -> "Blue", 7 -> "Violet", 8 -> "Gray", 
  9 -> "White"}}, {{color3, 3, "band 3"}, {0 -> "Black", 
  1 -> "Brown", 2 -> "Red", 3 -> "Orange", 4 -> "Yellow", 
  5 -> "Green", 6 -> "Blue", 7 -> "Violet", 8 -> "Gray", 
  9 -> "White"}}, {{color4, 4, "tolerance"}, {1 -> "Brown", 
  2 -> "Red", 3 -> "Gold", 4 -> "Silver", 5 -> "none"}}]

Ejecútalo y simplemente deberas seleccionar el color de cada banda para que Mathematica te diga el valor exacto de tu resistor. Espero sea de utilidad para nuestros lectores.

Diego V.



Juega con Matlab

En esta ocasión Matlab nos muestra una función totalmente diferente a lo que habíamos visto antes. Ahora Matlab nos permite jugar y divertirnos.

Un grupo de estudiantes de Ingeniería Electrónica, durante un proyecto que tiene como función programar y controlar robots de Lego Mindstroms NXT mediante Matlab, se dieron a la tarea de crear un robot capaz de jugar gato (Tic Tac Toe).

Este robot es capaz de dibujar en una hoja de papel un tablero para dicho juego. Posteriormente el robot marca una da las casillas con una X, es ahí donde tu participas colocando un 0 en la casilla que quieras. Cuando estés listo solo presionas el botón del robot y este se encargará de leer el tablero mediante un lector óptico, se da cuenta de que casillas no están ocupadas, y marca una de ellas. El juego continúa de la misma manera hasta que salga un ganador.



Si quieres más información de este tipo de robots y lo que puedes hacer con ellos, visita:
http://mindstorms.lego.com/eng/Antarctica_dest/Default.aspx




Aplicación de Matlab

Una vez más Matlab nos sorprende con sus múltiples funciones y aplicaciones. En esta ocasión Matlab hace uso de uno de los juguetes de los que la mayoría de nosotros disfrutamos durante nuestra infancia, Lego.

Tres alumnos de la carrera de Mecatrónica, en el Instituto Tecnológico de Georgia, se dieron a la tarea de crear un Robot capaz de construir casas a partir de Lego. Lo interesante de este robot es que el sistema funciona a partir de un plano creado a través de Matlab.

El Robot se encarga de colocar piezas de lego apiladas siguiendo el modelo del plano que se creó previamente en Matlab y de esta manera comienza a generar las paredes y otros sólidos del plano. Una vez más nos podemos dar cuenta de la versatilidad de Matlab y de la infinidad de problemas que nos ayuda a resolver.


Crea tu propio Guitar Tuner con Mathematica.

Es increíble la manera en la que podemos relacionar las cosas en nuestras vidas, y lo es más aún cuando nos damos cuenta de que supuestos antagónicos, como la música y un software matemático por ejemplo, pueden llegar a tener más relación entre sí de la que creemos.

Si eres de las personas que disfrutan de la buena música, o mejor aún eres de aquellas que dan el siguiente paso y crean la suya propia, seguramente te topaste con el inconveniente de afinar tu instrumento.

Mathematica nos presenta una alternativa más conveniente. En lugar de comprar un afinador o buscar un software "Tuner" para tu instrumento en la red, puedes crear tu propio afinador para guitarra acústica, eléctrica y muchos otros instrumentos.

Simplemente descarga el código en el link : http://demonstrations.wolfram.com/GuitarTuner/

Córrelo en el software y listo!! Mathematica también para los músicos...

Diego V.