karakurt2 писал(а):
Есть три вопроса по-поводу разреженных матриц.
1) Не могли бы Вы дать ссылки или описать в общих чертах, что собой представляет John Appleyard Linear Solver (JALS).
2) Посоветуйте, какой метод реализовать для решения систем уравнений с блочно-трёхдиагональной (пятидиагональной) матрицей для ~10000 неизвестных.
3) Какое приемлемое время решения таких систем на современном персональном компьютере, к чему я должен стремиться. Методом исключения Гаусса решение получается за 22 минуты, что для меня не подходит. Я понимаю, что время зависит от железа, мне хотелось бы знать порядок величины.
По поводу 2 пункта: если система не имеет специфической структуры (например, построена на дереве и тогда решение получается мгновенно), то 10000 неизвестных для современного компа - это семечки и систему лучше решать, как плотную, используя при этом эффективные библиотеки. Дело в том, что при решении систем уравнений современными методами львиную долю забирает умножение матриц, а самому написать эффективную процедуру умножения матриц даже для очень продвинутого пользователя - это непосильная задача. Советую при этом использовать ось с x64, т.к. можно поставить больше оперативной памяти и, кроме того, профессиональные алгоритмы умножения матриц под x64 работают быстрей, чем на x86.
По поводу 3 пункта: на 4-ядерном проце 22 минуты можно сократить не менее, чем в 10 раз.
Но все эти замечания относятся к матрицам произвольной структуры. В вашем случае ленточной м-цы советую использовать библиотеку Intel MKL (под Linux бесплатна), в ней используются алгоритмы, восходящие еще ко временам Уилкинсона - ничего принципиально нового здесь с тех времен не придумано, за исключеннием некоторых мелких технических деталей. Исходные тексты можно взять из свободно распространяемого пакета Lapack, который обновлялся совсем недавно. Эти алгоритмы разработаны с участием довольно известных американских математиков. Но лучше использовать не исходные тексты, а библиотеку Intel MKL.