Решатель разреженных матричных линейных и нелинейных уравнений [замкнутый]


Я ищу библиотеку C для решения линейного и, по возможности, нелинейного матричного уравнения вида Ax = b. Мне важно, чтобы пакеты были не слишком большими и бесплатными. Скорость не так важна,как простота и разреженность матричного хранилища. Кроме того, он должен иметь возможность распараллеливать вычисления. Поскольку я довольно новичок в blas / lapack/... область численной линейной алгебры, было бы здорово, если бы она содержала хорошую документацию, возможно, с образцы. Есть ли какие-либо пакеты, которые вы можете порекомендовать? Я немного ошеломлен результатами google, а также не знаю названий процедур, которые мне придется искать.

Я только что нашелSuperLu , который, кажется, имеет очень хорошую документацию, даже с фрагментами кода. Она написана на языке Си и требует CBLAS.

4 6

4 ответа:

У вас есть много различных вариантов. Прежде чем начать, вы должны рассмотреть некоторые рекомендации по выбору разреженного линейного решателя. Я лично рекомендую PETSc, но смотрите этот кураторский список на scicomp для более полного списка вариантов.

Я бы рекомендовал посмотреть на CUDA, если у вас есть видеокарта NVIDIA. Он имеет хорошие библиотеки линейной алгебры, использующие C-подобный синтаксис для BLAS и разреженных матриц.

Вы можете попробовать PETSc. Есть небольшая кривая обучения, но это высокопрофессиональная, высокоэффективная библиотека. Посмотрите на раздел документации и особенно примеры (большая ссылка вверху каждой страницы doc).

Я нашел Эту маленькую программу, состоящую только из исходного файла и одного заголовка, которая может не только итеративно решать разреженные матричные линейные уравнения, но также поставляется с предобусловливателем, который делает все очень эффективным. Есть два примера, и разреженные структуры хорошо документированы. Он не зависит от внешней библиотеки и очень легко интегрируется в существующий код. Он не обрабатывает распределенную память, распараллеливание и так далее.