Matrices Matematica

38
Chapter 3 Matrices y álgebra lineal Se ha dicho y repetido que Matlab es un programa orientado a cálculo matricial. Todo número en Matlab, hasta los escalares, son en realidad extensiones de matrices o matrices degeneradas. Esta característica hace que todas las funciones puedan tomar matrices como argumento de forma natural. Aunque todas las funciones son en el fondo matriciales podemos clasificar unas cuantas cuyo propósito es precisamente manipular y crear matrices. 3.1 Rutinas de creación de matrices eye Matriz identidad linspace(base,limit,n) Devuelve un vector fila con n elementos equiespaciados entre base y limit logspace(base,limit,n) Devuelve un vector fila con n elementos espaciados exponencialmente entre 10 base y 10 limit . meshdom(x,y) Equivalente a meshgrid. Se usaba en versiones anteriores de Matlab meshgrid(x,y) Crea una malla equiespaciada en dos dimensiones a partir de los vectores x e y. Retorna dos matrices, una con la coordenada x y el otro con la coordenada y.

description

matematica

Transcript of Matrices Matematica

Chapter3Matrices y lgebralinealSe ha dicho y repetido que Matlab es un programa orientado a clculo matricial. Todo nmero en Matlab, hasta los escalares, son en realidad extensiones de matrices o matrices degeneradas.

Esta caracterstica hace que todas las funciones puedan tomar matrices como argumento de forma natural. Aunque todas las funciones son en el fondo matriciales podemos clasificar unas cuantas cuyo propsito es precisamente manipular y crear matrices.

3.1Rutinas de creacin de matriceseyeMatriz identidadlinspace(base,limit,n)Devuelve un vector fila connelementos equiespaciados entrebaseylimitlogspace(base,limit,n)Devuelve un vector fila connelementos espaciados exponencialmente entre10basey 10limit.meshdom(x,y)Equivalente a meshgrid. Se usaba en versiones anteriores de Matlabmeshgrid(x,y)Crea una malla equiespaciada en dos dimensiones a partir de los vectoresxey. Retorna dos matrices, una con la coordenadaxy el otro con la coordenaday.onesDevuelve una matriz de las dimensiones solicitadas cuyos elementos son todos 1randDevuelve una matriz de las dimensiones solicitadas cuyos elementos son nmeros pseudoaleatorios entre 0 y 1.rand*donde*pueden ser varias letras. Devuelve una matriz de las dimensiones solicitadas cuyos elementos son nmeros pseudoaleatorios que siguen distintas distribucioneszerosDevuelve una matriz cuyos elementos son todos ceros.Las funciones que quizs requieran una pequea explicacin sonlinspace, logspaceymeshgrid. La primera es la extensin de la secuencia (2.5.2) cuando los elementos no son nmeros enteros. La usaremos muy frecuentemente y nos ser muy sencillo dominar su uso:>> linspace(-pi,e,20)ans = Columns 1 through 7: -3.141593 -2.833178 -2.524764 -2.216349 -1.907935 -1.599520 -1.291106 Columns 8 through 14: -0.982692 -0.674277 -0.365863 -0.057448 0.250966 0.559381 0.867795 Columns 15 through 20: 1.176210 1.484624 1.793038 2.101453 2.409867 2.718282logspacees exactamente la misma funcin pero con separacin logartmica:>> logspace(-pi,e,20)ans = Columns 1 through 6: 7.2178e-04 1.4683e-03 2.9870e-03 6.0765e-03 1.2361e-02 2.5147e-02 Columns 7 through 12: 5.1156e-02 1.0407e-01 2.1170e-01 4.3066e-01 8.7610e-01 1.7822e+00 Columns 13 through 18: 3.6256e+00 7.3756e+00 1.5004e+01 3.0523e+01 6.2092e+01 1.2631e+02 Columns 19 and 20: 2.5696e+02 5.2274e+02La funcin meshgrid es un poco ms compleja. Usaremos esta funcin cuando necesitemos una serie bidimensional de puntos equiespaciados que definiremos a partir de dos vectores, las diferencias segn el ejexy segn el ejey. Por ejemplo:>> [xx,yy]=meshgrid(1:2:10,1:3:9)xx = 1 3 5 7 9 1 3 5 7 9 1 3 5 7 9yy = 1 1 1 1 1 4 4 4 4 4 7 7 7 7 7>> 0.5*(xx+yy)ans = 1.0000 2.0000 3.0000 4.0000 5.0000 2.5000 3.5000 4.5000 5.5000 6.5000 4.0000 5.0000 6.0000 7.0000 8.0000diagExtrae e introduce diagonales en matrices.Probablemente esta ltima sea la de mayor sentido fsico puesto que las matrices por bandas se encuentran muy a menudo en problemas de EDP. El ejemplo que adjunta Matlab en la ayuda de la funcin es perfecto para entender su funcionamiento:>> m = 5;>> diag(-m:m) + diag(ones(2*m,1),1) + diag(ones(2*m,1),-1)ans = -5 1 0 0 0 0 0 0 0 0 0 1 -4 1 0 0 0 0 0 0 0 0 0 1 -3 1 0 0 0 0 0 0 0 0 0 1 -2 1 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 1 3 1 0 0 0 0 0 0 0 0 0 1 4 1 0 0 0 0 0 0 0 0 0 1 53.1.1Tipos de argumentos matriciales.Como vimos en el captulo dedicado a los tipos de argumentos podemos modificar el tipo del argumento matricial (su precisin) de modo explcito. Algunas de las funciones anteriores permiten inicializar una matriz incluyendo el atributo de su tipo, es decir, del tamao que ocupar cada elemento en memoria. Por ejemplo, si definimos la matriz unidad como entera de 8 bits:>> i8 = zeros(2,2,'int8')i8 = 0 0 0 0>> i8(1,1)=1023i8 = 127 0 0 0 Por desgracia los operadores an no disponen de la versatilidad de otros lenguajes ms polivalentes como Fortran o Python; la siguiente operacin nos dar error:>> i8*[123.534,324.123;123.431,324.123]??? Error using ==> mtimes Integers can only be combined with...3.2Rutinas de manipulacin de forma.Hay decenas de funciones de manipulacin de forma. No las intentaremos conocer todas porque es un empeo un poco intil. He aqu las ms utilizadasreshape(A,m,n,...)Reordena la matrizApara ajustarse a las dimensionesmn. Esta funcin slo manipula la forma, en el caso de que queramos ampliar su tamao en vez de aadir ceros dar un error.transposeTraspuesta. (Ver los operadores aritmticos para su abreviatura)ctransposeTraspuesta conjugada. (Ver los operadores aritmticos para su abreviatura)Una de las rutinas ms tiles es la siguiente:cat(opt,a,b,...)Concatena matrices dondeoptes la dimensin en la que se acoplarn las matrices y los argumentos siguientes matrices cuyas dimensiones permiten el 'pegado' entre ellas.Un ejemplo del uso decatsera:>> help cat>> A=ones(2,2);>> B=zeros(2,2);>> cat(1,A,B)ans = 1 1 1 1 0 0 0 0>> cat(2,A,B)ans = 1 1 0 0 1 1 0 0En el ejemplo vemos que con la opcinopt=1las matrices se concatenan en sentido longitudinal mientras que conopt=2se concatenan en sentido transversal. Esta funcin sirve como ejemplo de la gran potencia de la notacin matricial. Es muy importante no subestimar la potencia del uso de la creacin y la modificacin de matrices con la notacin tpica como vemos en el siguiente ejemplo. Haremos el clculo anterior sin utilizar ninguna funcin:>> A=ones(2,2);>> B=zeros(2,2);>> [A,B]ans = 1 1 0 0 1 1 0 0>> [A;B]ans = 1 1 1 1 0 0 0 0Que sirva como leccin; nunca hay que subestimar la potencia de la notacin matricial.

