AX = 0 的非竞争解决方案,使用特征 c++
Non-trival solution for AX = 0 using eigen c++
如何使用特征线性代数库获得M*x=0
的非三价解。我试过这个,但解决方案都是零。
Matrix<float,2,3> m ;
Matrix<float,2,1> y ;
m << 2 , 3 ,5 , -4 , 2, 3;
y(0,0) = 0;
y(1,0) = 0;
cout << "Here is matrix m:" << endl << m << endl;
cout << "Here is matrix y:" << endl << y << endl;
cout<<"solution: n"<<m.fullPivLu().solve(y);
您正在尝试解决M * x = 0
,因此返回x=0
是有意义的。如果要避免这种微不足道的解决方案,则必须添加其他约束。例如,您可能会说您希望最小化受|x|=1
影响的|M * x|^2
在这种情况下,您最终会遇到特征值问题(通过拉格朗日乘数)。您的解决方案是对应于最小特征值的特征向量。使用特征:
Matrix3f A = m.adjoint() * m;
Vector3f x = SelfAdjointEigenSolver<Matrix3f>(A).eigenvectors().col(0);
在这里我得到:
x = 0.032739 0.851202 -0.523816
m * x
按1e-16
顺序排列.
你想在矩阵的内核中找到一个非零元素(内核是 x 的集合,使得 Mx = 0),在 Eigen 中查找提供 kernel() 方法的分解,例如 fullPivLu 执行以下操作:
http://eigen.tuxfamily.org/dox/classEigen_1_1FullPivLU.html#a6e8f1d2fcbd86d3dc5a8a013b6e7200a
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 特征命名访问向量段
- 将特征矩阵的向量设置为0
- 特征:模板函数中矩阵的平面图
- basic_string的前导/尾部不区分空格的特征
- 特征 3 类的模板专用化
- 特征 c++:复矩阵的面积双曲正切(atanh)
- C++ 中的特征向量计算
- 根据C++标准的定义实现"is_similar"类型特征
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 有没有办法找到特征矩阵系数的中值?
- 如何将高维数据映射到特征类型?
- 将平面阵列重塑为复杂的特征类型
- 特征 LLT 模块给出不正确的结果?
- 特征模板化函数和维度
- 特征稀疏向量:求最大系数
- 特征 3.3.x:如何在所有行中操作 lamba?
- 如何将向量断言到特征矩阵