|Re: [eigen] Not able to solve the system of equation having vector as coefficient of the matrix|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Not able to solve the system of equation having vector as coefficient of the matrix
- From: Adrien Escande <adrien.escande@xxxxxxxxx>
- Date: Wed, 5 Jun 2019 09:25:30 +0900
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=dFloJ5dMZ4g14BdzvJmDuXvhGuGcolbWDzQMncemfAM=; b=WqGtnlgHthaqA9xe/Y7FEERBHhpnoHtkcJ/qG3JpprUFN+uTiIjlJuJUmsGRfRKnyK 2d1XI6zfPpQ6inHpAULQR+scuxiDUlCb3c5RW1yj89Oaob8uJXF6pNH8CmEBvOrI+zTc CjFXVRdJtTSvLn75/a2daYDj6NXtyMNDYBkl+QRoGchWdtNivZ3UmZkCNI+HHS9DCkJw zo8zuDXmXgujn1GctfsO6IrmbVPxhFECzGG0blyIlfJBMbdwCQqgofZkXsYBe946Dw6F LCSErJZeykeipvV2hI4spvUvVeUD2C1zdNnkxChEQF8Sku6Ri45GefivIdZVqk1LBSaK 7/bQ==
is there any particular reasons that you explicitely want the elements in your matrices to be 2d vectors? From a mathematical point of view, your problem seems ill-formed: 2d-vectors are not invertible.
If you just need to form matrices from 2d-vector, replace every
Eigen::Matrix<Eigen::RowVector2d, 2, 2> with
Eigen::Matrix<double, 4, 2> in your code, and you're set.
Note that A being 4-by-2, your system is under-determined, and your solution will be a 2-by-2 matrix. Is it really what you are looking for, or do you want to solve two separate systems, one with the first elements of all your vectors, and the other with the second elements?
We are trying to use eigen solver api to solve the problem in which we have a matrix containing vector as the coefficient of it.
Able to create a matrix for A(2,2) having a vector like
But when I am trying to pass the value to the solver, it is giving fatal error (Eigen/src/SVD/JacobiSVD.h:714:15: error: no matching function for call to ‘abs(const Scalar&)’ if(abs(m_workMatrix.coeff(p,q))>threshold || abs(m_workMatrix.coeff(q,p)) > threshold).
Please look into it and suggest what I m missing.
using namespace std;
using namespace Eigen;
Eigen::Matrix< Eigen::RowVector2d, 2, 2> A;
Eigen::Matrix< Eigen::RowVector2d, 2, 1> B;
rv1 << 1,2;
rv2 << 3,4;
rv3 << 5,6;
rv4 << 7,8;
cout << "Here is the matrix rv1:\n" << rv1 << endl;
cout << "Here is the matrix rv2:\n" << rv2 << endl;
cout << "Here is the matrix rv3:\n" << rv3 << endl;
cout << "Here is the matrix rv4:\n" << rv4 << endl;
A << rv1,rv2, rv3, rv4;
b1 << 1,2;
b2 << 2,1;
B << b1, b2;
cout << "Here is the matrix B(0,0):\n" << B(0,0) << endl;
cout << "Here is the matrix B(0,1):\n" << B(1,0) << endl;
JacobiSVD<Eigen::Matrix<Eigen::RowVector2d, 2, 2>> dec(A);