3.2.1Creacin directa de matrices de rango mayor que 2.La notacin y la salida por pantalla de Matlab est pensada para el clculo matricial, es decir, mantenernos siempre por debajo del rango 3. La notacin est pensada para separar filas y columnas pero nada ms; no hay ninguna notacin capaz de separar entre planos matriciales; no hay ninguna extensin tensorial.

El mtodo ms intuitivo sera crear la hiper matriz como matriz y luego utilizar la funcinreshapepara cambiarle la forma. Parece obvio que matlab cuente con mtodos un poco menos artesanales.repmat(A,[n,m,...])Crea una matriz por bloques de dimensiones[n,m,...]con copias de la matrizA.Por ejemplo, si queremos crear un cubo de nmeros de lado 5 donde latapay elfondosean matrices unidad y el resto sean ceros podemos hacer lo siguiente:>> cat(3,eye(5),repmat(zeros(5),[1,1,3]),eye(5))ans =ans(:,:,1) = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1ans(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ans(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ans(:,:,4) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ans(:,:,5) = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 3.3Sistemas de ecuaciones lineales.Un sistema de ecuaciones lineales es:a11x1+a12x2+a13x3++a1NxN=b1

a21x1+a22x2+a23x3++a2NxN=b2

a21x1+a22x2+a23x3++a2NxN=b3

=

aM1x1+aM2x2+aM3x3++aMNxN=bM

siempre puede expresarse de la formaax=bPero una formulacin tan sencilla suele esconder grandes complicaciones. Todos coincidiremos en que aparentemente la solucin del problema anterior es:x=a-1bPero el problema numrico va mucho ms all. La inversa de una matriz slo existe cuando sta es regular y no siempre tendremos tanta suerte. Buscamos una solucin al problema general de la formaa(MN)x(N)=b(M)En el que no siempre existe una inversa paraa. Este anlisis mucho ms general requiere conocimientos que se escapan en parte de los cursos de clculo numrico y plantea una dificultad adicional: el manejo intuitivo de matrices y vectores. Cuando uno se sumerge en el mundo del clculo matricial es bueno que encuentre modos de equivocarse lo menos posible. Es muy comn que multiplicaciones de matrices incompatibles acaben con un algoritmo brillante. No siempre trabajaremos con vectores columna post multiplicando matrices cuadradas. Un truco bastante utilizado en el clculo numrico es utilizar una notacin parecida a la de Einstein en la que aparecen las filas y columnas como coordenadas co variantes y contra variantes:ajixi=bjLa regla mnemotcnica es que los ndices que aparezcan repetidos como subndices y superndicesde izquierda a derecharepresentan un sumatorio y desaparecen en el resultado final. La regla se mantiene en la solucin, obviamente con permutacin de los ndices:xi=(a-1)ijbj

Esta notacin es especialmente til porque ayuda a no equivocarse en los clculos, subndice son filas y superndice son columnas. Por ejemplo para el producto de dos vectores el producto interno (producto escalar) sera:xjyj=kdonde k es un escalar. En cambio si los dos vectores aparecen permutados obtenemos el producto externo de dos vectores en el que se amplan los ndices:yjxi=ajiPara entender perfectamente la siguiente operacin utilizaremos Matlab:>> y=ones(3,1);>> x=2*ones(1,3);>> x*yans = 6>> y*xans = 2 2 2 2 2 2 2 2 2 Todo ello es til cuando tenemos operaciones un poco ms complejas como la siguiente:ykzkakixibjCules sern las dimensiones de la matriz (o vector o escalar) resultante? Tenemos claro desde un principio queaes una matriz,xun vector columna eyyzson vectores fila. Sin hacer ningn clculo sabemos que la solucin tiene la forma:ykzkakixibj=cjdonde la repeticin de ndices en una misma posicin significa operacin escalar y no matricial. Vamos a exponer un ejemplo de la operacin para conseguir una idea ms grfica:octave:27> yy = 4 4 4octave:28> zz = 5 5 5octave:29> aa = 2 2 2 2 2 2 2 2 2octave:30> xx = 3 3 3octave:31> bb = 1 1 1octave:32> (((y.*z)*a)*x)*bans = 1080 1080 1080 Pero centrmonos ms en el problema importante:aijxj=biEs el problema ms importante del anlisis numrico. Casi todos algoritmos se reducen al planteamiento de un sistema de ecuaciones lineales. Los ms interesantes son los que vienen de una ecuacin en derivadas parciales. Las diferencias finitas, volmenes finitos, elementos finitos y mtodos espectrales terminan en la formulacin de un problema de este tipo. El anlisis preciso de estos problemas es una parte esencial de cualquier curso de anlisis numrico y tiene muchos claros y oscuros dependiendo siempre de la forma de la matriza. El siguiente rbol clasifica la mayora de los problemas con su tratamiento: aes cuadrada y regular ano tiene ninguna estructura reconocible La mayora de los elementos deason no nulos. Mtodos directos o iterativos dependiendo del tamao de la matriz. La mayora de los elementos deason nulos. Matrices sparse. Resolucin por mtodos iterativos. atiene una estructura determinada aes tridiagonal. Resolucin por un mtodo directo. No disponible en Matlab. aes hermitiana (a=a). Resolucin por un mtodo directo. No disponible en Matlab. aes subcondicionada o cuadrada singular. Descomposicin en valores singulares o SVD (pseudoinversa) aes sobrecondicionada, es decir, rectangular con ms filas que columnas. Es un problema de mnimos cuadrados o de SVD (pseudoinversa)No disponible en Matlab significa que no tiene ningn mtodo especial para resolver este tipo de problemas. Debemos utilizar el mtodo de resolucin general,el operador resolucin de sistemas de ecuaciones lineales.

3.3.1Matrices cuadradas regulares.Este es el nico caso en el que es rigurosamente cierto que:x=a-1bMatlab proporciona con el operador resolucin de ecuaciones lineales un mtodouniversalpara resolver estos problemas. Aunque Matlab sea capaz de darnos herramientas sencillas para resolver estos sistemas con matrices de gran tamao, en la referencia [3] se mencionan algunas de las dificultades planteadas.

Cuando hemos clasificado los mtodos de resolucin segn las caractersticas de la matriz del sistema hemos diferenciado tres maneras de resolver el problema: los mtodos directos, los iterativos y el uso de las matrices sparse. Los tres mtodos no son exclusivos ya que las matrices sparse no son ms que un mtodo de almacenamiento alternativo para ahorrar memoria; hablaremos de ellas ms adelante. Cundo utilizar un mtodo directo o un mtodo iterativo es una sutileza necesaria puesto que ahorra quebraderos de cabeza importantes.

3.3.2Mtodos directos.Utilizaremos un mtodo directo de resolucin, es decir, el equivalente aINVERTIRla matriza, cuando la matriz est densamente llena de nmeros (no estemos utilizando almacenamientos alternativos como matrices sparse) y el tamao sea moderado. En el caso de las matrices sparse los algoritmos de resolucin algebraicos (descomposicin LU o Cholesky) no pueden competir en la mayora de los casos con la rapidez de los mtodos iterativos. Cuando las matrices son demasiado grandes la resolucin puede ser muy costosa. Esto no significa que Matlab sea incapaz de resolver sistemas de ecuaciones de gran tamao. He aqu un ejemplo que demuestra lo contrario.>> a=rand(1000);>> b=rand(1000,1);>> tic;a\b;tocans = 1.0539Acaba de resolver un sistema de ecuaciones con mil grados de libertad en un segundo. Y la precisin?octave:4> max((a*(a\b))-b)ans = 2.3159e-13Pues del orden de la precisin de los propios clculos. Los algoritmos de resolucin de Matlab son muy sofisticados1y poseen mtodos para mantener un error aceptable en cualquier condicin. El uso de un mtodo directo o uno iterativo se debe principalmente a motivos de velocidad. Utilizaremos un mtodo iterativo slo en el caso de que exista una ganancia de velocidad apreciable o una ventaja en la aplicacin del algoritmo de resolucin como se ve en el ejercicio resuelto8.5.

3.3.3Mtodos iterativos.Utilizaremos un mtodo iterativo cuando no podemosINVERTIRla matriz del sistema en un tiempo razonable. Su objetivo es llegar a la solucin realizando menos operaciones a costa de perder precisin (los mtodos directos son exactos y su precisin depende nicamente de la precisin de la mquina)

Los mtodos iterativos llegan a la solucin mediante la evaluacin directa de la matriz del sistema. Si conseguimos llegar a una solucin evaluando la matriz cien veces el nmero de operaciones ser del orden de 100n, a tener en cuenta si el nmero de elementos es varios rdenes de magnitud mayor al nmero de iteraciones necesarias. Por supuesto en el caso que casi todos los elementos de la matriz sean distintos de cero. En el siguiente apartado veremos cmo tratar las matrices ``casi vacas''.

Quizs el mtodo iterativo ms utilizado es el delGradiente Conjugado Precondicionadoo PGC que analizaremos tambin en la siguiente seccin. Una de las posibilidades de las funciones que implementan mtodos iterativos es que no necesitan una matriz del sistema, les basta con una funcin que calculeax. Esto es ideal para formular los problemas de un modo alternativo o para utilizar las matricessparsecomo veremos a continuacin.

3.3.4Matrices sparseSe dice que una matriz essparse2cuando el nmero de elementos no nulos es del orden densiendonel nmero de elementos de la matriz. Hay multitud de casos de sistemas cuyas matrices sonsparse, un ejemplo clsico son las matrices generadas por esquemas de elementos finitos tanto en el caso de mallas estructuradas como el de no estructuradas.

La finalidad del uso de las matricessparsees triple. Primero ahorrar la enorme cantidad de memoria desperdiciada almacenando una matriz llena de ceros; segundo, definir mtodos para realizar todas las operaciones disponibles en una matriz pero en el caso de almacenamiento sparse y por ltimo que los errores de resolucin no sean los equivalentes a resolver una matriz connelementos sino una conn. Resumiendo, aprovechar la forma de la matriz para obtener todas las propiedades beneficiosas que se pueda.

3.3.4.1Anlisis de matricesEs muy importante saber qu forma tiene nuestra matriz. Si es diagonal superior, tridiagonal o sparse influir en gran medida el algoritmo de resolucin del problema. Para analizar la naturaleza de las matrices contamos con funciones de gran utilidad:issparseSi la matriz argumento es sparse retornar verdadero.issquareSi la matriz es cuadrada retorna el nmero de elementos por lado, si no lo es retorna falso.spyEs un mtodo muy utilizado cuando ya sabemos que nuestra matriz va a ser sparse. Pinta un diagrama cuyos puntos son los elementos de la matriz que son distintos de cero. Un ejemplo de su uso se encuentra en la seccin3.3.4.3.3.3.4.2Almacenamiento de matrices sparseExisten bastantes mtodos de almacenamiento de matricessparse.Los ms conocidos sonCompressed Row Storage,Compressed Column Storage,Block Compressed Row Storage,Compressed Diagonal Storage,Jagged Diagonal StorageySkyline Storage.

Probablemente el ms sencillo sea el primero. El algoritmo descompone la matriz en tres vectores, uno con los elementos de la matriz distintos de cero, otro con el ndice de columna donde se encuentra y un tercero el ndice de los vectores anteriores que inicia una nueva fila. Si se descompone la matriz :A=10000-20

390003

078700

308750

0809913

04002-1

los vectores resultado del CRS son:val=(10,-2,3,9,3,7,8,7,3,,13,4,2,-1)

col_ind=(1,5,1,2,6,2,3,4,1,,5,6,2,5,6)

row_ptr=(1,3,6,9,13,17,20)El tipo de almacenamiento es oculto en Matlab principalmente por motivos de sencillez.

Pero lo ms importante del uso de matrices sparse es que ni sepamos que hemos cambiado el tipo de almacenamiento. Por ejemplo, si a partir de una matriz normal pasamos a almacenamiento sparse gracias a la funcinsparse,sparse(M)Almacena la matrizMcomo matriz sparse>> M=[1 0 2 3;0 0 0 3;3 2 0 0]M = 1 0 2 3 0 0 0 3 3 2 0 0>> SpM=sparse(M)SpM =Compressed Column Sparse (rows=3, cols=4, nnz=6) (1 , 1) -> 1 (3 , 1) -> 3 (3 , 2) -> 2 (1 , 3) -> 2 (1 , 4) -> 3 (2 , 4) -> 3 Nos devolver la informacin de cmo ha almacenado la matriz3, nunca los vectores que est utilizando para almacenarla. Lo ms importante es que esta nueva matriz sparse puede operar con matrices de todo tipo ya sean sparse o convencionales transparentemente.>> b=[1;2;3;4]b = 1 2 3 4>> SpM*bans = 19 12 7 3.3.4.3Creacin de matrices sparseEl uso de la funcinsparseno es nunca una buena opcin para crear una matriz sparse porque no tiene absolutamente ninguna lgica. El motivo es claro, si la existencia de las matrices sparse es ahorrar memoria y aumentar la velocidad no tiene ningn sentido que tengamos que crear antes la matriz original y luego tener que liberar memoria.

Entonces pensamos que sera muy cmodo contar con las mismas funciones de creacin de matrices convencionales para el caso sparse:speyeCrea la matriz unidad en formato sparsesponesCrea una matriz sparse con unos en los elementos que deseemossprandCrea una matriz sparse de nmeros aleatorios en posiciones aleatorias o siguiendo un determinado patrn.Por ejemplo, si queremos una matriz sparse de nmeros aleatorios con una densidad de 0.01 y de dimensiones 100100:>> randsparse=sprand(100,100,0.01);Para ver cmo se reparten aleatoriamente los nmeros en la matriz utilizaremos la funcinspyque ya conocemos:>> spy(randsparse)Y como resultado obtenemos la figura3.1:

Figure 3.1:Elementos no nulos de una matriz sparse creada consprand

spdiagsExtrae e introduce diagonales en matrices sparse.Al igual que su funcin homlogadiagtiene un gran sentido fsico. De hecho tiene mucha mayor utilidad en la funcin de creacinspdiagsquediagporque las matrices en banda entran en la definicin de matrices sparse. La nica consideracin a tener en cuenta es que las matrices en banda se resuelven rpidamente de manera exacta mediante una factorizacin LU diseada para matrices sparse. Utilizaremos los mtodos iterativos con matrices que no cumplan ningn patrn evidente o sencillo.

3.3.4.4Manipulacin y operaciones con matrices sparsesphcatConcatena horizontalmente dos matrices sparse de dimensiones compatibles.spvcatConcatena verticalmente dos matrices sparse de dimensiones compatibles.spabsCalcula el valor absoluto de los elementos complejos de una matriz sparse sin cambiar el carcter de la misma.sprealCalcula la parte real de los elementos complejos de una matriz sparse sin cambiar el carcter de la misma.spimagCalcula la parte imaginaria de los elementos de una matriz sparse sin cambiar el carcter de la misma.spinvCalcula la matiz inversa de una matriz sparse.Sin embargo no es recomendable que utilicemosspinvpara resolver sistemas de ecuaciones lineales. Como en el caso de sistemas de ecuaciones en matrices convencionales es recomendable que optemos por el operadorPARA INVERTIRla matriz del sistema.

3.3.5Matrices tridiagonales (Octave)Son uno de los tipos de matrices ms buscadas; tienen un gran sentido fsico (provienen de algunas ecuaciones en diferencias) y son muy adecuadas para el clculo numrico. Son un caso particular de matrices sparse pero al ser tan sencillas pueden resolverse directamente sin realizar demasiados clculos. La funcin de resolucin de sistemas de ecuaciones con una matriz tridiagonal estrisolve.

3.3.6Matrices no regulares.Una de las caractersticas ms importantes del operador es que tambin sirve en el caso de tener un sistema con exceso o defecto de ecuaciones. El operador ya no calcula la matriz inversa sino que busca una solucin cuyo error cumple la condicin de la norma mnima o busca el subespacio solucin. En este caso se dice que en vez de buscar la inversa se calcula una pseudoinversa que resuelve la ecuacin. El tratamiento de este tipo de problemas suele omitirse en la mayora de cursos de lgebra en ingeniera, sin embargo tiene una gran utilidad en clculo numrico y es una herramienta relativamente importante. Creo que no es en vano si intentamos entender con un poco ms de profundidad el tratamiento de estas aplicaciones lineales sin entrar en formalismos.

3.3.6.1Singular Value Decomposition (SVD)Se demuestra que cualquier matriz de aplicacin lineal acepta una descomposicin del tipo:A=UwVdondeUyVson matrices ortogonales ywuna matriz diagonal que contiene los valores singulares. Las matrices ortogonales, o ms concretamente las matrices de una transformacin ortogonal, tienen la propiedad de mantener los ngulos en la transformacin. Las matrices de giro son un ejemplo de transformacin ortogonal. La matrizw, al ser diagonal, no produce ningn tipo de rotacin, simplemente expande o contrae determinadas direcciones. La demostracin de la existencia de esta descomposicin va mucho ms all de los objetivos de este libro. Se utiliza la notacinVpara esta matriz debido a que para cumplir la definicin de matiz de transformacin ortogonal sus columnas deben ser vectores ortogonales; es slo un formalismo porque se demuestra tambin que la inversa de una transformacin ortogonal es tambin una transformacin ortogonal y es equivalente a su traspuesta. Ayuda escribir la anterior ecuacin especificando las dimensiones:A(NM)=U(NM)w(MM)V(MM)Vemos tambin que las dimensiones son correctas, aplicando queVV-1:A(NM)V(MM)=U(NM)w(MM)

Ahora, un repaso de lgebra de parte de [14]. Si nuestra matrizAes la matriz de una aplicacin linealf:STpodemos definir dos subespacios enS; el Ncleo, subespacio que forman los vectores que tienen al vector nulo como imagen y el subespacio Imagen que es el subespaciof(S)deT. Por ejemplo, seanSyTlos siguientes espacios reales: Sson las funciones polinmicasp(x)=a+bx+cx2+dx3 Tel espacio de funciones deRenRConsideremos la aplicacin lineal def:STdefinida porf(p(x))=p(x), la derivada segn la variable independiente; o sea:f(a+bx+cx2+dx3)=b+2cx+3dx2. La imagen defes el subespacio deTformado por los polinomios de grado menor o igual que 2. El ncleo defes el subespacio deTque forman los polinomios constantes.

Si volvemos a la forma de la descomposicin propuesta por la SVD,A(NM)=U(NM)w(MM)V(MM)

Tomemos la condicin deNMen el que tenemos ms ecuaciones que incgnitas.

Para obtener las tres matrices de la descomposicin Matlab proporciona la siguiente funcinsvdDescomposicin en valores singulares. Si se pide nicamente un valor de salida retorna un vector con valores singulares. Con tres valores de salida retorna la descomposicin matricial completa.Para ejemplificar el uso de la ecuacin vamos a intentar descomponer en valores singulares la ya clsica matriz...octave:3> a=[1,2,3;4,5,6;7,8,9];octave:4> [U,w,V]=svd(a)U = -0.21484 0.88723 0.40825 -0.52059 0.24964 -0.81650 -0.82634 -0.38794 0.40825w = 16.84810 0.00000 0.00000 0.00000 1.06837 0.00000 0.00000 0.00000 0.00000V = -0.479671 -0.776691 -0.408248 -0.572368 -0.075686 0.816497 -0.665064 0.625318 -0.408248Efectivamente, uno de los valores singulares es nulo debido a que la matriz es singular. Para analizar ms en profundidad las matrices, Matlab proporciona adems las siguientes funciones:rankCalcula el rango de la matriz, es decir, el nmero de valores singulares no nulos o la dimensin de la imagen de la aplicacin.nullCalcula la dimensin del ncleo de una aplicacin lineal expresada por una matriz, esto es, el nmero de valores singulares nulos.3.3.6.2Problemas con defecto o exceso de ecuaciones.Si lo nico que nos interesa es resolverax=b... Qu calcula exactamente el operador cuandoN> x = [-1 3 4]x =-1 3 4>> x = [-1;3;4]x =-134

Para introducir unamatriz, se define por filas separndolas por intro o punto y coma. Por ejemplo, el comando siguiente define la matriz A de dimensin 2X3>> A = [3 4 1; 5 -3 0]A =3 4 15 -3 01. Vectores y sus operacionesLasoperacionesde adicin, diferencia yproductopor escalares, se realizan mediante una sintaxis simple.Ejemplo 1.1Consideremos los vectores x = < -1,3 -2>, y = y el escalar 2.>> x = [-1 3 -2]x =-1 3 -2>> y = [0 -2 -1]y =0 -2 -1

>> z = x + yz =-1 1 -3>> w = x - yw =-1 5 -1

>> u = 2*xu =-2 6 -4

Geomtricamente, MATLAB ilustra mediante laleydel paralelogramo la suma de vectores. Para ello, se utiliza un programa escrito por T. A. Bryan [4], asequible en la pgina. Aqu, simplemente, se utilizarel lenguajedegrficaspara puntualizar la operacin.Ejemplo 1.2Sean los vectores x = , y = y x + y = >> u = [0 1 1 0 0];>> v = [0 2 5 3 0];>> w = [0 0 2 2 0];>> plot3(u,v,w)Figura 1.1

Para determinar la norma de un vector se utiliza el comando siguiente:Ejemplo 1.3>> norm(x)ans =2.2361Para el producto punto, el producto vectorial y el ngulo entre vectores, se procede de la forma siguiente:Ejemplo 1.4>> dot(x,y)ans =6>> cross([1,2,0],[0,3,2])ans =4 -2 3>> theta = acos(dot(x,y)/(norm(x)*norm(y)))theta =0.7314>> 360*theta/(2*pi)ans =41.9088

Para obtener el rea del paralelogramo cuyos lados adyacentes son los vectores x y y.>> area = norm(x)*norm(y)*(sin(theta))^2area =3.5970

Ejercicio propuesto 1.1 Obtener un vector unitario en ladireccindel vector x. Hallar la proyeccin del vector x sobre el vector y.2.SistemasdeecuacioneslinealesPara resolver unsistemade ecuaciones lineales AX = B de n ecuaciones con m (n puede ser igual a m) incgnitas, se introduce la matriz A del sistema y el vector columna B de los trminos independientes, no es preciso considerar el vector columna X de las incgnitas (x1, x2, x3).Ejemplo 2.1Consideremos el siguiente sistema:

>> A = [0 3 -4; 6 -3 -4; 6 -9 4; 1 1 1]A =0 3 -46 -3 -46 -9 41 1 1>> B = [0; 0; 0; 1]B =0001

>> X = A\BX =0.36360.36360.2727

Observacin. El operador matricial de MATLAB "\" divisin izquierda equivale a la solucin de sistemas lineales mediante X = inv(A)*B. este operador es ms poderoso de lo que parece, puesto que, suministra la solucin aunque la matriz A no tenga inversa.MATLAB, proporciona la solucin grfica de un sistema de ecuaciones lineales, mediante loscomandossiguientes:>> [x,y] = meshgrid(-4:0.5:5);>> z = 3*y/4;>> surf(x,y,z)Se obtiene el plano de la figura 2.1

Figura 2.1>> hold on>> z = (6*x - 3*y)/4;>> surf(x,y,z)Se obtiene los planos de la figura 2.2 interceptados en una lnea recta

Figura 2.2

>> z = (-6*x + 9*y)/4;>> surf(x,y,z)Se obtiene los planos de la figura 2.3 interceptados en una lnea rectaFigura 2.3>> z = 1- x - y;>> surf(x,y,z)Se obtienen los cuatro planos de la figura 2.4 interceptados en el punto (4/11. 4/11, 3/11) de IR3

Figura 2.4

Ejemplo 2.2Consideremos, ahora un sistema lineal incompatible.x + z = 1x y + 3z = -3x + y z = 1>> A = [1 0 1; 1 -1 3; 1 1 -1]A =1 0 11 -1 31 1 -1>> B = [1; -3; 1]B =1-31

>> X = A\BWarning: Matrix is singular to working precision.X =InfInfInf

Ejemplo 2.3Consideremos, ahora un sistema lineal compatible indeterminadox1 - x2 = 4x1 3x2 2x3 = -6x1 + 2x2 3x3 = 1>> A = [1 -1 0; 1 3 -2; 4 2 -3]A =1 -1 01 3 -24 2 -3>> B = [4; -6; 1]B =4-61

>> X = A\BWarning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 9.251859e-018.X =3.5000-0.50004.0000

El paquete desoftwareMATLAB permite la solucin de estos sistemas utilizando elMtodode Gauss-Jordan. Veamos la solucin del ejemplo 2.3.>> A = [1 -1 0 4; 1 3 -2 -6; 4 2 -3 1]% A es la matriz ampliadaA =1 -1 0 41 3 -2 -64 2 -3 1>> A(2,:) = A(2,:)-A(1,:)A =1 -1 0 40 4 -2 -104 2 -3 1

>> A(3,:) = A(3,:) - 4*A(1,:)A =1 -1 0 40 4 -2 -100 6 -3 -15>> A(2,:) = A(2,:)/-2A =1 -1 0 40 -2 1 50 6 -3 -15

>> A(3,:) = A(3,:) + 3*A(2,:)A =1 -1 0 40 -2 1 50 0 0 0Luegox1 = 4 + x2 y x3 = 5 + 2x2Infinitassoluciones!Por ejemplo, para x2 = - 0,5x1 = 3,5 y x3 = 4

Nota. Elcarcter% indica comienzo de un comentario, es ignorado por MATLAB.Ejercicio propuesto 2.1Resolver los sistemas de ecuaciones dados. Ver ejemplo 2.1.a)b)3. MatricesPara multiplicar una matriz por un vector y para el producto de matrices, se procede de la forma siguiente:Ejemplo 3.1SeanA =y x =Se introducen la matriz y el vector como se indic.Luego el comando>> B = A*xB =1313-2Ejemplo 3.2Consideremos las matricesA = [5 -2 0; 1 -1 4; 3 -3 2; 0 -5 -1] y B = [-2 3 4 6 7 -1; 0 9 -2 1 0 3; 1 -1 0 3 2 7]>> C = A*BC =-10 -3 24 28 35 -112 -10 6 17 15 24-4 -20 18 21 25 2-1 -44 10 -8 -2 -22>> D = B*A??? Error using ==> *Inner matrix dimensions must agree.

