07_p_inf03.pdf

8
Espacios eucl´ ıdeos. Transformaciones ortogonales ´ Algebra con MATLAB: Pr´actica 3 Curso 2006-2007 Unaortogonalizaci´on Empezaremos esta pr´actica utilizando MATLAB para resolver el siguien- te problema: En el espacio eucl´ ıdeo R 5 , dotado del producto escalar ordinario, encontrar una base ortonormal del subespacio S = n (x, y, z, t, u) R 5 : x + y + z = 0 2z - u = 0 o Veamos primero dos comandos de MATLAB que resuelven el problema de forma directa. El comando null da una base ortonormal del n´ ucleode una aplicaci´on lineal. En este caso el subespacio S no es m´as que el n´ ucleo de la aplicaci´on(x, y, z, t, u) R 5 7(x + y + z, 2z - u) R 2 . Hay que proporcionarle como argumento a null la traspuesta de la matriz que nosotros asociamos a la aplicaci´on lineal, es decir, la matriz en la que los coeficientes de las sucesivas ecuaciones entran como filas. >> N=[1 1 1 0 0; 0 0 2 0 -1] N= 1 1 1 0 0 0 0 2 0 -1 >> null(N) ans = -0.7320 0 0.0981 0.5558 0 -0.4863 0.1762 0 0.3883 0 1.0000 0 0.3524 0 0.7766 1

Upload: horacio-gabriel-soto-santiago

Post on 11-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 07_p_inf03.pdf

Espacios euclıdeos. Transformaciones ortogonales

Algebra con MATLAB: Practica 3

Curso 2006-2007

Una ortogonalizacion

Empezaremos esta practica utilizando MATLAB para resolver el siguien-te problema:

En el espacio euclıdeo R5, dotado del producto escalar ordinario,encontrar una base ortonormal del subespacio

S ={

(x, y, z, t, u) ∈ R5 :x + y + z = 0

2z − u = 0

}

Veamos primero dos comandos de MATLAB que resuelven el problema deforma directa.

El comando null da una base ortonormal del nucleo de una aplicacionlineal. En este caso el subespacio S no es mas que el nucleo de laaplicacion (x, y, z, t, u) ∈ R5 7→ (x + y + z, 2z − u) ∈ R2. Hay queproporcionarle como argumento a null la traspuesta de la matriz quenosotros asociamos a la aplicacion lineal, es decir, la matriz en la quelos coeficientes de las sucesivas ecuaciones entran como filas.

>> N=[1 1 1 0 0; 0 0 2 0 -1]N =

1 1 1 0 00 0 2 0 -1

>> null(N)ans =

-0.7320 0 0.09810.5558 0 -0.48630.1762 0 0.3883

0 1.0000 00.3524 0 0.7766

1

Page 2: 07_p_inf03.pdf

Los vectores de la base ortonormal se obtienen como columnas de lamatriz respuesta.

El mismo comando con el argumento extra ’r’ proporciona una basedel nucleo en la que las componentes de los vectores son numerosenteros o racionales “razonables”, pero ya no sera ortogonal:

>> null(N,’r’)ans =

-1.0000 0 -0.50001.0000 0 0

0 0 0.50000 1.0000 00 0 1.0000

Otra posibilidad es utilizar el comando orth que, aplicado a una matrizarbitraria, devuelve otra cuyas columnas forman un sistema ortonor-mal que genera el mismo subespacio que las columnas de la matrizde partida. En este caso, hemos de partir de una base arbitraria delsubespacio, y no de sus ecuaciones. Podemos tomar por ejemplo laobtenida en el apartado anterior,

B = {(−1, 1, 0, 0, 0), (0, 0, 0, 1, 0), (−1/2, 0, 1/2, 0, 1)}

que ya esta almacenada por columnas en la matriz ans, resultado delcalculo anterior

>> orth(ans)ans =

-0.7328 0.0920 00.5598 -0.4817 00.1730 0.3897 0

0 0 1.00000.3460 0.7795 0

La solucion obtenida es distinta a la que nos dio el comando null. Elproblema de generar una base ortonormal de un determinado espaciotiene en general infinitas soluciones.

Los comandos a los que acabamos de referirnos proporcionan una solucionnumerica, que es la que se necesita para muchas de las aplicaciones. Vamosa intentar obtener una solucion exacta, que es la que nos gustarıa dar eneste caso (la que obtendrıamos haciendo las cuentas con papel y boli). Paraello lo mas comodo es utilizar variables simbolicas. Una forma de enfocar el

2

Page 3: 07_p_inf03.pdf

problema podrıa ser mediante la aplicacion del algoritmo de Gram-Schmidt.Como sabemos de teorıa, dada cualquier base B = {e1, e2, e3} de un espacioeuclıdeo S, las formulas

u1 = e1

u2 = e2 − e2 · u1

u1 · u1u1

u3 = e3 − e3 · u1

u1 · u1u1 − e3 · u2

u2 · u2u2

dan una base ortogonal del mismo espacio, que se convierte facilmente enuna base ortonormal dividiendo cada vector ui por su norma. (Por supuesto,estas formulas se pueden generalizar facilmente a dimensiones mayores que3, pero este es el caso que nos interesa aquı.)

