- Vectores y sus operaciones
- Sistemas de ecuaciones lineales
- Matrices
- Dependencia e independencia lineal, base y dimensión
- Transformaciones lineales
- Ortonormalización
- Referencias bibliográficas
"¿Qué fue eso? Preguntó Alicia. "Enredo y torcedura, por supuesto, para empezar", apuntó la tortuga burlona "y después las diferentes ramas de la aritmética – ambición, distracción, deformación e irrisión". [1] Alicia en el País de las Maravillas de Lewis Carroll | Acaso, ¿esto es una irrisión [2] |
El presente artículo de corte divulgativo tiene como finalidad mostrar las bondades y el poder del Programa de Cálculo Técnico Científico MATLAB [5], en el análisis de ciertos tópicos del álgebra lineal. Puesto que, MATLAB –MATrix LABoratory- es un programa para realizar cálculos numéricos con vectores y matrices [3]. Abordemos en primer lugar cómo introducir estos elementos.
Para introducir vectores y matrices en MATLAB, se sigue una sintaxis sencilla. Por ejemplo, dado el vector x = <-1, 3, 4>; se teclean los números separados por blancos o comas, obteniéndose un vector fila. Para obtener un vector columna se separan con intros o puntos y coma.
>> x = [-1 3 4] x = -1 3 4 | >> x = [-1;3;4] x = -1 3 4 |
Para introducir una matriz, se define por filas separándolas por intro o punto y coma. Por ejemplo, el comando siguiente define la matriz A de dimensión 2X3
>> A = [3 4 1; 5 -3 0]
A =
3 4 1
5 -3 0
Las operaciones de adición, diferencia y producto por escalares, se realizan mediante una sintaxis simple.
Ejemplo 1.1
Consideremos los vectores x = < -1,3 -2>, y = <0, -2, -1> y el escalar 2.
>> x = [-1 3 -2] x = -1 3 -2 | >> y = [0 -2 -1] y = 0 -2 -1 |
>> z = x + y z = -1 1 -3 | >> w = x – y w = -1 5 -1 |
>> u = 2*x u = -2 6 -4 |
Geométricamente, MATLAB ilustra mediante la ley del paralelogramo la suma de vectores. Para ello, se utiliza un programa escrito por T. A. Bryan [4], asequible en la página . Aquí, simplemente, se utilizará el lenguaje de gráficas para puntualizar la operación.
Ejemplo 1.2
Sean los vectores x = <1, 2, 0>, y = <0, 3, 2> y x + y = <1, 5, 2>
>> 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.2361
Para 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))^2 area = 3.5970 |
Ejercicio propuesto 1.1
- Obtener un vector unitario en la dirección del vector x.
- Hallar la proyección del vector x sobre el vector y.
2. Sistemas de ecuaciones lineales
Para resolver un sistema de ecuaciones lineales AX = B de n ecuaciones con m (n puede ser igual a m) incógnitas, se introduce la matriz A del sistema y el vector columna B de los términos independientes, no es preciso considerar el vector columna X de las incógnitas (x1, x2, x3).
Ejemplo 2.1
Consideremos el siguiente sistema:
ó |
>> A = [0 3 -4; 6 -3 -4; 6 -9 4; 1 1 1] A = 0 3 -4 6 -3 -4 6 -9 4 1 1 1 | >> B = [0; 0; 0; 1] B = 0 0 0 1 |
>> X = AB X = 0.3636 0.3636 0.2727 |
Observación. El operador matricial de MATLAB "" división izquierda equivale a la solución de sistemas lineales mediante X = inv(A)*B. este operador es más poderoso de lo que parece, puesto que, suministra la solución aunque la matriz A no tenga inversa.
MATLAB, proporciona la solución gráfica de un sistema de ecuaciones lineales, mediante los comandos siguientes:
>> [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 línea 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 línea recta Figura 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.2
Consideremos, ahora un sistema lineal incompatible.
x + z = 1
x – y + 3z = -3
x + y – z = 1
>> A = [1 0 1; 1 -1 3; 1 1 -1] A = 1 0 1 1 -1 3 1 1 -1 | >> B = [1; -3; 1] B = 1 -3 1 |
>> X = AB Warning: Matrix is singular to working precision. X = Inf Inf Inf |
Ejemplo 2.3
Consideremos, ahora un sistema lineal compatible indeterminado
x1 – x2 = 4
x1 – 3×2 – 2×3 = -6
x1 + 2×2 – 3×3 = 1
>> A = [1 -1 0; 1 3 -2; 4 2 -3] A = 1 -1 0 1 3 -2 4 2 -3 | >> B = [4; -6; 1] B = 4 -6 1 |
>> X = AB Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.251859e-018. X = 3.5000 -0.5000 4.0000 |
El paquete de software MATLAB permite la solución de estos sistemas utilizando el Método de Gauss-Jordan. Veamos la solución del ejemplo 2.3.
>> A = [1 -1 0 4; 1 3 -2 -6; 4 2 -3 1] % A es la matriz ampliada A = 1 -1 0 4 1 3 -2 -6 4 2 -3 1 | >> A(2,:) = A(2,:)-A(1,:) A = 1 -1 0 4 0 4 -2 -10 4 2 -3 1 |
>> A(3,:) = A(3,:) – 4*A(1,:) A = 1 -1 0 4 0 4 -2 -10 0 6 -3 -15 | >> A(2,:) = A(2,:)/-2 A = 1 -1 0 4 0 -2 1 5 0 6 -3 -15 |
>> A(3,:) = A(3,:) + 3*A(2,:) A = 1 -1 0 4 0 -2 1 5 0 0 0 0 | Luego x1 = 4 + x2 y x3 = 5 + 2×2 ¡Infinitas soluciones! Por ejemplo, para x2 = – 0,5 x1 = 3,5 y x3 = 4 |
Nota. El carácter % indica comienzo de un comentario, es ignorado por MATLAB.
Ejercicio propuesto 2.1
Resolver los sistemas de ecuaciones dados. Ver ejemplo 2.1.
a) b)
Para multiplicar una matriz por un vector y para el producto de matrices, se procede de la forma siguiente:
Ejemplo 3.1
Sean
A = y x =
Se introducen la matriz y el vector como se indicó.
Luego el comando
>> B = A*x
B =
13
1
3
-2
Ejemplo 3.2
Consideremos las matrices
A = [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*B C = -10 -3 24 28 35 -11 2 -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.3
Para 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.3333 0.1667 -0.1429 0 | Inversa >> inv(A) ans = 0.4181 0.4878 3.3449 -0.2509 -0.2927 0.9930 4.2439 -2.0488 -8.0488 | Determinante >> det(A) ans = 0.1139 | |
Rango >> rank(A) ans = 3 | Traza >> trace(A) ans = -1.5000 | Valores singulares >> svd(A) ans = 2.0795 0.5367 0.1020 | |
A3 >> A^3 ans = 0.2651 -1.1341 -0.0460 0.8310 -7.4944 -0.6200 -0.0945 1.4008 0.1353 | log(A) >> logm(A) ans = -0.8432 + 0.3607i 0.3205 + 0.2443i 0.5082 – 0.9163i -0.2189 – 0.2087i 0.7465 + 3.1599i 0.2834 – 0.0688i 0.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.0822i 0.0490 – 0.1420i -0.0043 + 1.4284i 0.0161 + 0.0841i 0.2701 – 0.0979i -0.0237 – 0.1954i 0.0890 + 0.2721i |
Para determinar eA., se utilizan las variantes mediante autovalores, aproximantes de Padé, desarrollos de Taylor y condición de la matriz A [6].
>> expm(A) ans = 1.6408 -0.1807 0.2310 0.1400 0.1146 -0.0467 0.2862 0.1195 1.0092 | >> expm1(A) ans = 1.6408 -0.1807 0.2310 0.1400 0.1146 -0.0467 0.2862 0.1195 1.0092 |
>> expm2(A) ans = 1.6408 -0.1807 0.2310 0.1400 0.1146 -0.0467 0.2862 0.1195 1.0092 | >> expm3(A) ans = 1.6408 -0.1807 0.2310 0.1400 0.1146 -0.0467 0.2862 0.1195 1.0092 |
Como es posible observar, la matriz exponencial coincide en todos los métodos empleados.
Diagonalizar la matriz A calculando la matriz de paso V.
>> [V,J] = jordan(A) |
V = 0.8852 -0.0169 + 0.0000i 0.1317 + 0.0000i 0.0664 + 0.0000i -0.1131 – 0.0000i 0.0467 – 0.0000i 0.3662 0.0212 + 0.0000i -0.3874 – 0.0000i |
J = 0.5439 – 0.0000i 0 0 0 -1.9358 0 0 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. Además, 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 mágica 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.2600 0.0002 -0.0000 0.0518 0.0011 0.0001 -0.0518 0.0017 1.0000 0.0000 0.0026 1.0000 0.0000 + 0.0000i 0.0028 1.0199 0.0000 – 0.0000i 0.0042 1.0200 -0.0000 + 0.0000i 0.0043 1.0200 -0.0000 – 0.0000i |
(c) Determinar la matriz y el determinante jacobianos de la transformación:
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 e independencia lineal, base y dimensión
Para determinar si una familia o 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.1
Dados los espacios vectoriales IR3, IR4 y IR5, determinar si los siguientes conjuntos de 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 -1 1 0 0 0 1 2 >> det(A) ans = -5 Puesto 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 -7 3 2 1 -1 >> det(B) ans = 0 Puesto 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 3 1 -1 4 -2 0 1 1 -1 3 12 0 4 3 1 -1 >> rank(C) ans = 4 Puesto 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.2
Dada la familia de 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 dimensión de la variedad lineal engendrada por ella y una base.
La dimensión 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 dimensión 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.3
Dada 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 =
5
Constituyen 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.2000
0.6000
-1.8000
Ejemplo 4.4
Consideremos las bases del espacio vectorial IR3
A = {(1,0,0), (0,1,0), (0,0,1)} y B = {(2,1,0), (1,0,-1), (-1,1,1)}
Hallar la matriz del cambio de base de A a B. Además, 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] |
Ejemplo 5.1
Consideremos la transformación 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 núcleo. Además, determinar la imagen del vector (1,2,3,4) por intermedio de la transformación 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.6448 0.4690 -0.5276 0.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.2
Sea la transformación lineal f entre los espacios vectoriales V y W, tal que
f(e1) = u1 – u2, f(e2) = u2 – u3 y f(e3) = u3 – u4
donde
A = {e1, e2, e3} es una base de V
B = {u1, u2, u3} es una base de W
Determinar la matriz asociada a la transformación lineal f. Además, hallar la imagen en W del vector (1,2,3) de V a través de la transformación.
>> M = [1 0 0;-1 1 0;0 -1 1;0 0 1] M = 1 0 0 -1 1 0 0 -1 1 0 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.3
Sea la transformación lineal f entre los espacios vectoriales V y W, donde
f(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] Nótese, que para hallar la matriz de f, es necesario considerar los vectores transformados por f de la base canónica de IR3. También, es posible hallarla con este comando >>[maple(‘T(1,0,0),maple(‘T(0,1,0)’),maple(‘T(0,0,1)’)] A = 1 1 0 0 1 1 1 0 1 |
>> A^3 % la matriz asociada a f3 es A3. ans = 2 3 3 3 2 3 3 3 2 |
>> expm(A) % la matriz asociada a ef es eA ans = 3.1751 2.8321 1.3819 1.3819 3.1751 2.8321 2.8321 1.3819 3.1751 |
La técnica básica utilizada en MATLAB para determinar la descomposición QR se sustenta en transformaciones de Householder. La sintaxis es sumamente simple [4].
Ejemplo 6.1
Consideremos la matriz con los vectores como columnas.
Luego la matriz viene dada por
>> A = [1 2 0; 0 -1 0; -1 0 -2; 0 1 1] A = 1 2 0 0 -1 0 -1 0 -2 0 1 1 >> [Q R] = qr(A,0) | |
Q = -0.7071 0.5000 -0.4523 0 -0.5000 -0.1508 0.7071 0.5000 -0.4523 0 0.5000 0.7538 | R = -1.4142 -1.4142 -1.4142 0 2.0000 -0.5000 0 0 1.6583 |
7. Diagonalización
Ejemplo 7.1
Diagonalizar la matriz A
>> A = [-1 2 -1;3 0 1;-3 -2 -3] A = -1 2 -1 3 0 1 -3 -2 -3 | Se determina los eigenvalores de A >> eig(A) ans = -4 2 -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.5774 0.5774 -0.5774 -0.5774 | >> inv(S)*A*S ans = -4.0000 0 -0.0000 -0.0000 2.0000 -0.0000 -0.0000 0.0000 -2.0000 A es diagonizable, puesto que existe una matriz S, tal que = |
[1] Carroll, L. (1999). Alicia en el país de las maravillas. Madrid: Edimart Libros.
[2] Fleming, W. y Varberg, D. (1999). Algebra and trigonometry with analytic geometry. New York: Prentice Hall Inc.
[3] García, J., Rodriguez, J. y Brazales, A. (2002). Aprenda Matlab 6.1 como si estuviera en primero. Madrid: Escuela Técnica Superior de Ingenieros Industriales, Universidad Politécnica de Madrid.
[4] Golubitsky, M. y Dellnitz, M. (1999). Linear algebra and differential equations using MATLAB. New York: Brooks Cole Publishing Company.
[5] MATLAB (2001). The language of technical computing. Version 6.1.0.450 Release 12.1. New York: The MathWohk, Inc.
[6] Pérez, C. (1999). Análisis matemático y álgebra lineal con MATLAB. Madrid: ra-ma.
Acerca del autor:
Carlos Núñez Rincón
El autor del artículo es Licenciado en Educación Mención Matemática Universidad de los Andes – ULA-Venezuela, Magíster en Educación Universidad Pedagógica Experimental Libertador –UPEL– Pedagógico de Barquisimeto-Venezuela, Doctor en Ciencias de la Educación Universidad Santa María, Caracas-Venezuela. Actualmente es Profesor Asociado adscrito al Departamento de Matemática y Física de la Universidad Nacional Experimental del Táchira-UNET, Táchira-República Bolivariana de Venezuela. Asimismo, Director de la Revista Aleph Sub-Cero, Serie de Divulgación Matemática, publicación del Departamento de Matemática y Física de la UNET.
E-mail: