Está en la página 1de 13

ALGEBRA LINEAL CON MATLAB

PRACTICA SOBRE TRANSFORMACIONES LINEALES 2012

Al abordar el estudio del álgebra lineal se han encontrado a menudo con conceptos muy
abstractos y que en muchos casos no tienen conexión con argumentos geométricos o
físicos. Es muy posible que hayan sentido que los contenidos estudiados no tienen relación
con la realidad.

Si tenemos en cuenta que los sentidos son los canales por los cuales accedemos a la
información, surge casi inevitablemente la importancia de la “visualización” de los
conceptos que aclara y facilita la comprensión y que además está estrechamente vinculada
con modelos mentales intuitivos, simbolización y modelado, y es de gran utilidad para unir
la intuición y el rigor requerido para el pensamiento matemático.

Las transformaciones lineales, se presentan muchas veces como conceptos abstractos, sin
embargo muchas de ellas están presentes en la vida diaria como cuando “nos miramos al
espejo”.

Muchas de las
transformaciones lineales
que hemos estudiado,
conservan la forma y las
medidas de las figuras u
objetos, como por ejemplo
las simetrías y las rotaciones otras sin embargo pueden modificar sus dimensiones como las
homotecias y en algunos casos también sus formas como las proyecciones.

Con el software Matlab es posible visualizar los efectos que produce una transformación
lineal sobre una figura. Los siguientes son ejemplos de archivos .m de comandos y de
función que muestran algunos de estos efectos.
Las siguientes son matrices asociadas de algunas transformaciones lineales en el
espacio respecto de la base canónica de R 2 :

k 0 Expansión por un factor k, a lo largo del eje X si k > 1

0 1 Contracción por un factor k, a lo largo del eje X si 0<k<1

1 0 Expansión por un factor k, a lo largo del eje Y si k  1

0 k Contracción por un factor k, a lo largo del eje Y si 0< k<1

k 0 Expansión por un factor k, en ambas direcciones si k>1

0 k Contracción por un factor k, en ambas direcciones si 0< k< 1

1 0
Reflexión respecto del eje X
0 -1

0 -1
-1 0

0 1 Reflexión respecto del eje Y

0
cos1  -sen
Rotación con c entro en el origen de c oordenadas y

sen cos Ángulo 

sen  cos
El procedimiento a seguir es el siguiente:

1º Se ingresa en una matriz las componentes de los vértices de la figura plana en cada
columna, repitiendo al final el primer vértice de manera que se cierre la figura.

2º Se forman los vectores x e y de las abscisas y ordenadas de los vértices y se


realiza la gráfica de la figura.

3º Se realiza el producto A*T a fin de obtener las imágenes.


4º Se construyen los vectores x1, y1 de las abscisas y ordenadas de las imágenes y
se realiza la gráfica, en una misma gráfica, de la transformación de la figura.

Las siguientes son matrices asociadas de algunas transformaciones lineales en el


espacio respecto de la base canónica de R 3 :

1 0 0

0 cos  - sen  Rotación alrededor del eje X un ángulo 

0 sen  cos 
cos  0 -sen 

0 1 0 Rotación alrededor del eje Y un ángulo 

sen  0 cos 

cos  -sen  0

sen  cos  0 Rotación alrededor del eje Z un ángulo 

0 0 1
k 0 0

0 k 0 Expansión por un factor k, si k  1

0 0 k Contracción por un factor k , si 0  k  1


1 0 0

0 1 0 Proyección sobre el plano XY

0 0 0
0 0 0

0 1 0 Proyección sobre el plano YZ

0 0 1

1 0 0

0 -1 0 Reflexión respecto del eje X

0 0 -1
1 0 0

0 -1 0 Reflexión respecto del plano XZ

0 0 1
Ejemplo 1.

La transformación lineal f: R 2  R 2 tal que f ( x, y )  ( x,5 y ) aplicada esta T.L. al


triángulo de vértices (o,o), (2,5) y (6,3),

Solución

La matriz asociada a esta transformación lineal respecto de la base canónica de R2


1 0
es:  produce una expansión a lo largo del eje Y.
0 5

Para ingresar los vértices seguimos un orden para que sea un contorno cerrado P Q R P, la
primera fila corresponde a las abscisas y la segunda fila a las ordenadas.

% Código:

% Se ingresa en una matriz las componentes de los vertices de un triangulo en cada


% columna, repitiendo al final el primer vertice de manera que se cierre el triangulo
T=[0 2 6 0;0 5 3 0];

% La primera fila de p corresponde a las componentes de los vertices en el eje X


