jueves, 15 de mayo de 2008

Rompecabezas
















En la última reunión del grupo se planteó la idea de hacer un rompecabezas con fotos. Aquí está mi primera versión.
La foto se divide en cuadrados, y el usuario tiene que desordenarlos con el ratón para luego volver a ordenarlos. Las reglas son las clásicas, solo se puede mover una ficha a la posición del agujero cuando esta es adyacente al agujero.
Funciona completamente, pero de momento solamente trabaja con fotos cuya resolución sea igual a la foto que utilicé para diseñarlo (por cierto que la elección de la foto no fue muy afortunada).

sábado, 10 de mayo de 2008


Dada una función


y un conjunto de valores de x {xi} i=1,2,....,n se pide hallar el valor del parámetro k para el cual los correspondientes yi se aproximan más a números enteros.


El programa de la imagen calcula el error que se comete al aproximar los yi por enteros en función del k elegido. Para cada k, se toma como medida del error la mayor de las diferencias en valor absoluto, entre yi y el entero más próximo.

Está programado para que se pueda introducir la función f(x,k), los valores xi así como el intervalo en el que se debe buscar k.

Podeis ver el código en esta dirección:
o mandadme un email y os lo paso.

jueves, 8 de mayo de 2008

martes, 6 de mayo de 2008


El siguiente programa os permite representar los cilindros generados por dos funciones paramétricas, en distintas subventanas. Cada uno de los cilindros será representado con un tipo de superficie diferente. Disfrutarlo



Programa:

--------------------------------------------------------------------


%Este programa genera los cilindros definidos por las funciones 2+cos(t) y 2+sen(t) con

%tres sombreados distintos


t=0:pi/10:2*pi; %Intervalo de representación

subplot(2,3,1); %Primera subventana: por orden (nº filas, nº columnas,nºcuadro)

cylinder(2+cos(t));

title('Cilindro según función (2+cos(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading faceted %Cada una de las facetas del dibujo sale bordeada en negro(como si lo cubriera una malla)


t=0:pi/10:2*pi;

subplot(2,3,2);

cylinder(2+cos(t));

title('Cilindro según función (2+cos(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading flat %En la superficie se marcan líneas ligeras


t=0:pi/10:2*pi;

subplot(2,3,3);

cylinder(2+cos(t));

title('Cilindro según función (2+cos(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading interp %Es una superficie smooth ^^


subplot(2,3,4);

cylinder(2+sin(t));

title('Cilindro según función (2+seno(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading faceted


subplot(2,3,5);

cylinder(2+sin(t));

title('Cilindro según función (2+seno(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading flat


subplot(2,3,6);

cylinder(2+sin(t));

title('Cilindro según función (2+seno(x))')

xlabel('Eje x')

ylabel('Eje y')

zlabel('Eje z')

axis square

shading interp


El siguiente programa es un tipo function, que toma un vector fila b con números enteros y devuelve una matriz c donde la primera fila son los distintos elementos de b y la segunda fila son las veces que se repiten.

Ejemplo:

>> b=[0 0 0 1 0 2 2 9 9 9 9 1 1]
>> [c]=recontar(b)
c =
0 1 2 9
4 3 2 4

>>

Programa:
------------------------------------------------

function c=recontar(b)

%Este programa toma una matriz fila de números enteros b y devuelve una
%matriz c donde la primera fila son los elementos distintos de b ordenados
%de menor a mayor y la segunda fila son las veces que se repiten dichos
%elementos en b.


m=1;
reco=0;
b=sort(b);

%El siguiente bucle for analiza uno por uno los elementos de b, y lo anota en una matriz a junto con el número de veces que se repite.

for j=1:length(b)
for k=1:length(b)
if b(j)==b(k);
a(1,m)=b(j);
reco=reco+1;
end
end
a(2,m)=reco;
m=m+1;
reco=0;
end

...ahora tenemos una matriz a, pero aparecen datos repetidos, el siguiente bucle while va examinando la matriz a y copia a la matriz c cada dato una sola vez

j=1;
m=1;

while j$<$length(a(1,:))
if j+1==length(a(1,:))
c(1,m)=a(1,j);
c(2,m)=a(2,j);
m=m+1;

elseif a(1,j)~=a(1,j+1)
c(1,m)=a(1,j);
c(2,m)=a(2,j);
m=m+1;
end
j=j+1;
end



for t=1:inf
disp('Matlabers');
end