Существует ли какой-либо бесплатный ИТЕРАТИВ линейный системный решатель в C ++, который позволяет мне вводить произвольные начальные догадки? - PullRequest
3 голосов
/ 06 января 2012

Я ищу итерационный линейный системный решатель для вычисления постоянно меняющегося поля. Чтобы симуляция работала правильно, мне нужно пересчитать поле (возможно, несколько раз) для каждого временного шага. К счастью, у меня есть хорошее начальное предположение для каждого временного шага, поэтому лучше я могу передать его в итерационный решатель. И матрица коэффициентов очень плотная.

Проблема в том, что я проверил несколько итерационных решателей онлайн, таких как Gmm ++, IML ++, ITL, DUNE / ISTL и так далее. Они либо для разреженных систем, либо не предоставляют интерфейсы для ввода начальных догадок (я могу ошибаться, поскольку у меня не было времени просмотреть все документы).

Итак, у меня два вопроса: 1 Есть ли такой решатель с ++, доступный онлайн? 2 Поскольку матрица коэффициентов может достигать тысяч * тысяч, может ли прямой решатель быть быстрее, чем итерационный решатель с действительно хорошим начальным предположением?

Большое спасибо!

Он

1 Ответ

2 голосов
/ 06 января 2012

Если вы проверите заголовок для Conjugate Gradient в IML ++ (http://math.nist.gov/iml++/cg.h.txt),, вы увидите, что вы можете очень легко предоставить начальное предположение для решения в той самой переменной, в которой вы ожидаете получить решение.

...