Ejemplo 3.3Para la matriz A = [1/2 -1/3 1/6; 1/4 -2 -1/7; 1/5 1/3 0]. Hallar:Transpuesta>> A'ans =0.5000 0.2500 0.2000-0.3333 -2.0000 0.33330.1667 -0.1429 0Inversa>> inv(A)ans =0.4181 0.4878 3.3449-0.2509 -0.2927 0.99304.2439 -2.0488 -8.0488Determinante>> det(A)ans =0.1139

Rango>> rank(A)ans =3Traza>> trace(A)ans =-1.5000Valores singulares>> svd(A)ans =2.07950.53670.1020

A3>> A^3ans =0.2651 -1.1341 -0.04600.8310 -7.4944 -0.6200-0.0945 1.4008 0.1353log(A)>> logm(A)ans =-0.8432 + 0.3607i 0.3205 + 0.2443i0.5082 - 0.9163i-0.2189 - 0.2087i 0.7465 + 3.1599i0.2834 - 0.0688i0.6527 - 1.1504i -0.6112 + 0.1011i-2.0758 + 2.7626i

sqrt(A)>> sqrtm(M)ans =0.6528 + 0.0198i -0.0574 + 0.1899i 0.2151 - 0.0822i0.0490 - 0.1420i -0.0043 + 1.4284i 0.0161 + 0.0841i0.2701 - 0.0979i -0.0237 - 0.1954i 0.0890 + 0.2721i

