You are on page 1of 3

Programacion en MATLAB Operaciones con matrices MATLAB puede operar con matrices por medio de operadores y por medio

de funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), as como la funcin invertir inv( ). Los operadores matriciales de MATLAB son los siguientes: + adicin o suma sustraccin o resta * multiplicacin ' traspuesta ^ potenciacin \ divisin-izquierda / divisin-derecha .* producto elemento a elemento ./ y .\ divisin elemento a elemento .^ elevar a una potencia elemento a elemento Estos operadores se aplican tambin a las variables o valores escalares, aunque con algunas diferencias5. Todos estos operadores son coherentes con las correspondientes operaciones matriciales: no se puede por ejemplo sumar matrices que no sean del mismo tamao. Si los operadores no se usan de modo correcto se obtiene un mensaje de error. Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un operando escalar y otro matricial. En este caso la operacin con el escalar se aplica a cada uno de los elementos de la matriz. Considrese el siguiente ejemplo: >> A=[1 2; 3 4] A= 12 34 5 En trminos de C++ se podra decir que son operadores sobrecargados, es decir, con varios significados distintos dependiendo del contexto, es decir, de sus operandos. Aprenda Matlab 6.1 como si estuviera en Primero pgina 24 >> A*2 ans = 24 68 >> A-4 ans = -3 -2 -1 0 Los operadores de divisin requieren una cierta explicacin adicional. Considrese el siguiente sistema de ecuaciones lineales, Ax = b (1)

Programacion en MATLAB en donde x y b son vectores columna, y A una matriz cuadrada invertible. La resolucin de este sistema de ecuaciones se puede escribir en las 2 formas siguientes (Atencin a la 2 forma, basada en la barra invertida (\), que puede resultar un poco extraa!): x = inv(A)*b (2a) x = A\b (2b) As pues, el operador divisin-izquierda por una matriz (barra invertida \) equivale a premultiplicar por la inversa de esa matriz. En realidad este operador es ms general y ms inteligente de lo que aparece en el ejemplo anterior: el operador divisinizquierda es aplicable aunque la matriz no tenga inversa e incluso no sea cuadrada, en cuyo caso la solucin que se obtiene (por lo general) es la que proporciona el mtodo de los mnimos cuadrados. Cuando la matriz es triangular o simtrica aprovecha esta circunstancia para reducir el nmero de operaciones aritmticas. En algunos casos se obtiene una solucin con no ms de r elementos distintos de cero, siendo r el rango de la matriz. Esto puede estar basado en que la matriz se reduce a forma de escaln y se resuelve el sistema dando valor cero a las variables independientes. Por ejemplo, considrese el siguiente ejemplo de matriz (1x2) que conduce a un sistema de infinitas soluciones: >> A=[1 2], b=[2] A= 12 b= 2 >> x=A\b x= 0 1 que es la solucin obtenida dando valor cero a la variable independiente x(1). Por otra parte, en el caso de un sistema de ecuaciones redundante (o sobre-determinado) el resultado de MATLAB es el punto ms cercano -en el sentido de mnima norma del error- a las ecuaciones dadas (aunque no cumpla exactamente ninguna de ellas). Vase el siguiente ejemplo de tres ecuaciones formadas por una recta que no pasa por el origen y los dos ejes de coordenadas: >> A=[1 2; 1 0; 0 1], b=[2 0 0]' A= 12 10 01

Programacion en MATLAB b= 2 0 0 Captulo 3: Operaciones con matrices y vectores pgina 25 >> x=A\b, resto=A*x-b x= 0.3333 0.6667 resto = -0.3333 0.3333 0.6667 Aunque no es una forma demasiado habitual, tambin se puede escribir un sistema de ecuaciones lineales en la forma correspondiente a la traspuesta de la ecuacin (1): yB = c (3) donde y y c son vectores fila (c conocido). Si la matriz B es cuadrada e invertible, la solucin de este sistema se puede escribir en las formas siguientes: y = c*inv(B) (4a) y = c/B (4b) En este caso, el operador divisin-derecha por una matriz (/) equivale a postmultiplicar por la inversa de la matriz. Si se traspone la ecuacin (3) y se halla la solucin aplicando el operador divisin-izquierda se obtiene: y' = (B')\c' (5) Comparando las expresiones (4b) y (5) se obtiene la relacin entre los operadores divisinizquierda y divisin-derecha (MATLAB slo tiene implementado el operador divisinizquierda): c/B = ((B')\c')' (6) En MATLAB existe tambin la posibilidad de aplicar elemento a elemento los operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por ejemplo: >> [1 2 3 4]^2 ??? Error using ==> ^ Matrix must be square. >> [1 2 3 4].^2 ans = 1 4 9 16 >> [1 2 3 4]*[1 -1 1 -1] ??? Error using ==> * Inner matrix dimensions must agree. >> [1 2 3 4].*[1 -1 1 -1] ans = 1 -2 3 -4

You might also like