Vamos a crear una matriz e que contenga como filas los elementos de labase B de S obtenidos arriba, pero vamos a reordenarlos colocando primerolos vectores con mas coordenadas nulas, lo que simplifica los calculos a lahora de aplicar el metodo de Gram-Schmidt. Eso se harıa, como sabemos,de la siguiente forma:

>> e=[0 0 0 1 0 ; -1 1 0 0 0 ; -1/2 0 1/2 0 1]

Sin embargo, como a lo largo del proceso vamos a generar numeros racionalesno enteros y tambien irracionales (raıces cuadradas no exactas), y queremosobtener un resultado exacto y no simplemente una aproximacion numeri-ca, vamos desde ahora mismo a trabajar en calculo simbolico. Para pasarun numero o una matriz a representacion simbolica se utiliza el comandosym (no confundir con syms, que se usa para crear variables simbolicas).Modificamos esta lınea, por lo tanto, de la forma siguiente:

>> e=sym([0 0 0 1 0 ; -1 1 0 0 0 ; -1/2 0 1/2 0 1])e =[ 0, 0, 0, 1, 0][ -1, 1, 0, 0, 0][ -1/2, 0, 1/2, 0, 1]

La conversion en variable simbolica hace que las entradas racionales conser-ven la representacion fraccionaria (1/2 en vez de 0.5), y las raıces cuadradasno exactas que aparezcan quedaran indicadas.

Sobre esta matriz e aplicaremos las formulas de Gram-Schmidt comooperaciones de filas. Obtendremos como resultado una matriz u, de las mis-mas dimensiones que e, cuyas filas seran los tres vectores u1, u2, u3 de lasformulas de Gram-Schmidt. Inicializamos la matriz u a ceros (esto no esestrictamente necesario, pero es una buena costumbre y ahorra memoria alestablecer el tamano de la matriz desde el principio). Esto se harıa de lasiguiente forma:

3

Page 4: 07_p_inf03.pdf

>> u=zeros(3,5)u =

0 0 0 0 00 0 0 0 00 0 0 0 0

Pero, como queremos que u sea tambien una variable simbolica, escribimosen cambio

>> u=sym(zeros(3,5))u =[ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0]

Segun la primera de las formulas, el vector u1 se toma igual al e1, es decir,

>> u(1,:)=e(1,:)u =[ 0, 0, 0, 1, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0]

El vector u2 (segunda fila de la matriz u) se obtiene como una combinacionlineal de este tipo (ver la segunda formula de Gram-Schmidt):

>> u(2,:)=e(2,:)-( )/( )*u(1,:)

Nos falta escribir los productos escalares que aparecen en el numerador ydenominador. Si a y b son dos vectores fila, su producto escalar ordinario enMATLAB se puede calcular como a*b’ (interpretandolo como un productode matrices) o bien con el comando dot, dando los vectores como argumen-tos: dot(a,b). En nuestro caso, leyendo de nuevo en la formula, acabamosde escribir esta lınea ası:

>> u(2,:)=e(2,:)-(dot(e(2,:),u(1,:)))/(dot(u(1,:),u(1,:)))*u(1,:)

(¡ojo con los parentesis! Es recomendable cerrar todos los parentesis nadamas abrirlos, y despues escribir dentro. Tambien hay que aprovecharse delas funciones de cortar y pegar.) Obtenemos la respuesta

u =[ 0, 0, 0, 1, 0][ -1, 1, 0, 0, 0][ 0, 0, 0, 0, 0]

4

Page 5: 07_p_inf03.pdf

Vemos que nos podıamos haber ahorrado el trabajo porque las dos primerasfilas de la matriz e ya eran ortogonales, y sabemos que en esas condicionesel metodo de Gram-Schmidt no los cambia (comprobarlo en las formulas).Pero para ver como se implementa el metodo en el caso general, seguiremosescribiendo las formulas completas. La tercera se puede escribir ası:

>> u(3,:)=e(3,:)-(dot(e(3,:),u(1,:)))/(dot(u(1,:),u(1,:)))*u(1,:) ...-(dot(e(3,:),u(2,:)))/(dot(u(2,:),u(2,:)))*u(2,:)

Los puntos suspensivos ... se pueden utilizar en MATLAB para dividiruna expresion en dos lıneas; es conveniente usarlos para evitar introducirlıneas demasiado largas que no quepan en la ventana de comandos que te-nemos abierta.

Obtenemos ası la base ortogonal de S

u =[ 0, 0, 0, 1, 0][ -1, 1, 0, 0, 0][ -1/4, -1/4, 1/2, 0, 1]

Ahora queremos dividir cada vector por su norma para convertirla en baseortonormal. La primera fila ya tiene norma 1. Sustituimos la segunda poresa misma fila dividida por su norma

>> u(2,:)=u(2,:)/sqrt(dot(u(2,:),u(2,:)))u =[ 0, 0, 0, 1, 0][ -1/2*2^(1/2), 1/2*2^(1/2), 0, 0, 0][ -1/4, -1/4, 1/2, 0, 1]

y lo mismo para la tercera,

>> u(3,:)=u(3,:)/sqrt(dot(u(3,:),u(3,:)))u =[ 0, 0, 0, 1, 0][ -1/2*2^(1/2), 1/2*2^(1/2), 0, 0, 0][-1/22*22^(1/2), -1/22*22^(1/2), 1/11*22^(1/2), 0, 2/11*22^(1/2)]

Hemos obtenido la base ortonormal de S

{(0, 0, 0, 1, 0), (−√

2/2,√

2/2, 0, 0, 0), (−√

22/22, −√

22/22, −√

22/11, 0, 2√

22/11)}

5

Page 6: 07_p_inf03.pdf

Ejercicio 1

Resolver, utilizando MATLAB, el siguiente problema:

Sea f : R3 × R3 → R una forma bilineal dada por

f((x1, x2, x3), (y1, y2, y3)) =(

x1 x2 x3

)

2 2 02 3 −10 −1 2

y1

y2

y3

(a) Probar que f define un producto escalar en R3.

(b) Si W es el subespacio vectorial generado por el vector (1, 0, 1),calcular una base ortonormal del subespacio W⊥.

Indicaciones:

(a) Los autovalores de una matriz simetrica pueden utilizarse para clasifi-carla.

Alternativamente: se puede usar el criterio de Sylvester. Recordad delas practicas anteriores los comandos que se utilizan para calcular de-terminantes de matrices cuadradas, y extraer submatrices...

(b) La ecuacion del subespacio ortogonal es

(1 0 1

)

2 2 02 3 −10 −1 2

y1

y2

y3

= 0

Utilizar null con el argumento ’r’ para obtener una base sencilla deeste subespacio. Despues convertirla en ortonormal usando por ejemploGram-Schmidt (¡son solo dos vectores!), pero ojo porque el productoescalar ya no es el canonico. Prohibido hacer cuentas a mano.

Transformaciones ortogonales

Vamos a resolver el siguiente problema (ejercicio 1, apartado (b), practica12) usando MATLAB:

Se considera el espacio vectorial euclıdeo R3 referido a una baseortonormal. Obtener la expresion matricial, en esa base, de lasimetrıa ortogonal con respecto al subespacio

L{(1, 1, 1), (2, 0, 1)}.

6

Page 7: 07_p_inf03.pdf

Sea u1 = (1, 1, 1), u2 = (2, 0, 1). De teorıa sabemos que, si u3 es cualquiervector simultaneamente ortogonal a u1 y u2, la matriz de la simetrıa orto-gonal respecto a L{u1, u2} en la base B′ = {u1, u2, u3} es

TB′ =

1 0 00 1 00 0 −1

.

Sea B la base ortonormal de partida. Tenemos que calcular TB. Sabemosque

TB = MBB′TB′MB′B = M−1B′BTB′MB′B

Un vector ortogonal simultaneamente a u1 = (1, 1, 1) y u2 = (2, 0, 1) esun vector perteneciente al subespacio

{(x, y, z) ∈ R3 :

x + y + z = 02x− z = 0

}

que podemos calcular usando (ver seccion anterior)

>> F=[1 1 1; 2 0 1]F =

1 1 12 0 1

>> null(F,’r’)ans =

-1/2-1/21

Si llamamos M a la matriz MB′B es claro que

>> M=[1 1 1; 2 0 1; -1/2 -1/2 1]M =

1.0000 1.0000 1.00002.0000 0 1.0000

-0.5000 -0.5000 1.0000

En este caso los calculos que vamos a hacer no nos van a conducir a nume-ros irracionales, ya que no tenemos que hacer raıces para calcular inversas.Cuando los unicos problemas que pueden aparecer a la hora de buscar unasolucion exacta son los denominadores, podemos pedirle a MATLAB quenos de todos los resultados en forma de fraccion tecleando

>> format rat

Efectivamente, si ahora recuperamos el valor de M obtenemos

7

Page 8: 07_p_inf03.pdf

>> MM =

1 1 12 0 1-1/2 -1/2 1

y ası evitamos crear variables simbolicas.La forma mas rapida de crear una matriz diagonal con los elementos del

vector v en la diagonal es diag(v). En nuestro caso la matriz de la simetrıaen la base B′ sera por tanto diag([1 1 -1]) (¡ojo con los corchetes!) Soloqueda calcular TB = M−1

B′BTB′MB′B, es decir,

>> inv(M)*diag([1 1 -1])*Mans =

2/3 -1/3 2/3-1/3 2/3 2/32/3 2/3 -1/3

y esta es la matriz que estabamos buscando.

Ejercicio 2

Utilizar MATLAB y los criterios de clasificacion de transformacionesortogonales en R3 explicados en teorıa para resolver el siguiente problema:

En R3 consideramos el producto escalar usual y la orientacionde la base canonica. Se define la transformacion que en esta basetiene asociada la matriz

A =

(√

2− 2)/4 (−√2− 2)/4 −1/2(−√2− 2)/4 (

√2− 2)/4 1/2

1/2 −1/2√

2/2

Comprobar que f es ortogonal, definir su naturaleza y descom-ponerla en giros y/o simetrıas.

8