Para determinar eA., se utilizan las variantes mediante autovalores, aproximantes de Pad, desarrollos deTaylory condicin de la matriz A [6].>> expm(A)ans =1.6408 -0.1807 0.23100.1400 0.1146 -0.04670.2862 0.1195 1.0092>> expm1(A)ans =1.6408 -0.1807 0.23100.1400 0.1146 -0.04670.2862 0.1195 1.0092

>> expm2(A)ans =1.6408 -0.1807 0.23100.1400 0.1146 -0.04670.2862 0.1195 1.0092>> expm3(A)ans =1.6408 -0.1807 0.23100.1400 0.1146 -0.04670.2862 0.1195 1.0092

Como es posible observar, la matriz exponencial coincide en todos losmtodosempleados.Diagonalizar la matriz A calculando la matriz de paso V.>> [V,J] = jordan(A)

V =0.8852 -0.0169 + 0.0000i 0.1317 + 0.0000i0.0664 + 0.0000i -0.1131 - 0.0000i 0.0467 - 0.0000i0.3662 0.0212 + 0.0000i -0.3874 - 0.0000i

J =0.5439 - 0.0000i 0 00 -1.9358 00 0 -0.1082

Para matrices especiales MatLab ofrece ciertos comandos [6].Ejemplo 3.4(a) Obtener las formas de Smith y de Hermite de la inversa de la matriz de Hilbert de orden 2 en la variable t. Adems, determinar las matrices de paso.>> maple('with(linalg):H:=inverse(hilbert(2,t))');>> pretty(simple(sym(maple('H'))))[ 2 ][ -(-3 + t) (-2 + t) (-3 + t) (-2 + t) (-4 + t)][ ][ 2 ][(-3 + t) (-2 + t) (-4 + t) -(-3 + t) (-4 + t) ]

