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:
using LinearAlgebra
Vectores Renglón.
En
Julia 1.0.3
los vectores renglón los escribimos como:x=[1 2 3]
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:'
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}}
w=[1.2 .2 3.16]'
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:
+
y+w
Multiplicación por escalar.
Para multiplicar un vector por un escalar usamos el operador multiplicación:
*
2*[2 3 1 5]
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:
[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:
- $w=3x-y+4z$
- $w=x+2y-6z$
- $w=5x+2y+8z$
- $w=-4x-7y+4z$
- $w=-x+3y-2z$
LinearAlgebra.dot — Function. En
dot(x, y)
o⋅(x,y)
Calcula el producto punto entre dos vectores.
Ejemplos:
u=[1.0 2.3 7.4]';
v=[3.5 6.2 4.0]';
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.
dot([1.0 2.0],[-2.0 1.0])
a=[1 2 3]
dot(a,a)
LinearAlgebra.norm — Function. En
norm(A, p::Real=2)
Para cualquier contenedor iterableA
(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 normap
(por defectop = 2
) como siA
fuera un vector.
Ejemplos:
u=[0 0 0 1 0 0]
norm(u)
v=[1 1 1 1 0 0]
norm(v)
Ejercicio dados $u,v\in \mathbb{R}^n$ encontrar $w\in \mathbb{R}^n$ tal que $w$ sea ortogonal a $v$.
Matrices.
En
Julia 1.0.3
las matrices las podemos escribimos como, arreglos de arreglos:A=[[1 2 3] ; [ 3 2 0]]
A=[[1 2 3] ; [ 3 2 0]]
Existen diferentes sintaxis equivales
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.
Podemos definir una matriz de variables aleatorias:
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:
x=ones(3,1)
C=zeros(5,5)
Usa I
para realizar operaciones con la matriz identidad correspondiente:
C+I
La multiplicación se realiza con el operador: *
b=A*x
La suma de matrices es como en otros lenguajes
A₁=rand(1:10,4,3)
A₂=rand(1:10,4,3)
A₁+A₂
Como en otros lenguajes, A'
es la transpuesta conjugada.
A=rand(1:10,3,3)+im*rand(1:10,3,3)
A'
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}$El problema $Ax=b$ para $A$ cuadrada se resulve con la función \
.
A = rand(1:10,3,3)
b=rand(1:10,3,1)
x=A\b
A*x