Каков наиболее эффективный способ построения больших блочных матриц в Mathematica?

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

Очевидно, что если матрица разреженная, можно использовать конструкции SparseMatrix , но будут моменты, когда построенная вами блочная матрица не будет разреженной.

Что лучше всего подходит для такого рода проблем? Я предполагаю, что элементы матрицы являются числовыми.

11
задан Community 23 May 2017 в 10:27
поделиться