MatMul
Метод MatMul для выполнения произведения матриц и векторов имеет несколько перегрузок.
Умножение матрицы на матрицу: matrix[M][K] * matrix[K][N] = matrix[M][N]
matrix matrix::MatMul(
|
Умножение вектора на матрицу: horizontal vector[K] * matrix[K][N] = horizontal vector[N]
vector vector::MatMul(
|
Умножение матрицы на вектор: matrix[M][K] * vertical vector[K] = vertical vector[M]
vector matrix::MatMul(
|
Скалярное умножение векторов: horizontal vector * vertical vector = dot value
scalar vector::MatMul(
|
Параметры
b
[in] Матрица или вектор.
Возвращаемое значение
Матрица, вектор или скаляр в зависимости от используемого метода.
Примечание
Перемножаемые матрицы должны быть совместимы, количество столбцов первой матрицы должно быть равно количеству строк второй матрицы. Перемножение матриц некоммутативно, умножение первой матрицы на вторую в общем случае не равно умножению второй матрицы на первую.
Произведение матриц состоит из всех возможных комбинаций скалярных произведений вектор-строк первой матрицы и вектор-столбцов второй матрицы.
При скалярном умножении векторов их длины должны совпадать.
При умножении вектора и матрицы длина вектора должна точно соответствовать количеству столбцов матрицы.
Наивный алгоритм перемножения матриц на MQL5:
matrix MatrixProduct(const matrix& matrix_a, const matrix& matrix_b)
|
Пример умножения матриц
matrix a={{1, 0, 0},
|
Пример умножения горизонтального вектора на матрицу
//+------------------------------------------------------------------+
|
Пример умножения матрицы на вертикальный вектор
//+------------------------------------------------------------------+
|
Пример скалярного умножения векторов
void OnStart()
|
Смотри также