C ++: математическая библиотека, которая решает систему уравнений, используя алгоритм обратной подстановки - PullRequest
4 голосов
/ 22 марта 2010

Если у меня есть это:

A * f = g;
A: upper triangular matrix (n x n)
f: (n x 1)
g: (n x 1)

Необходимо решить для f с использованием алгоритма обратной подстановки. Я бы сказал, что это не так уж сложно написать самому, ну да ладно, если есть библиотека, то почему бы и нет.

Ответы [ 4 ]

3 голосов
/ 22 марта 2010

Boost uBlas должно работать. По крайней мере, если я правильно понимаю ваш вопрос, вы, вероятно, хотите начать с просмотра lu_substitute() и inplace_solve().

3 голосов
/ 22 марта 2010

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

В частности, вы хотите, чтобы процедура была dtrtrs или strtrs, в зависимости от того, имеют ли ваши данные двойную или одинарную точность.

0 голосов
/ 22 марта 2010

Для простоты и отсутствия зависимостей я бы выбрал JAMA + TNT и использовал бы LU класс для факторизации и его метод solve().Похоже, не существует способа, которым вы можете инициализировать LU с помощью уже существующей верхней треугольной матрицы (конструктор LU не делает никаких предположений и просто начинает факторинг), но я думаю, что вы можете использовать его как есть и жить с потерей производительностиизбыточного факторинга, или просто возьмите метод решения и адаптируйте его к вашим потребностям.

0 голосов
/ 22 марта 2010

Это один из них? Я не слышал о решении систем линейных уравнений с «обратной подстановкой» раньше. Почему должна быть замена?

http://eigen.tuxfamily.org/dox/TutorialAdvancedLinearAlgebra.html

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