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