Ищем тестовые матрицы / системы для итерационного линейного решателя - PullRequest
8 голосов
/ 01 декабря 2010

В настоящее время я работаю над библиотекой на основе C ++ для больших, разреженных задач линейной алгебры (да, я знаю, что таких библиотек существует много, но я в основном работаю над своими, чтобы узнать об итерационных решателях, контейнерах разреженного хранения и т. Д..).

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

Рынок матриц UF Sparse Matrix Collection

Как говорится, я еще ненашел любые источники хороших тестовых матриц, которые включают в себя всю систему-матрицу системы и RHS.Это было бы здорово, чтобы проверить результаты.Любые советы о том, где я могу найти такие полные системы, или, в качестве альтернативы, что я мог бы сделать, чтобы создать «хорошую» RHS для системных матриц, которые я могу получить в сети?В настоящее время я просто заполняю матрицу случайными значениями или всеми, но подозреваю, что это не обязательно лучший способ.

Ответы [ 3 ]

1 голос
/ 19 августа 2011

Я бы предложил использовать вектор с правой стороны, полученный из предопределенного «целевого» решения x:

b = A*x

Тогда у вас есть целевое решение x и результирующее решение x изрешатель.Это означает, что вы можете сравнить ошибку (разность цели и полученного решения), а также остатки (A * x - b).

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

Онлайн-коллекции матриц в основном содержат левую матрицу, но некоторые содержат правые стороны, а некоторые также имеют векторы решений.*

http://www.cise.ufl.edu/research/sparse/matrices/rhs.txt

Кстати, для коллекции разреженных матриц УФ я бы предложил эту ссылку вместо этого:

http://www.cise.ufl.edu/research/sparse/matrices/

0 голосов
/ 30 июля 2011

было бы неплохо указать, какие проблемы вы решаете ... разные проблемы потребуют, чтобы разные RHS были полезны для проверки достоверности ..... что я предлагаю, это получить пример кода из некоторыхпроекты типа DUNE Numerics (я сейчас над этим работаю), FENICS , deal.ii , которые уже используют решатели для решения матриц ...как правило, они будут иметь некоторую функциональность для вывода вашей матрицы в каком-либо файле (DUNE Numerics имеет функциональность для вывода матриц и RHS в файлах, совместимых с matlab).

Это вы можете затем передать своим решателям ... и затем снова использовать их функциональность библиотек для создания выходных данных (например, DUNE Numerics использует формат VTK) ... То есть вы получите возможность анализировать данныеиспользуя мощные инструменты .....

вам, возможно, придется немного узнать о компиляции и использовании этих библиотек ... но это не так много ... и я верю, что функциональность, которую вы получите, будетстоит потраченного времени ......

Я думаю, что даже одна четко определенная и достаточно сложная проблема должна быть достаточно хороша для тестирования ваших библиотек ... ну, на самом деле, две - для проблем Ax = B идругой для Ax = cBx (проблемы с собственным значением) ....

0 голосов
/ 28 июля 2011

Я еще не использовал его, я собираюсь, но GiNAC кажется лучшим, что я нашел для C ++Это библиотека, используемая за Maple для CAS, я не знаю производительность, с которой он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...