>> maple('B:=smith(H,t,U,V);U:=eval(U);V:=eval(V)');>> pretty(simple(sym(maple('B'))))[-3 + t 0 ][ ][ 2 ][ 0 (-2 + t) (t - 7 t + 12)]

>> pretty(simple(sym(maple('U'))))[ -1 -1 ][ ][ 2 2][10 - 13/2 t + t 9 - 13/2 t + t ]

>> pretty(simple(sym(maple('V'))))[-7/2 + t -4 + t][ ][-3/2 + t -2 + t]

>> maple('HM:=hermite(H,t,Q);Q:=evalm(Q)');>> pretty(simple(sym(maple('HM'))))[ 2 ][6 + t - 5 t 0 ][ ][ 2 ][ 0 t - 7 t + 12]

>> pretty(simple(sym(maple('Q'))))[3 - t 2 - t][ ][4 - t 3 - t]

(b) Determinar los autovalores de la matriz de Wilkinson de orden 6, de la matriz mgica de orden 6 y de la matriz de Rosser.>> [eig(wilkinson(8)),eig(rosser),eig(magic(8))]ans =1.0e+003 *-0.0010 -1.0200 0.26000.0002 -0.0000 0.05180.0011 0.0001 -0.05180.0017 1.0000 0.00000.0026 1.0000 0.0000 + 0.0000i0.0028 1.0199 0.0000 - 0.0000i0.0042 1.0200 -0.0000 + 0.0000i0.0043 1.0200 -0.0000 - 0.0000i

