Решатель разреженных матричных линейных и нелинейных уравнений [замкнутый]
Я ищу библиотеку C
для решения линейного и, по возможности, нелинейного матричного уравнения вида Ax = b
. Мне важно, чтобы пакеты были не слишком большими и бесплатными. Скорость не так важна,как простота и разреженность матричного хранилища. Кроме того, он должен иметь возможность распараллеливать вычисления. Поскольку я довольно новичок в blas / lapack/... область численной линейной алгебры, было бы здорово, если бы она содержала хорошую документацию, возможно, с образцы. Есть ли какие-либо пакеты, которые вы можете порекомендовать? Я немного ошеломлен результатами google, а также не знаю названий процедур, которые мне придется искать.
Я только что нашелSuperLu , который, кажется, имеет очень хорошую документацию, даже с фрагментами кода. Она написана на языке Си и требует CBLAS.
4 ответа:
У вас есть много различных вариантов. Прежде чем начать, вы должны рассмотреть некоторые рекомендации по выбору разреженного линейного решателя. Я лично рекомендую PETSc, но смотрите этот кураторский список на scicomp для более полного списка вариантов.
Я бы рекомендовал посмотреть на CUDA, если у вас есть видеокарта NVIDIA. Он имеет хорошие библиотеки линейной алгебры, использующие C-подобный синтаксис для BLAS и разреженных матриц.
Вы можете попробовать PETSc. Есть небольшая кривая обучения, но это высокопрофессиональная, высокоэффективная библиотека. Посмотрите на раздел документации и особенно примеры (большая ссылка вверху каждой страницы doc).
Я нашел Эту маленькую программу, состоящую только из исходного файла и одного заголовка, которая может не только итеративно решать разреженные матричные линейные уравнения, но также поставляется с предобусловливателем, который делает все очень эффективным. Есть два примера, и разреженные структуры хорошо документированы. Он не зависит от внешней библиотеки и очень легко интегрируется в существующий код. Он не обрабатывает распределенную память, распараллеливание и так далее.