2013-05-12 102 views
2

我想在C++中编写一个算法,我使用了Eigen库。在C++/Eigen中求解线性方程

的问题是,我需要解决以下等式在C + +:

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

ψi:矩阵是已知的。

+1

你已经试过了什么? – 2013-05-12 17:57:59

+0

给出一个实际表达式的例子,你会找到系数并告诉我们你挂了什么。 – ChiefTwoPencils 2013-05-12 18:17:01

+1

我有一个方程:X = a.M1 + b.M2 + c.M3 与X,M1,M2,M3已知矩阵 我的问题是如何找到系数a,b和c。 – user2342513 2013-05-12 18:42:52

回答

2

使用您的评论的符号,形成未知数y:=[a,b,c]的载体,形成右手侧包含基质X作为向量的系数向量f,并且类似地形成矩阵A其中第j个列对应于矩阵Mj的条目。

在这一点上,你现在必须解决形式A*y = f的超定问题。假设您正在寻找最小二乘法解决方案,那么您可以阅读doc page以获取有关如何使用Eigen执行此任务的所有详细信息。

+0

谢谢你的解释,这非常有帮助,这正是我需要的。 – user2342513 2013-05-15 14:31:52

+0

不好意思,但是我怎样才能形成矩阵A?一列不能包含矩阵的所有条目..你能举个例子吗?谢谢 – user2342513 2013-05-15 15:41:22

+0

假设Mj是一个特征矩阵:'A.col(j)= VectorXd :: Map(Mj.data(),A.rows())'。我们有A.rows()== Mj.rows()* Mj.cols() – ggael 2013-05-15 21:38:59