(c) Determinar la matriz y el determinante jacobianos de la transformacin:x = eusen(v), y = eucos(v).>> pretty(sym(maple('jacobian(vector([exp(u)*sin(v),exp(u)*cos(v)]),[u,v])')))[exp(u) sin(v) exp(u) cos(v) ][ ][exp(u) cos(v) -exp(u) sin(v)]

pretty(simple(sym(maple('det('')'))))2-exp(u)

4. Dependencia eindependencialineal, base y dimensinPara determinar si unafamiliao conjunto de vectores de un espacio vectorial es L.I. o L.D., se calcula el determinante de la matriz conformada por las componentes de los vectores.Ejemplo 4.1Dados los espacios vectoriales IR3, IR4 y IR5, determinar si los siguientesconjuntosde vectores son L.I. o L.D.(a) {(3,2,-1), (1,0,0), (0,1,2)}>> A = [3 2 -1; 1 0 0; 0 1 2]A =3 2 -11 0 00 1 2>> det(A)ans =-5Puesto que, el determinante es diferente de cero, la familia de vectores es L.I.(b) {(2,1,-3,4), (-1,3,2,1),(-5,1,8,-7), (3,2,1,-1)}>> B = [2 1 -3 4;-1 3 2 1;-5 1 8 -7;3 2 1 -1]B =2 1 -3 4-1 3 2 1-5 1 8 -73 2 1 -1>> det(B)ans =0Puesto que, el determinante es igual a cero, la familia de vectores es L.D.

