Введение
Ввиду того, что при решении задач оптимизации, дифференциальных игр, и в 2D и 3D расчётах, а вернее при написании софта, который проводит вычисления для их решения одними из наиболее часто выполняемых операций являются векторно-матричные преобразования типа , где — скалярные значения, — вектора или матрицы размерности .
Собственно вот такие:
(источник).
Так, чтобы не углубляться в теорию оптимизации за примерами достаточно вспомнить формулу численного интегрирования Рунге-Кутты четвёртого порядка:
где — очередное значение интегрируемой функции — шаг метода, а , — значения интегрируемой функции в некоторых промежуточных точках — в общем случае векторах.
Как можно заметить основную массу математических операций как для векторов, так и для матриц составляют:
- сложение и вычитание — более быстрые;
- умножение и деление — более медленные.
О сложности вычислений хорошо написано в соответствующем курсе МФТИ.
Помимо этого, довольно существенные расходы при реализации векторных вычислений приходятся на операции управления памятью — создание и уничтожение массивов представляющих собой матрицы и вектора.
Соответственно есть смысл заняться снижением количества операций привносящих наибольшую сложность — умножения (математика) и операции управления памятью (алгоритмика).
Читать полностью »