% La segunda fila de p corresponde a las componentes de los vertices en el eje Y
% Se guardan estas filas en las variables x, y para poder realizar la grafica del triangulo
x=T(1,:);y=T(2,:);

plot(x,y) % realiza la grafica del triangulo original

title('EXPANSION A LO LARGO DEL EJE Y')

A=[1 0; 0 5]; % introduce la matriz asociada a la transformacion lineal


Im=A*T; % Calcula la matriz Im cuyas columnas son las imagenes de los vertices del triangulo original
hold on % congela la ventana grafica
x1=Im(1,:);y1=Im(2,:); % x1,y1 son vectores fila que contienen las primeras y segundas componentes
respectivamente de los vertices transformados
plot(x1,y1,'r') % dibuja el triangulo transformado y el trazo de este es de color rojo

grid % añade cuadricula a la grafica

hold off % desactiva el hold

% Fin de código

si se lo ejecuta desde la ventana de comandos, produce el siguiente gráfico:


Ejemplo 2: Proyección de un triángulo sobre el plano XY

% Se ingresa en una matriz las componentes de los vertices de un triangulo en cada


% columna,repitiendo al final el primer vertice de manera que se cierre el triangulo
p=[3 0 2 3;1 -2 1 1;0 1 3 0];
% La primera fila de p corresponde a las componentes de los vertices en el eje X
% La segunda fila de p corresponde a las componentes de los vertices en el eje Y
% La tercera fila de p corresponde a las componentes de los vertices en el eje Z

% Se guardan estas filas en las variables x, y, z para poder realizar la grafica del triangulo
x=p(1,:);y=p(2,:);z=p(3,:);
plot3(x,y,z,'b') % realiza la grafica del triangulo original
title('PROYECCION DE UN TRIANGULO SOBRE EL PLANO XY')
a=[1 0 0;0 1 0;0 0 0]; % introduce la matriz asociada a la transformacion lineal
pt=a*p; % Calcula la matriz pt cuyas columnas son las imagenes de los vertices del triangulo original
hold on % congela la ventana grafica
xt=pt(1,:);yt=pt(2,:);zt=pt(3,:); % xt,yt y zt son vectores fila que contienen las primeras, segundas y terceras
componentes respectivamente de los vertices transformados
fill3(xt,yt,zt,'r') % dibuja el triangulo transformado y lo pinta de rojo
grid % añade cuadricula a la grafica
hold off % desactiva el hold

si se lo ejecuta desde la ventana de comandos, produce el siguiente gráfico:


Ejemplo 3: a una carita se le aplica una simetría respecto del eje Y

% dibujo una carita


% la cara
t=-3:.01:3;x=2*cos(t)+2;y=2*sin(t)+2;
fill(x,y,'y')
axis([-8 8 0 8])
axis equal
hold on
% los ojos
plot(1,2.5,'ko');plot(3,2.5,'kh')
% la boca
x1=1:.1:3;y1=-cos(x1-2)+2;
fill(x1,y1,'r')
title('le aplico una simetria respecto del eje Y')
pause
a=[-1 0;0 1];
IC=a*[x;y]; % obtengo la imagen de la cara
IB=a*[x1;y1]; % obtengo la imagen de la boca
Iojos=a*[1 3;2.5 2.5]; % obtengo la imagen de los ojos
xim=IC(1,:);yim=IC(2,:);
x1im=IB(1,:);y1im=IB(2,:);
x1ojos=Iojos(1,1);y1ojos=Iojos(2,1);x2ojos=Iojos(1,2);y2ojos=Iojos(2:2);
fill(xim,yim,'y')
fill(x1im,y1im,'r')
plot(x1ojos,y1ojos,'ko');plot(x2ojos,y2ojos,'kh')
title('SIMETRIA RESPECTO DEL EJE Y')
hold off
al ejecutarlo se obtienen los siguientes gráficos:

Ejemplo 4: archivo que dibuja una casa y le aplica diversas transformaciones lineales

%Programa para ilustrar los efectos gráficos de una aplicación lineal


H=[- 6 -6 -7 0 7 6 6 -3 -3 0 0 -6; -7 2 1 8 1 2 -7 -7 -2 -2 -7 -7];
x=H(1,:)';y=H(2,:)';plot(x,y);
axis([-10 10 -10 10]); axis('square');
pause
A=[cos(pi/4) -sin(pi/4);sin(pi/4) cos(pi/4)];
B=A*H;
x=B(1,:)';y=B(2,:)';plot(x,y); title('Rotacion de un angulo de 45º')
pause
A=[1 0;0 -1];
B=A*H;
x=B(1,:)';y=B(2,:)';plot(x,y); title('Simetría respecto OX')
pause
A=[-1 0;0 1];
B=A*H;
x=B(1,:)';y=B(2,:)';plot(x,y); title('Simetría respecto OY')
pause
A=[-1 0;0 -1];
B=A*H;
x=B(1,:)';y=B(2,:)';plot(x,y); title('Simetría respecto O')
pause
A=[0.5 0.2;0.2 0.5];
B=A*H;
x=B(1,:)';y=B(2,:)';plot(x,y);title('La deformamos')
% El aula virtual de Algebra Lineal