(c) {(1,2,-1,5,3), (1,-1,4,-2,0), (1,1,-1,3,12), (0,4,3,1,-1)}>> C = [1,2,-1,5,3;1,-1,4,-2,0;1,1,-1,3,12;0,4,3,1,-1]C =1 2 -1 5 31 -1 4 -2 01 1 -1 3 120 4 3 1 -1>> rank(C)ans =4Puesto que, los 4 vectores pertenecen al espacio IR5, no es posible aplicar el determinante, sin embargo son L.I., ya que el rango de la matriz, que conforman, es 4. Si es menor que 4 es L.D.

Ejemplo 4.2Dadala familiade vectores en el espacio IR5{(1,2,-1,5,3), (1,-1,4,-2,0), (1,1,-1,3,1,2), (0,4,3,1,-1)}Determinar la dimensin de la variedad lineal engendrada por ella y una base.La dimensin de la variedad lineal engendrada por una familia de vectores es el rango de la matriz conformada por los vectores. Puesto que, el rango es 4, la dimensin es 4.Para la base se utiliza el siguiente comando>> pretty(sym(maple('basis({vector([1,2,-1,5,3]),vector([1,-1,4,-2,0]),vector([1,1,-1,3,12]),vector([0,4,3,1,-1])})')))[1 2 -1 5 3][ ][1 -1 4 -2 0][ ][0 4 3 1 -1][ ][1 1 -1 3 12]Ejemplo 4.3Dada la familia de vectores en el espacio IR3{(1,2,-1), (1,-1,4), (1,1,-1)}Determinar si conforman una base de IR3, en caso positivo, obtener las componentes del vector v = (2,4,1) en dicha base.>> det([1,2,-1;1,-1,4;1,1,-1])ans =5Constituyen una base, puesto que el determinante de la matriz es diferente de cero. La familia es L.I.Las componentes de v, se obtienen con el comando>> inv([1 1 1;2 -1 1;-1 4 -1])*[2 4 1]'ans =3.20000.6000-1.8000Ejemplo 4.4Consideremos las bases del espacio vectorial IR3A = {(1,0,0), (0,1,0), (0,0,1)} y B = {(2,1,0), (1,0,-1), (-1,1,1)}Hallar la matriz delcambiode base de A a B. Adems, calcular las componentes del vector (1,2,3) en base A, en la base B.>> A = [1,0,0;0,1,0;0,0,1];>> B = [2,1,0;1,0,-1;-1,1,1];

