Más Álgebra lineal con Python
Esta notebook fue creada originalmente como un blog post por Raúl E. López Briega en Matemáticas, análisis de datos y python. El contenido esta bajo la licencia BSD.

Introducción
El Álgebra lineal constituye la base de gran parte de las matemáticas modernas, ya sea en su fase teórica, aplicada, o computacional. Es un área activa que tiene conexiones con muchas áreas dentro y fuera de las matemáticas, como ser: el análisis funcional, las ecuaciones diferenciales, la investigación operativa, la econometría y la ingeniería. Es por esto, que se vuelve sumamente importante conocer sus métodos en profundidad.
La idea de este artículo, es profundizar alguno de los temas que ya vimos en mi artículo anterior (Álgebra lineal con Python), presentar algunos nuevos, e ilustrar la utilidad de esta rama de la matemáticas con alguna de sus aplicaciones.
Campos
Un Campo,
-
La propiedad conmutativa tanto para la adición como para la multiplicación; es decir:
; y ; para todo -
La propiedad asociativa, tanto para la adición como para la multiplicación; es decir:
; y ; para todo -
La propiedad distributiva de la multiplicación sobre la adición; es decir:
; para todo -
La existencia de un elemento neutro tanto para la adición como para la multiplicación; es decir:
; y ; para todo . -
La existencia de un elemento inverso tanto para la adición como para la multiplicación; es decir:
; y ; para todo y .
Dos de los Campos más comunes con los que nos vamos a encontrar al trabajar en problemas de Álgebra lineal, van a ser el conjunto de los números reales,
Vectores
Muchas nociones físicas, tales como las fuerzas, velocidades y aceleraciones, involucran una magnitud (el valor de la fuerza, velocidad o aceleración) y una dirección. Cualquier entidad que involucre magnitud y dirección se llama vector. Los vectores se representan por flechas en las que la longitud de ellas define la magnitud; y la dirección de la flecha representa la dirección del vector. Podemos pensar en los vectores como una serie de números. Éstos números tienen una orden preestablecido, y podemos identificar cada número individual por su índice en ese orden. Los vectores identifican puntos en el espacio, en donde cada elemento representa una coordenada del eje en el espacio. La típica forma de representarlos es la siguiente:
Geométricamente podemos representarlos del siguiente modo en el plano de 2 dimensiones:
Ver Código
Ver Código
Combinaciones lineales
Cuando trabajamos con vectores, nos vamos a encontrar con dos operaciones fundamentales, la suma o adición; y la multiplicación por escalares. Cuando sumamos dos vectores
Geométricamente lo podemos ver representado del siguiente modo:
Ver Código
Cuando multiplicamos vectores por escalares, lo que hacemos es tomar un número
Geométricamente podemos representar a esta operación en el plano de 2 dimensiones del siguiente modo:
Ver Código
Cuando combinamos estas dos operaciones, formamos lo que se conoce en Álgebra lineal como combinaciones lineales. Es decir que una combinación lineal va a ser una expresión matemática construida sobre un conjunto de vectores, en el que cada vector es multiplicado por un escalar y los resultados son luego sumados. Matemáticamente lo podemos expresar de la siguiente forma:
en donde,
Matrices, combinaciones lineales y Ax = b
Una matriz es un arreglo bidimensional de números ordenados en filas y columnas, donde una fila es cada una de las líneas horizontales de la matriz y una columna es cada una de las líneas verticales. En una matriz cada elemento puede ser identificado utilizando dos índices, uno para la fila y otro para la columna en que se encuentra. Las podemos representar de la siguiente manera:
Las matrices se utilizan para múltiples aplicaciones y sirven, en particular, para representar los coeficientes de los sistemas de ecuaciones lineales o para representar combinaciones lineales.
Supongamos que tenemos los siguientes 3 vectores:
su combinación lineal en el espacio de 3 dimensiones va a ser igual a
Ahora esta combinación lineal la podríamos reescribir en forma matricial. Los vectores
De esta forma la matriz
Esta ecuación no solo nos va a servir para expresar combinaciones lineales, sino que también se vuelve de suma importancia a la hora de resolver sistemas de ecuaciones lineales, en dónde
Podemos ayudarnos de SymPy para expresar a la matriz
La matriz identidad , la matriz transpuesta y la matriz invertible
Tres matrices de suma importancia en problemas de Álgebra lineal. Son la matriz identidad, la matriz transpuesta y la matriz invertible.
La matriz identidad es el elemento neutro en la multiplicación de matrices, es el equivalente al número 1. Cualquier matriz multiplicada por la matriz identidad nos da como resultado la misma matriz. La matriz identidad es una matriz cuadrada (tiene siempre el mismo número de filas que de columnas); y su diagonal principal se compone de todos elementos 1 y el resto de los elementos se completan con 0. Suele representase con la letra
Por ejemplo la matriz identidad de 3x3 sería la siguiente:
La matriz transpuesta de una matriz
Una matriz cuadrada va a ser simétrica si
Algunas de las propiedades de las matrices transpuestas son:
a.
b.
c.
d.
e.
f. Si
g. Para cualquier matriz
Veamos algunos ejemplos en Python
La matriz invertible es muy importante, ya que esta relacionada con la ecuación
En caso de que estas condiciones se cumplan, decimos que la matriz es invertible.
Que una matriz sea invertible tiene importantes implicaciones, como ser:
a. Si
b. Si
c. Una matriz va a ser invertible si y solo si su determinante es distinto de cero. En el caso de que el determinante sea cero se dice que la matriz es singular.
d. Si
e. Si
f. Si
g. Si
.
h. Si
.
i. Si
.
Con SymPy podemos trabajar con las matrices invertibles del siguiente modo:
Espacios vectoriales
Las Matemáticas derivan su poder en gran medida de su capacidad para encontrar las características comunes de los diversos problemas y estudiarlos de manera abstracta. Existen muchos problemas que implican los conceptos relacionados de adición, multiplicación por escalares, y la linealidad. Para estudiar estas propiedades de manera abstracta, debemos introducir la noción de espacio vectorial.
Para alcanzar la definición de un espacio vectorial, debemos combinar los conceptos que venimos viendo hasta ahora de Campo, vector y las operaciones de adición; y multiplicación por escalares. De esta forma un espacio vectorial,
-
Para todo
en , (conmutatividad de la adición). -
Para todo
en , . (asociatividad de la adición). -
Existe un elemento en
llamado tal que para todo en . -
Para cada elemento
en , existe un elemento en tal que . -
Para cada elemento
en , . -
Para cada par,
en y cada elemento en , . -
Para cada elemento
en y cada para de elementos en , . -
Para cada par de elementos
en y cada elemento en , .
Los espacios vectoriales más comunes son
y
Una de las grandes bellezas del Álgebra lineal es que podemos fácilmente pasar a trabajar sobre espacios de
Tampoco tenemos porque quedarnos con solo los números reales, ya que la definición que dimos de un espacio vectorial reside sobre un Campo; y los campos pueden estar representados por números complejos. Por tanto también podemos tener espacios vectoriales
Subespacios
Normalmente, en el estudio de cualquier estructura algebraica es interesante examinar subconjuntos que tengan la misma estructura que el conjunto que esta siendo considerado. Así, dentro de los espacios vectoriales, podemos tener subespacios vectoriales, los cuales son un subconjunto que cumplen con las mismas propiedades que el espacio vectorial que los contiene. De esta forma,
Independencia lineal
La independencia lineal es un concepto aparentemente simple con consecuencias que se extienden profundamente en muchos aspectos del análisis. Si deseamos entender cuando una matriz puede ser invertible, o cuando un sistema de ecuaciones lineales tiene una única solución, o cuando una estimación por mínimos cuadrados se define de forma única, la idea fundamental más importante es la de independencia lineal de vectores.
Dado un conjunto finito de vectores
son todos ceros,
En caso de que esto no se cumpla, es decir, que existe una solución a la ecuación de arriba en que no todos los escalares son ceros, a esta solución se la llama no trivial y se dice que los vectores son linealmente dependientes.
Para ilustrar la definición y que quede más clara, veamos algunos ejemplos. Supongamos que queremos determinar si los siguientes vectores son linealmente independientes:
Para lograr esto, deberíamos resolver el siguiente sistema de ecuaciones y verificar si la única solución es aquella en que los escalares sean ceros.
Para resolver este sistema de ecuaciones, podemos recurrir a la ayuda de Python.
array([0., 0.])
Ver Código
Como podemos ver, tanto por la solución numérica como por la solución gráfica, estos vectores son linealmente independientes, ya que la única solución a la ecuación
Determinemos ahora si por ejemplo, los siguientes vectores en
Para resolver este sistema de ecuaciones que no es cuadrado (tiene 4 ecuaciones y solo 3 incógnitas); podemos utilizar SymPy.
Como vemos, esta solución es no trivial, ya que por ejemplo existe la solución
Por último, podríamos considerar si los siguientes polinomios son linealmente independientes:
y esta ecuación es equivalente a la siguiente:
Por lo tanto, podemos armar el siguiente sistema de ecuaciones:
El cual podemos nuevamente resolver con la ayuda de SymPy.
Como vemos, todos los escalares son ceros, por lo tanto estos polinomios son linealmente independientes.
Espacio nulo, espacio columna y espacio fila
Un termino particularmente relacionado con la independencia lineal es el de espacio nulo o núcleo. El espacio nulo de una matriz
Para encontrar el espacio nulo también nos podemos ayudar de SymPy.
array([[0],
[0]])
Otro espacio de suma importancia es el espacio columna. El espacio columna,
Por último, el otro espacio que conforma los espacios fundamentales de una matriz, es el espacio fila, el cual esta constituido por las combinaciones lineales de las filas de una matriz.
Para obtener estos espacios, nuevamente podemos recurrir a SymPy. Para poder obtener estos espacios, primero vamos a tener que obtener la forma escalonada de la matriz, la cual es la forma a la que arribamos luego del proceso de eliminación.
Rango
Otro concepto que también esta ligado a la independencia lineal es el de rango. Los números de columnas
Podemos ver que la tercer columna
Obviamente, el rango también lo podemos calcular con la ayuda de Python.
2
Una útil aplicación de calcular el rango de una matriz es la de determinar el número de soluciones al sistema de ecuaciones lineales, de acuerdo al enunciado del Teorema de Rouché–Frobenius. El sistema tiene por lo menos una solución si el rango de la matriz de coeficientes equivale al rango de la matriz aumentada. En ese caso, ésta tiene exactamente una solución si el rango equivale al número de incógnitas.
La norma y la Ortogonalidad
Si quisiéramos saber cual es el largo del un vector, lo único que necesitamos es el famoso teorema de Pitágoras. En el plano
Ver Código
En esta definición podemos observar que
El largo o norma de un vector
Es decir que la norma de un vector va a ser igual a la raíz cuadrada de la suma de los cuadrados de sus componentes.
Ortogonalidad
El concepto de perpendicularidad es fundamental en geometría. Este concepto llevado a los vectores en
Dos vectores
Geométricamente lo podemos ver de la siguiente manera:
Ver Código
0
Un conjunto de vectores en
Por ejemplo, si tenemos el siguiente conjunto de vectores en
En este caso, deberíamos combrobar que:
(0, 0, 0)
Como vemos, este conjunto es ortogonal. Una de las principales ventajas de trabajar con conjuntos de vectores ortogonales es que los mismos son necesariamente linealmente independientes.
El concepto de ortogonalidad es uno de los más importantes y útiles en Álgebra lineal y surge en muchas situaciones prácticas, sobre todo cuando queremos calcular distancias.
Determinante
El determinante es un número especial que puede calcularse sobre las matrices cuadradas. Este número nos va a decir muchas cosas sobre la matriz. Por ejemplo, nos va decir si la matriz es invertible o no. Si el determinante es igual a cero, la matriz no es invertible. Cuando la matriz es invertible, el determinante de
Para obtener el determinante de una matriz debemos calcular la suma de los productos de las diagonales de la matriz en una dirección menos la suma de los productos de las diagonales en la otra dirección. Se represente con el símbolo
Algunas de sus propiedades que debemos tener en cuenta son:
a. El determinante de la matriz identidad es igual a 1.
b. Una matriz
c. El determinante cambia de signo cuando dos columnas(o filas) son intercambiadas.
d. Si dos filas de una matriz
e. Si alguna fila de la matriz
f. La matriz transpuesta
g. El determinante de
h. El determinante es una función lineal de cada una de las filas en forma separada. Si multiplicamos solo una fila por
Veamos como podemos obtener el determinante con la ayuda de Python
Eigenvalores y Eigenvectores
Cuando estamos resolviendo ecuaciones lineales del tipo
Supongamos que tenemos una matriz cuadrada
Cuando esta ecuación es válida y
Muchos problemas en ciencia derivan en problemas de Eigenvalores, en los cuales la principal pregunta es: ¿Cuáles son los Eigenvalores de una matriz dada, y cuáles son sus correspondientes Eigenvectores. Un área donde nos va a ser de mucha utilidad esta teoría, es en problemas con sistemas de ecuaciones diferenciales lineales.
Calculando Eigenvalores
Hasta aquí todo muy bien, pero dada una matriz cuadrada
Podemos comenzar por observar que la ecuación
Para que quede más claro, veamos un ejemplo de como podemos calcular los Eigenvalores. Supongamos que tenemos la siguiente matriz:
Su polinomio característico va a ser igual a:
Por lo tanto los Eigenvalores de
Obviamente, también los podemos obtener mucho más fácilmente con la ayuda de Python.
(array([ 5., -4.]), array([[ 0.70710678, -0.27472113],
[ 0.70710678, 0.96152395]]))
Con esto termino con este recorrido por los principales conceptos del Álgebra lineal, muchos de los cuales veremos en próximos artículos que tienen muchas aplicaciones interesantes. Espero que les sea de utilidad y les sirva de referencia.
Saludos!
Este post fue escrito utilizando Jupyter notebook. Pueden descargar este notebook o ver su version estática en nbviewer.