al ejecutarlo, se observa la siguiente sucesión de gráficos:


También pueden aplicar transformaciones a curvas en el espacio, como por ejemplo:

Ejemplo 5: Expandimos una hélice

% Transformacion de una curva en el espacio


t = 0:pi/50:10*pi;
x=sin(t);y=cos(t);z=t;
plot3(x,y,z,'m');
title('HELICE')
hold on
grid
%Aplicamos la transformacion que la expande un factor K=2 en todas las direcciones
puntos=[x;y;z];
M=[2 0 0;0 2 0;0 0 2];
Im=M*puntos;
xim=Im(1,:);yim=Im(2,:);zim=Im(3,:);
plot3(xim,yim,zim,'r')

al ejecutar este archivo, Matlab nos devuelve el siguiente gráfico:

Ejemplo 6: La transformación lineal f: R 3  R 3 tal que f ( x, y , z )  (5 x,5 y ,5 z )


produce una expansión a lo largo del eje Y. Aplicada esta T.L. al tetraedro de vértices P
=(-1,6,0), Q = (0,2,0),R =(2,4,0), y S = (0,4,5)

Se debe escribir el orden que siguió para unir estos puntos (por ejemplo: P, Q, R, P, S,
R,Q, S). Forme los vectores x, y y z con las primeras, segundas y
terceras componentes respectivamente de estos puntos en el orden establecido

%Programa para ilustrar los efectos gráficos de expansion por un factor k en un tetraedro
T=[-1 0 2 -1 0 2 0 0 -1 ;6 2 4 6 4 4 2 4 6 ;0 0 0 0 5 0 0 5 0];

% La primera fila de p corresponde a las componentes de los vertices en el eje X


% La segunda fila de p corresponde a las componentes de los vertices en el eje Y
% La tercera fila de p corresponde a las componentes de los vertices en el eje Z

x=T(1,:);y=T(2,:);z=T(3,:);
plot3(x,y,z,'b')

title('EXPANSION POR UN FACTOR')


A=[2 0 0;0 2 0;0 0 2]; % introduce la matriz asociada a la transformación lineal
pt=A*T; % Calcula la matriz pt cuyas columnas son las imágenes de los vértices del tetraedro original

hold on % congela la ventana grafica


xt=pt(1,:);yt=pt(2,:);zt=pt(3,:);

plot3(xt,yt,zt)

grid % añade cuadricula a la grafica


Tarea 1: Realizar un archivo .m de función que permite aplicarle a una figura en el plano, cualquier
transformación lineal, ingresando desde el teclado su matriz asociada.

function M=transformacion(A) % linea que define la funcion


%_________________________________________________________________
% Archivo de funcion que permite aplicar diversas transformaciones % lineales a
% una figura dada, ingresando la matriz asociada desde el teclado
%_________________________________________________________________
disp(' __________________________________________________________')
disp('| Archivo de funcion que permite aplicar diversas transformaciones |')
disp('| lineales a una figura dada, ingresando la matriz asociada |')
disp('| desde el teclado |')
disp(' __________________________________________________________')
A=input('Ingrese la matriz asociada a la transformacion lineal de R2 en R2: ')
% dibuja la cara
t=-3:.01:3;x=cos(t)+1;y=sin(t)+1;
plot(x,y,'r')
grid
axis equal
hold on
% dibuja el cuerpo
x1=[4 1 0 1 1 1 -1 1 3 4];y1=[-2 0 -2 -3 0 -4 -8 -4 -5 -8];
plot(x1,y1,'r')
% forma la matriz de puntos
Pcara=[x;y];Pcuerpo=[x1;y1];
% aplica una transformacion lineal de R2 en R2 cuya matriz asociada es la ingresada A
Imcara=A*Pcara;
Imcuerpo=A*Pcuerpo; xim=Imcara(1,:);yim=Imcara(2,:);x1im=Imcuerpo(1,:);y1im=Imcuerpo(2,:);
plot(xim,yim,x1im,y1im,'b')
hold off
la figura original es la siguiente:

Nota: para introducir la matriz se debe colocar de esta manera: [ a b; c d];

También podría gustarte