La multiplicación de matrices es una de las operaciones básicas de diversos métodos numéricos. Por ejemplo, suele utilizarse al aplicar métodos de propagación hacia delante y hacia atrás en capas de redes neuronales.
También se pueden atribuir varios tipos de convoluciones a la categoría de productos matriciales. El grupo de tales funciones en MQL5 tiene este aspecto:
Para dar una idea general de cómo manejar estos métodos, daremos sus prototipos (en el siguiente orden: de matriz, pasando por matriz-vector mixto, a vector).
matrix<T> matrix<T>::MatMul(const matrix<T> &m)
matrix<T> matrix<T>::Power(const int power)
matrix<T> matrix<T>::Inner(const matrix<T> &m)
matrix<T> matrix<T>::Outer(const matrix<T> &m)
matrix<T> matrix<T>::Kron(const matrix<T> &m)
matrix<T> matrix<T>::Kron(const vector<T> &v)
matrix<T> matrix<T>::CorrCoef(const bool rows = true)
matrix<T> matrix<T>::Cov(const bool rows = true)
matrix<T> vector<T>::Cov(const vector<T> &v)
T vector<T>::CorrCoef(const vector<T> &v)
vector<T> vector<T>::Correlate(const vector<T> &v, ENUM_VECTOR_CONVOLVE mode)
vector<T> vector<T>::Convolve(const vector<T> &v, ENUM_VECTOR_CONVOLVE mode)
matrix<T> vector<T>::Outer(const vector<T> &v)
matrix<T> vector<T>::Kron(const matrix<T> &m)
matrix<T> vector<T>::Kron(const vector<T> &v)
T vector<T>::Dot(const vector<T> &v)
He aquí un ejemplo sencillo del producto matricial de dos matrices utilizando el método MatMul:
matrix a = {{1, 0, 0},
|
Las matrices de la forma A[M,N] * B[N,K] = C[M,K] pueden multiplicarse, es decir, el número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz. Si las dimensiones no son coherentes, el resultado es una matriz vacía.
Al multiplicar una matriz y un vector se permiten dos opciones:
Los vectores también pueden multiplicarse entre sí. En MatMul, esto equivale siempre al producto punto (el método Dot) de un vector fila por un vector columna, y la opción cuando se multiplica un vector columna por un vector fila y se obtiene una matriz se admite en otro método: Outer.
Vamos a demostrar el producto Outer del vector v5 por el vector v3, y en orden inverso. En ambos casos, un vector columna está implícito a la izquierda, y un vector fila está implícito a la derecha.
vector v3 = {1, 2, 3};
|