Вдохновленный Майком Бантегуем question по построению матрицы, определенной как рекуррентное отношение, интересно, есть ли общее руководство, которое можно было бы дать при настройке больших блочных матриц в наименьшее время вычисления. По моему опыту, создание блоков, а затем их объединение может быть весьма неэффективным (таким образом, мой ответ был фактически медленнее, чем исходный код Майка). Join
и, возможно, ArrayFlatten
, возможно, менее эффективны, чем могли бы быть.
Очевидно, что если матрица разрежена, можно использовать конструкторы SparseMatrix
, но будут случаи, когда матрица блоков, которую вы строите, не является разреженной.
Какова наилучшая практика для такого рода проблем? Я предполагаю, что элементы матрицы являются числовыми.