Решение линейного уравнения в C++/Eigen

Пытаюсь запрограммировать алгоритм на C++, использую библиотеку Eigen.

Проблема в том, что мне нужно решить следующее уравнение на C++:

Find the coefficients: s1,..., sn ∈ R such that a(-1)ψi = s1ψ1 +...+snψn

ψi: матрицы известны.


person user2342513    schedule 12.05.2013    source источник
comment
Что вы уже пробовали?   -  person Danil Asotsky    schedule 12.05.2013
comment
Приведите пример фактического выражения, для которого вы будете находить коэффициенты, и расскажите нам, на чем вы зациклились.   -  person ChiefTwoPencils    schedule 12.05.2013
comment
У меня есть уравнение: X = a.M1 + b.M2 + c.M3 с известными матрицами X, M1, M2, M3. Моя проблема заключается в том, как найти коэффициенты a, b и c.   -  person user2342513    schedule 12.05.2013
comment
Я не знаю, как решить такое уравнение.   -  person user2342513    schedule 12.05.2013


Ответы (1)


Используя обозначения вашего комментария, сформируйте вектор неизвестных y:=[a,b,c], сформируйте правосторонний вектор f, содержащий коэффициенты матрицы X, как вектор, и аналогично сформируйте матрицу A, в которой j-й столбец соответствует элементов матрицы Mj.

Теперь вам нужно решить переопределенную задачу вида A*y = f. Предполагая, что вы ищете решение методом наименьших квадратов, вы можете прочитать эту страницу документа. для получения подробной информации о том, как использовать Eigen для этой задачи.

person ggael    schedule 12.05.2013
comment
Спасибо за ваше объяснение, которое было очень полезным, это именно то, что мне нужно. - person user2342513; 15.05.2013
comment
Извините, а как мне составить матрицу А? Один столбец не может содержать все элементы матрицы. Не могли бы вы привести пример? Спасибо - person user2342513; 15.05.2013
comment
предполагая, что Mj является собственной матрицей: A.col(j) = VectorXd::Map(Mj.data(), A.rows()). И у нас есть A.rows() == Mj.rows()*Mj.cols() - person ggael; 16.05.2013
comment
это работает отлично, большое спасибо сейчас, когда я пытаюсь решить это уравнение: Матрица1 = коэффициент * Матрица2, с неизвестным коэффициентом, он дает мне как матрицу коэффициентов, а коэффициент должен быть числом .., мне нужна ваша помощь пожалуйста .. - person user2342513; 26.05.2013
comment
Ваша проблема не ясна, но если у вас есть одно неизвестное, то нет необходимости в решателе линейной алгебры, решение методом наименьших квадратов - это просто среднее значение решения каждого уравнения. - person ggael; 26.05.2013
comment
это просто для упрощения моей проблемы, на самом деле у меня есть несколько неизвестных: Матрица = коэффициент1 * Матрица1 + коэффициент2 * Матрица2 + .. - person user2342513; 26.05.2013