Álgebra Lineal en Julia Language

Introducción

En este anexo se da una introducción práctica al uso de Julia en el ámbito del Álgebra Lineal.

Recomendamos la lectura y revisión previa de los siguientes documentos:

Cargamos el Paquete:

In [ ]:
using LinearAlgebra

Vectores

Vectores Renglón.

En Julia 1.0.3 los vectores renglón los escribimos como: x=[1 2 3]

In [ ]:
x=[1 2 3]

Julia nos indica que el vector es de tipo 1×3 Array{Int64,2}, es decir un arreglo de enteros de tamaño 1×3, el 2 indica que es un arreglo de dos índices.

Vectores Columna.

Los vectores columna los definimos por medio de la función transposición, que en Julia se indica por medio del símbolo: '

In [ ]:
y=x'

y=x' Indica que y es el vector columna que resulta de transponer el vector renglón x.

Julia nos indica que el vector es de tipo 3×1 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}

In [ ]:
w=[1.2 .2 3.16]'

Operaciones entre vectores en Julia

Las operaciones básicas son la suma de dos vectores y la multiplicación de un vector por un escalar:

Suma.

Para sumar dos vectores usamos el operador suma: +

In [ ]:
y+w

Multiplicación por escalar.

Para multiplicar un vector por un escalar usamos el operador multiplicación: *

In [ ]:
2*[2 3 1 5]
In [ ]:
3*[3 9 1 0 -1]'

Podemos indicar diferentes operaciones simultáneas, por ejemplo para obtener el vector: $$\begin{pmatrix} 2\\ 4\\ 0\\ 1\end{pmatrix} -3\begin{pmatrix} 3\\ 8\\ 1\\ 2\end{pmatrix}+5\begin{pmatrix} \ \ \ 0\\ -2\\ \ \ \ 3\\ -5\end{pmatrix} $$ escribimos:

In [ ]:
[2 4 0 1]'-3*[3 8 1 2]'+5*[0 -2 3 -5]'

Ejercicio Dados los vectores $$x=\begin{pmatrix}\ \ \ 8.2 \\ - 4.7 \\ \ \ \ 5.6\\ - 1.2 \\ \ \ \ 7.5 \end{pmatrix}, y=\begin{pmatrix} - 6.7 \\ \ \ \ 2.3 \\ -2.6 \\ - 4.5 \\ \ \ \ 7.7 \end{pmatrix}, z=\begin{pmatrix}\ \ \ 8.3 \\\ \ \ 4.8 \\ \ \ \ 9.1 \\\ \ \ 5.5 \\ - 2.2 \end{pmatrix} $$ Determinar el vector $w$ dado por:

  1. $w=3x-y+4z$
  2. $w=x+2y-6z$
  3. $w=5x+2y+8z$
  4. $w=-4x-7y+4z$
  5. $w=-x+3y-2z$

Producto Punto

LinearAlgebra.dot — Function. En dot(x, y) o ⋅(x,y) Calcula el producto punto entre dos vectores.

Ejemplos:

In [ ]:
u=[1.0 2.3 7.4]';
v=[3.5 6.2 4.0]';
In [ ]:
dot(u,v)

El símbolo ; después de una instrucción suprime la visualización de salida de una línea de código.

In [ ]:
dot([1.0 2.0],[-2.0 1.0])
In [ ]:
a=[1 2 3]
In [ ]:
dot(a,a)

Norma de un vector

LinearAlgebra.norm — Function. En norm(A, p::Real=2) Para cualquier contenedor iterable A (incluidas las matrices de cualquier dimensión) de números (o cualquier tipo de elemento para el que se define la norma), norm calcula la norma p (por defecto p = 2) como si A fuera un vector.

Ejemplos:

In [ ]:
u=[0 0 0 1 0 0]
In [ ]:
norm(u)
In [ ]:
v=[1 1 1 1 0 0]
In [ ]:
norm(v)

Ejercicio dados $u,v\in \mathbb{R}^n$ encontrar $w\in \mathbb{R}^n$ tal que $w$ sea ortogonal a $v$.

Matrices

Matrices.

En Julia 1.0.3 las matrices las podemos escribimos como, arreglos de arreglos: A=[[1 2 3] ; [ 3 2 0]]

In [ ]:
A=[[1 2 3] ; [ 3 2 0]]

Existen diferentes sintaxis equivales

In [ ]:
A₂=[1 2 3 ;  3 2 0]

En Julia, puedes emplear caracteres unicode para notación matemática, además podemos usar subíndices y super índices para nombrar las variables.

Caracteres Unicode

\comando + TAB

Los comandos son como los de LaTeX. Por ejemplo:

  • \theta + TAB $\quad\longrightarrow\quad\theta$

Subíndices y super índices

Para el subíndice usamos

\_ + 2 + SHIFT

mientras que para el superíndice

\^ + 2 + SHIFT

Podemos definir una matriz de variables aleatorias:

In [ ]:
A = rand(1:10,3,3)

En el ejemplo anterior se llena una matriz de 3×3 con enteros del 1 al 10 elegidos de forma aleatoria con distribución normal.

Existen algunas funciones especiales como en otros lenguajes:

In [ ]:
x=ones(3,1)
In [ ]:
C=zeros(5,5)

Usa I para realizar operaciones con la matriz identidad correspondiente:

In [ ]:
C+I

La multiplicación se realiza con el operador: *

In [ ]:
b=A*x

La suma de matrices es como en otros lenguajes

In [ ]:
A₁=rand(1:10,4,3)
In [ ]:
A₂=rand(1:10,4,3)
In [ ]:
A₁+A₂

Traspuesta

Como en otros lenguajes, A' es la transpuesta conjugada.

In [ ]:
A=rand(1:10,3,3)+im*rand(1:10,3,3)
In [ ]:
A'
Números complejos y racionales

En Julia para expresar números complejos y los racionales se utiliza la siguiente sintaxis:

  • 5+3im representa el complejo 5+3i
  • 3//5 representa el racional $\frac{3}{5}$

Resolviendo sistemas lineales

El problema $Ax=b$ para $A$ cuadrada se resulve con la función \.

In [ ]:
A = rand(1:10,3,3)
In [ ]:
b=rand(1:10,3,1)
In [ ]:
x=A\b
In [ ]:
A*x