ALGEBRA LINEAL

El lenguaje Wolfram representa matrices y vectores mediante listas. Todo lo que no sea una lista, Wolfram Language lo considera un escalar.

Un vector en Wolfram Language consiste en una lista de escalares. Una matriz consiste en una lista de vectores que representan cada una de sus filas. Para ser una matriz válida, todas las filas deben tener la misma longitud, de modo que sus elementos formen un arreglo rectangular.

Funciones en la estructura de vectores y matrices

VectorQ [expr]
Da Verdadero si expr tiene la forma de un vector y Falso en caso contrario.

MatrixQ [expr]
Da Verdadero si expr tiene la forma de una matriz y Falso en caso contrario.

Dimensions [expr]
Da una lista de las dimensiones de un vector o matriz.

Ejemplos:

Clear["Global`*"]

La lista {a, b, c} tiene la forma de un vector:

VectorQ[{a,b,c}]

Todo lo que no sea manifiestamente una lista se trata como un escalar, por lo que aplicar VectorQ da como resultado Falso:

VectorQ[x+y]

Escribimos una matriz de 2 x 3:

Dimensions[{{a,b,c},{ap,bp,cp}}]

Para un vector, Dimensions proporciona una lista con un único elemento igual al resultado de su longitud:

Dimensions[{a,b,c}]

Este objeto no cuenta como una matriz porque sus filas tienen longitudes diferentes:

MatrixQ[{{a,b,c},{ap,bp}}]

Operaciones con escalares, vectores y matrices

La mayoría de las funciones matemáticas en Wolfram Language están configuradas para aplicarse por separado a cada elemento de una lista. Esto aplica especialmente a todas las funciones que tienen el atributo Listable.

Una consecuencia es que la mayoría de las funciones matemáticas se aplican elemento por elemento a matrices y vectores.

Ejemplos:

El registro se aplica por separado a cada elemento del vector:

Log[{a,b,c}]

Lo mismo ocurre con una matriz o, en realidad, con cualquier lista anidada:

Log[{{a,b},{c,d}}]

La función de diferenciación D también se aplica por separado a cada elemento de una lista:

D[{x,x^2,x^3},x]

La suma de dos vectores se realiza elemento por elemento:

{a,b}+{ap,bp}

Si intenta sumar dos vectores con diferentes longitudes, obtendrá un error:

{a,b,c}+{ap,bp}

El resultado de agregar el escalar 1 a un vector es que se suma el escalar a cada elemento del vector:

1+{a,b}

Cualquier objeto que no sea manifiestamente una lista se trata como un escalar. Aquí, c se trata como un escalar y se suma por separado a cada elemento del vector:

{a,b}+c

Es importante tener en cuenta que Wolfram Language trata un objeto como un vector en una operación específica solo si el objeto es explícitamente una lista al momento de realizar la operación. Si el objeto no es explícitamente una lista, Wolfram Language siempre lo trata como un escalar. Esto significa que se pueden obtener diferentes resultados según se asigne un objeto específico como lista antes o después de realizar una operación específica.

El objeto p se trata como un escalar y se agrega por separado a cada elemento del vector:

{a,b}+p

Esto es lo que sucede si ahora reemplaza p por la lista {c, d}. Ahora el tratamiento es vectorial:

%/.p->{c,d}

Habríamos obtenido un resultado diferente si hubieras reemplazado p por {c, d}. Ahora el tratamiento es escalar:

{a,b}+{c,d}

Multiplicando vectores y matrices

c  v, c  m, ...
Se multiplica cada elemento por un escalar.

u· v, v· m, m· v, m1· m2, ...
Multiplicación de vectores y matrices.

Cross [u, v]
Producto vectorial de dos vectores.

Outer [Times, t, u]
Otro producto.

KroneckerProduct [m1, m2, ...]
Producto Kronecker

Ejemplos:

Clear["Global`*"]

Esto multiplica cada elemento del vector por el escalar k:

k {a,b,c}

El operador “dot” da el producto escalar de dos vectores:

{a,b,c}.{ap,bp,cp}

Podemos usar dot para multiplicar una matriz por un vector:

{{a,b},{c,d}}.{x,y}

El punto también es la notación para la multiplicación de matrices en el lenguaje Wolfram:

{{a,b},{c,d}}.{{1,2},{3,4}}

El punto también es la notación para la multiplicación de matrices en el lenguaje Wolfram:

Es importante tener en cuenta que se puede usar “punto” para la multiplicación de vectores por matrices tanto por la izquierda como por la derecha. El lenguaje Wolfram no distingue entre vectores de “fila” y de “columna”. Punto realiza cualquier operación posible. (En términos formales, a.b contrae el último índice del tensor a con el primer índice de b).

Definimos una matriz m y un vector v:

m={{a,b},{c,d}};
v={x,y};

MatrixForm[m]

MatrixForm[v]

Si queremos multiplicar v por m por la izquierda. En este caso, el objeto v se considera un vector columna:

m.v

MatrixForm[m.v]

También puedes usar el punto para multiplicar v por m por la derecha. Ahora v se trata como un vector fila:

v.m

MatrixForm[v.m]

Puedes multiplicar m por v en ambos lados para obtener un escalar:

v.m.v

Para algunos propósitos, puede que necesite representar vectores y matrices simbólicamente sin especificar sus elementos. Puede usar Dot para representar la multiplicación de estos objetos simbólicos.

El punto actúa aquí efectivamente como una forma no conmutativa de multiplicación:

a.b.a

Es, sin embargo, asociativo:

(a.b).(a.b)

Los productos escalares de sumas no se expanden automáticamente:

(a+b).c.(d+e)

Puedes aplicar la ley distributiva en este caso usando la función Distribute, como se explica en “Operaciones Estructurales”:

Distribute[%]

El operador “punto” proporciona “productos internos” de vectores, matrices, etc. En cálculos más avanzados, también podría necesitar construir productos externos o de Kronecker de vectores y matrices. Puede usar la función general “Outer” o “KroneckerProduct” para ello.

El producto exterior de dos vectores es una matriz:

Outer[Times,{a,b},{c,d}]

El producto externo de una matriz y un vector es un tensor de rango tres:

Outer[Times,{{1,2},{3,4}},{x,y,z}]

El producto de Kronecker de una matriz y un vector es una matriz:

KroneckerProduct[{{1,2},{3,4}},{x,y,z}]

El producto de Kronecker de un par de matrices 2 por 2 es una matriz 4 por 4:

KroneckerProduct[{{1,2},{3,4}},{{a,b},{c,d}}]