>> C = inv(B')*A'C =0.5000 0 0.5000-0.5000 1.0000 -1.5000-0.5000 1.0000 -0.5000>> sym(C)ans =[ 1/2, 0, 1/2][ -1/2, 1, -3/2][ -1/2, 1, -1/2]

Una vez obtenida la matriz del cambio de base, se determinan las componentes del vector (1,2,3) en la base B.>> sym(inv(B')*A'*[1,2,3]')ans =[ 2][ -3][ 0]

5. Transformaciones linealesEjemplo 5.1Consideremos la transformacin lineal, cuya matriz est conformada por la familia de vectores{(0,-3,-1,3), (-3,3,-1,0), (-2,2,1,3)}Hallar una base de su ncleo. Adems, determinar laimagendel vector (1,2,3,4) por intermedio de la transformacin lineal.>> A = [0,-3,-1,3;-3,3,-1,0;-2,2,1,3]A =0 -3 -1 3-3 3 -1 0-2 2 1 3>> null(A)ans =0.64480.4690-0.52760.2931

>> maple('T:=x->multiply(array([[0,-3,-1,3],[-3,3,-1,0],[-2,2,1,3]]),x)')ans =T := proc (x) options operator, arrow; multiply(array([[0, -3, -1, 3], [-3, 3, -1, 0], [-2, 2, 1, 3]]),x) end>> pretty(sym(maple('T([1,2,3,4])')))[3 0 17]

Ejemplo 5.2Sea la transformacin lineal f entre los espacios vectoriales V y W, tal quef(e1) = u1 u2, f(e2) = u2 u3 y f(e3) = u3 u4dondeA = {e1, e2, e3} es una base de VB = {u1, u2, u3} es una base de WDeterminar la matriz asociada a la transformacin lineal f. Adems, hallar la imagen en W del vector (1,2,3) de V a travs de la transformacin.>> M = [1 0 0;-1 1 0;0 -1 1;0 0 1]M =1 0 0-1 1 00 -1 10 0 1>>maple('T1:=x->multiply(array([[1,0,0],[-1,1,0],[0,-1,1],[0,0,1]]),x)');>> pretty(sym(maple('T1([1,2,3])')))[1 1 1 3]

Ejemplo 5.3Sea la transformacin lineal f entre los espacios vectoriales V y W, dondef(x,y,z) = (x + y, y + z, x + z), (x,y,z) es un punto cualquiera de V.Hallar la matriz asociada a las transformaciones lineales f, f3 y ef.>> maple('T:=(x,y,z)->[x+y,y+z,x+z]');

>> [maple('T(1,0,0)'),maple('T(0,1,0)')maple('T(0,0,1)')]ans =[1, 0, 1][1, 1, 0][0, 1, 1]Ntese, que para hallar la matriz de f, es necesario considerar los vectores transformados por f de la base cannica de IR3.Tambin, es posible hallarla con este comando>>[maple(T(1,0,0),maple(T(0,1,0)),maple(T(0,0,1))]A =1 1 00 1 11 0 1

>> A^3 % la matriz asociada a f3 es A3.ans =2 3 33 2 33 3 2

>> expm(A) % la matriz asociada a ef es eAans =3.1751 2.8321 1.38191.3819 3.1751 2.83212.8321 1.3819 3.1751

6. OrtonormalizacinLa tcnica bsica utilizada en MATLAB para determinar la descomposicin QR se sustenta en transformaciones de Householder. La sintaxis es sumamente simple [4].Ejemplo 6.1Consideremos la matriz con los vectorescomo columnas.Luego la matriz viene dada por>> A = [1 2 0; 0 -1 0; -1 0 -2; 0 1 1]A =1 2 00 -1 0-1 0 -20 1 1>> [Q R] = qr(A,0)

Q =-0.7071 0.5000 -0.45230 -0.5000 -0.15080.7071 0.5000 -0.45230 0.5000 0.7538R =-1.4142 -1.4142 -1.41420 2.0000 -0.50000 0 1.6583

7. DiagonalizacinEjemplo 7.1Diagonalizar la matriz A>> A = [-1 2 -1;3 0 1;-3 -2 -3]A =-1 2 -13 0 1-3 -2 -3Se determina los eigenvalores de A>> eig(A)ans =-42-2

Ahora se determinan los eigenvectores v1, v2, v3 asociados con los eigenvalores 4, 2 , -2>> v1=null(A+4*eye(3));>> v2=null(A-2*eye(3));>> v3=null(A+2*eye(3));>> S=[v1 v2 v3]S =0.5774 0.5774 0.5774-0.5774 0.5774 -0.57740.5774 -0.5774 -0.5774>> inv(S)*A*Sans =-4.0000 0 -0.0000-0.0000 2.0000 -0.0000-0.0000 0.0000 -2.0000A es diagonizable, puesto que existe una matriz S, tal que=

Leer ms:http://www.monografias.com/trabajos16/algebra-lineal/algebra-lineal.shtml#ixzz3bRaJ4JqW