Матрицы жесткости ХОТЯТ быть разреженными. Отчаянно так. Дело в том, что в этих матрицах с большой жесткостью будет огромное количество нулевых элементов. Таким образом, вы должны построить матрицу с учетом этого. Приятно то, что разреженные матрицы очень хорошо поддерживаются в Matlab. Но вам нужно правильно с ними работать.
Идея состоит в том, чтобы построить вашу матрицу в виде списка индексов строк и столбцов плюс значение, которое будет вставлено в матрицу. Составьте этот список заранее. Только в самом конце вы вызываете sparse для фактического построения самой матрицы. Разреженный будет автоматически суммировать элементы, где есть перекрытие.
Как только эта разреженная матрица построена, все операции, такие как умножение матрицы и обратная косая черта, полностью поддерживаются и могут быть очень быстрыми по сравнению с теми же операциями на полной матрице. Это особенно важно, когда ваша общая матрица жесткости может быть 1e5x1e5 или больше.
В некоторых случаях для больших матриц вам может понадобиться перейти к итерационному решателю, когда факторизации вашей матрицы станут невозможными.