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